Как обработать callback_query в телеграм боте

Использую библиотеку pyTelegramBotAPI. Написал бота, с inline кнопками, после нажатия на которые бот отвечает. Но на кнопках остаются часики, которые не дают нажать кнопку снова,а через 30 секунд у пользователя появляется ошибка 400#BOT_RESPONSE_TIMEOUT, хотя бот ответил. Говорят что нужно отправлять ответ на callback чтобы часики пропали, но как я не знаю


Ответы (1 шт):

Автор решения: MyZik

Для каждой инлайн-кнопки нужно писать обработчик, который реагирует на нажатие.

Пример из официального репозитория:

 def gen_markup():
    markup = InlineKeyboardMarkup()
    markup.row_width = 2
    markup.add(InlineKeyboardButton("Yes", callback_data="cb_yes"),
                               InlineKeyboardButton("No", callback_data="cb_no"))
    return markup

@bot.callback_query_handler(func=lambda call: True)
def callback_query(call):
    if call.data == "cb_yes":
        bot.answer_callback_query(call.id, "Answer is Yes")
    elif call.data == "cb_no":
        bot.answer_callback_query(call.id, "Answer is No")

Этот пример создаёт две кнопки Yes и No, и функция callback_query() будет запущена, когда одна из этих кнопок была нажата.

→ Ссылка