Задать вопрос
@MCfun

Почему callback_query_handler в telebot не работает?

Вот сам inline вызывается:
keyboard = InlineKeyboardMarkup()
keyboard.add(InlineKeyboardButton(text='Показать аномалии', callback_data="show_anom"))
keyboard.add(InlineKeyboardButton(text='Показать сотрудников', callback_data="show_empl"))
keyboard.add(InlineKeyboardButton(text='Показать предметы', callback_data="show_items"))
bot.send_message(message.from_user.id, f'Инвентарь: \nКоличество аномалий: {str(len(json.loads(log_info(message, 4))))}\nКоличество сотрудников: {str(len(json.loads(log_info(message, 3))))}\nКоличество амуниции: {str(len(json.loads(log_info(message, 5))))}', reply_markup=keyboard)
bot.delete_message(message.chat.id, message.message_id)


А вот декоратор, который почему то не работает:

@bot.callback_query_handler(func=lambda callback: True)
def callback_query_handler(callback):
    print(1)
    message: Message
    if callback.data == 'show_anom':
        bot.send_message(message.chat.id, f'Список аномалий: ...')
    elif callback.data == 'show_empl':
        bot.send_message(message.chat.id, f'Список сотрудников: ...')
    elif callback.data == 'show_items':
        bot.send_message(message.chat.id, f'Список предметов: ...')
    bot.answer_callback_query(callback.id)
  • Вопрос задан
  • 49 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Python-разработчик
    9 месяцев
    Далее
  • SF Education
    Бэкенд-разработчик на Python
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 2
shurshur
@shurshur
Сисадмин, просто сисадмин...
Вот смотри:

message: Message

Чему равно message после такой инструкции? Как по-твоему оно должно работать? Попробуй его напечатать.

Программировать нужно не методом тыка, а понимая язык, на котором пишешь.
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
Потому что от того, что ты написал message: Message, у тебя в обработчике волшебным образом доступ к объекту message из совсем другой (и уже отработавшей) функции не появится.
Лучше разберись, что ещё лежит в объекте callback - там вполне достаточно информации для отправки ответа.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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