Срочно!!! Узнать почему в строке main() и updater = Updater(TOKEN, use_context = True) ошибка. Даю 100 балов
import logging
import random
import time
from telegram.ext import Updater, CommandHandler
TOKEN = 'Token' #Я знаю что тут нужен мой токен, но не поставил его сюда для конфиденциальности или как то так
# Настройка логирования
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
# Словарь для хранения состояния зверька "Саня"
sanya_state = {
'hunger': 0, # Уровень "Отчимы"
}
# Обработчик команды /start
def start(update, context):
update.message.reply_text("Привет! Я твой зверёк Саня. Корми меня каждые 3 часа командой /feed.")
# Обработчик команды /feed
def feed(update, context):
sanya_state['hunger'] += random.randint(5, 25)
update.message.reply_text("Ммм, спасибо за еду! Моя шкала \"Отчимы\" пополнилась.")
# Функция для проверки уровня "Отчимы" и напоминания о кормежке
def check_hunger():
while True:
time.sleep(10800) # 3 часа = 3 * 60 * 60 секунд
if sanya_state['hunger'] >= 100:
# Зверёк умирает от голода ;(
print("Зверёк Саня умер от голода ;(")
break
else:
# Напоминаем о кормежке
print("Пора покормить зверька Саню!")
# Главная функция
def main():
updater = Updater(TOKEN, use_context = True)
dp = updater.dispatcher
# Добавляем обработчики команд /start и /feed
dp.add_handler(CommandHandler("start", start))
dp.add_handler(CommandHandler("feed", feed))
# Запускаем бота
updater.start_polling()
# Запускаем планировщик для проверки уровня "Отчимы"
check_hunger()
# Бот работает до принудительной остановки
updater.idle()
if __name__ == '__main__':
main()
Answers & Comments
Объяснение:
Ошибка в строке main() и updater = Updater(TOKEN, use_context = True) вызвана тем, что аргумент use_context не поддерживается в версии python-telegram-bot 12.0.0 и старше. Чтобы исправить это, удалите аргумент use_context из строки updater = Updater(TOKEN, use_context = True).