Не работают inline кнопки с callback'ом

Рейтинг: 0Ответов: 1Опубликовано: 24.08.2023

Решил просто посмотреть, как работают callback кнопки, но у меня почему программа даже не заходит в функцию handle. В чем может быть ошибка?

@bot.message_handler(commands=['start'])
def start(message):
  markup = types.InlineKeyboardMarkup()
  buttonA = types.InlineKeyboardButton('A', callback_data='a')
  buttonB = types.InlineKeyboardButton('B', callback_data='b')
  buttonC = types.InlineKeyboardButton('C', callback_data='c')

  markup.row(buttonA, buttonB)
  markup.row(buttonC)

  bot.send_message(message.chat.id, 'заработай пж🙏', reply_markup=markup)

@bot.callback_query_handler(func=lambda call: True)
def handle(call):
    print('qq')
    bot.send_message(call.message.chat.id, f'Data: {call.data}')
    bot.answer_callback_query(call.id)

print("Starting...")
bot.polling(none_stop=True)

Ответы

▲ 0

Это может быть из-за того, что в коде есть 2 одинаковых декоратора @bot.callback_query_handler(func=lambda call: True). Проблема должна решиться, если соединить функции start и handler подобным образом:

@bot.message_handler(commands=['start'])
def start(message):
  markup = types.InlineKeyboardMarkup()
  buttonA = types.InlineKeyboardButton('A', callback_data='a')
  buttonB = types.InlineKeyboardButton('B', callback_data='b')
  buttonC = types.InlineKeyboardButton('C', callback_data='c')

  markup.row(buttonA, buttonB)
  markup.row(buttonC)

  bot.send_message(message.chat.id, 'заработай пж🙏', reply_markup=markup)

  print('qq')
  bot.send_message(call.message.chat.id, f'Data: {call.data}')
  bot.answer_callback_query(call.id)

print("Starting...")
bot.polling(none_stop=True)

И кстати, ещё проблема может быть в том, что у вас табуляция либо слишком большая в функции handle, либо слишком маленькая в функции start... Просто выровняйте её, нажав 1 раз кнопку Tab.

Рекомендую вам попробовать оба варианта, указанных выше, и, если мой ответ вам помог - отметьте его галочкой пожалуйста)