@Vadim101

Как исправить ошибку при создании inline клавиатуры?

При создании инлайновой клавиатуры возникла проблема: сообщение и кнопки под ним успешно создаются, но они оказываются как будто пустыми и никакого действия не происходит, а также не проходит вторая проверка с print.

В интернете решения найти не смог и Chat GPT не помог.

В чём же всё-таки проблема и что нужно изменить?

import telebot
from telebot import types
token = 'token'

bot = telebot.TeleBot(token)
@bot.message_handler(commands=['winnings'])
def winningsmes(message):
    markuphelp = types.InlineKeyboardMarkup()
    btn1 = types.InlineKeyboardButton(text='4 из 20', callback_data='4from20')
    btn2 = types.InlineKeyboardButton(text='5 из 35', callback_data='5from35')
    btn3 = types.InlineKeyboardButton(text='6 из 36', callback_data='6from36')
    btn4 = types.InlineKeyboardButton(text='7 из 49', callback_data='7from49')
    markuphelp.add(btn1, btn2)
    markuphelp.add(btn3, btn4)
    bot.send_message(message.chat.id, 'Для какой лотереи вы хотите посмотреть выплату выйгрышей?', reply_markup=markuphelp)
    print('первая проверка')
@bot.callback_query_handler(func=lambda callback: True)
def callback_help(callback):
    if callback.data == '4from20':
        print('вторая проверка')
        bot.edit_message_text('Выплаты розыгрышей для лотереи 4 из 20:', callback.message.chat.id, callback.message.message_id)
        bot.send_message(callback.message.chat.id, '1')
    elif callback.data == '5from35':
        bot.edit_message_text('Выплаты розыгрышей для лотереи 5 из 35:', callback.message.chat.id, callback.message.message_id)
        bot.send_message(callback.message.chat.id, '1')
    elif callback.data == '6from36':
        bot.edit_message_text('Выплаты розыгрышей для лотереи 6 из 36:', callback.message.chat.id, callback.message.message_id)
        bot.send_message(callback.message.chat.id, '1')
    elif callback.data == '7from49':
        bot.edit_message_text('Выплаты розыгрышей для лотереи 7 из 49:', callback.message.chat.id, callback.message.message_id)
        bot.send_message(callback.message.chat.id, '1')

if __name__ == '__main__':
    print('Бот запущен!')
    bot.infinity_polling()
  • Вопрос задан
  • 32 просмотра
Решения вопроса 1
@Vadim101 Автор вопроса
смог решить проблему самостоятельно. У меня уже в большом коде до этого был колбэк квери хендлер. Проблема решилась после того как я изменил код на этот и также прошлый колбэк квери хендлер
@bot.message_handler(commands=['winnings'])
def winningsmes(message):
    markuphelp = types.InlineKeyboardMarkup()
    btn1 = types.InlineKeyboardButton(text='4 из 20', callback_data='4from20')
    btn2 = types.InlineKeyboardButton(text='5 из 35', callback_data='5from35')
    btn3 = types.InlineKeyboardButton(text='6 из 36', callback_data='6from36')
    btn4 = types.InlineKeyboardButton(text='7 из 49', callback_data='7from49')
    markuphelp.add(btn1, btn2)
    markuphelp.add(btn3, btn4)
    bot.send_message(message.chat.id, 'Для какой лотереи вы хотите посмотреть выплату выйгрышей?', reply_markup=markuphelp)
@bot.callback_query_handler(func=lambda call: call.data.startswith('4from20'))
def callback_help1(callback):
    bot.edit_message_text('Выплаты розыгрышей для лотереи 4 из 20:', callback.message.chat.id, callback.message.message_id)
    bot.send_message(callback.message.chat.id, '1')
@bot.callback_query_handler(func=lambda call: call.data.startswith('5from35'))
def callback_help2(callback):
    bot.edit_message_text('Выплаты розыгрышей для лотереи 5 из 35:', callback.message.chat.id, callback.message.message_id)
    bot.send_message(callback.message.chat.id, '1')
@bot.callback_query_handler(func=lambda call: call.data.startswith('6from36'))
def callback_help3(callback):
    bot.edit_message_text('Выплаты розыгрышей для лотереи 6 из 36:', callback.message.chat.id, callback.message.message_id)
    bot.send_message(callback.message.chat.id, '1')
@bot.callback_query_handler(func=lambda call: call.data.startswith('7from49'))
def callback_help4(callback):
    bot.edit_message_text('Выплаты розыгрышей для лотереи 7 из 49:', callback.message.chat.id, callback.message.message_id)
    bot.send_message(callback.message.chat.id, '1')
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
nki
@nki
bezkart.ru готовая система лояльности
Запустил ваш код - все работает.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы