@AlexSeley

Почему цикл while останавливается из-за bot.polling?

61f651ce498c5287405918.png
Почему цикл while останавливается из-за bot.polling ?
Я хочу, чтобы пользователю, у которого в базе данных MongoDB есть lifecoin_user, то каждую минуту ему давали 100 часть money стоимости lifecoin у всех пользователях, это lifecoin. Также каждую минуту даёт 100 часть money стоимость lifecoin, но ещё подсчитываем сколько lifecoin_user у пользователя. Чтобы не делать time.sleep я взял 2 переменные(за циклом и в цикле) если их разница будет 60 секунд или больше то даём пользователю money и переменную за циклом можно сказать онуляем.

Цикл while работает только 1 раз, как я понял из-за bot.polling .

item_details = collection.find()
for item in item_details:
    print(item)

lastUpdateTime = time.time()
while True:
    for coinses in collection.find({'_id': 'coinses'}):
        lifecoinmuchcost = (coinses['lifecoin'])

    for profile in collection.find():
        id_checking = profile['_id']
        if id_checking != 'coinses' and id_checking != "crypta":
            id_db = profile['_id']
            muchlifecoin_db = profile['lifecoin_user']
            money_db = profile['money']
            house_db = profile['house']
            health_db = profile['health']
        else:
            pass

    now = time.time()

    if muchlifecoin_db >= 1 and now - lastUpdateTime >= 60:
        lifecoinwithoutround = lifecoinmuchcost / 100
        lifecoinwithround = round(lifecoinwithoutround)
        scorelifecoin = muchlifecoin_db * lifecoinwithround
        profile_money_upgrade = {"$set": {'money': money_db + scorelifecoin}}
        collection.update_one(id_db, profile_money_upgrade)
        lastUpdateTime = now

    print("Проверка")

    bot.polling(none_stop = True)
  • Вопрос задан
  • 153 просмотра
Решения вопроса 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Потому что bot.polling() не возвращает управление вызывающей стороне. Есть другие способы выполнять периодические операции. Впрочем, в вашем случае они и не нужны.
Ответ написан
Комментировать
HemulGM
@HemulGM Куратор тега Python
Delphi Developer, сис. админ
Потому что внутри bot.polling() тоже цикл while, который запускается и работает до остановки бота
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы