@skyspirit

Как исправить ошибку в коде на python?

Пишу первый бот на TG

Ошибка при запуске
\Python\bot.py", line 64, in <module>
    main()
  File "c:\Users\bolshukhin_roman\Script\Python\bot.py", line 55, in main
    updater = Updater(TOKEN, use_context=True)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: Updater.__init__() got an unexpected keyword argument 'use_context'

Код
import telegram
from telegram.ext import Updater, CommandHandler, CallbackQueryHandler
from telegram import InlineKeyboardButton, InlineKeyboardMarkup

TOKEN = 'YOUR_TOKEN_HERE'
OWNER_ID = YOUR_OWNER_ID_HERE

def start(update, context):
    keyboard = [
        [
            InlineKeyboardButton("Кнопка 1", callback_data='1'),
            InlineKeyboardButton("Кнопка 2", callback_data='2'),
        ],
        [
            InlineKeyboardButton("Кнопка 3", callback_data='3'),
            InlineKeyboardButton("Кнопка 4", callback_data='4'),
        ],
    ]
    reply_markup = InlineKeyboardMarkup(keyboard)
    update.message.reply_text('Выберите кнопку:', reply_markup=reply_markup)

def button(update, context):
    query = update.callback_query
    if query.message.chat_id == OWNER_ID:
        if query.data == '1':
            keyboard = [
                [
                    InlineKeyboardButton("Подкнопка 1.1", callback_data='1.1'),
                    InlineKeyboardButton("Подкнопка 1.2", callback_data='1.2'),
                ]
            ]
            reply_markup = InlineKeyboardMarkup(keyboard)
            message = query.message.reply_text('Выберите подкнопку:', reply_markup=reply_markup)

        elif query.data == '1.1':
            message = query.message.reply_text('Команда 1.1 выполнена')

        elif query.data == '1.2':
            message = query.message.reply_text('Команда 1.2 выполнена')

        elif query.data == '2':
            message = query.message.reply_text('Команда 2 выполнена')

        elif query.data == '3':
            message = query.message.reply_text('Команда 3 выполнена')

        elif query.data == '4':
            message = query.message.reply_text('Команда 4 выполнена')

        query.message.edit_reply_markup(reply_markup=None)
    else:
        message = query.message.reply_text('Вы не являетесь владельцем бота!')

def main():
    updater = Updater(TOKEN, use_context=True)
    dp = updater.dispatcher
    dp.add_handler(CommandHandler("start", start))
    dp.add_handler(CallbackQueryHandler(button))

    updater.start_polling()
    updater.idle()

if __name__ == '__main__':
    main()
  • Вопрос задан
  • 5208 просмотров
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
Такие вопросы здесь уже были.
Ты пишешь код согласно устаревшему гайду - python-telegram-bot сильно изменил API начиная с версии 20.
Открывай документацию на python-telegram-bot, в частности, секцию примеров, и учись по ней.
Ответ написан
Комментировать
RimMirK
@RimMirK
Вроде человек. Вроде учусь. Вроде пайтону
на ютуб-гайдах десяти летней давности далеко не уедешь. python-telegram-bot уже даавно не актуальна. Используй pyTelegramBotAPI
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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