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

Почему не работает цепочка inline кнопок?

Пытаюсь сделать цепочку inline сообщений как в BotFather, 1,2,3 кнопки работают, а кнопки 4,5,6 нет.
Делаю в telebot:

@bot.message_handler(commands=['start'])
def start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn1 = types.KeyboardButton("Начало")
    markup.add(btn1)
    bot.send_message(message.chat.id, text="Привет, {0.first_name}!".format(message.from_user), reply_markup=markup)

@bot.message_handler(content_types=['text'])
def send_keyboard(message):
    if message.text == "Начало":
        button1 = types.InlineKeyboardButton('Кнопка 1', callback_data='button1')
        button2 = types.InlineKeyboardButton('Кнопка 2', callback_data='button2')
        button3 = types.InlineKeyboardButton('Кнопка 3', callback_data='button3')
        keyboard = types.InlineKeyboardMarkup()
        keyboard.add(button1)
        keyboard.add(button2, button3)
        bot.send_message(message.chat.id, 'Выберите кнопку:', reply_markup=keyboard)

@bot.callback_query_handler(func=lambda callback: callback.data)
def check_callback_data(call):
    if call.data == 'button1':
        button4 = types.InlineKeyboardButton('Кнопка 4', callback_data='button1')
        button5 = types.InlineKeyboardButton('Кнопка 5', callback_data='button2')
        button6 = types.InlineKeyboardButton('Кнопка 6', callback_data='button3')
        keyboard = types.InlineKeyboardMarkup()
        keyboard.add(button4)
        keyboard.add(button5, button6)
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text='Вы нажали на кнопку 1!',
                              reply_markup=keyboard)

    elif call.data == 'button2':
        button4 = types.InlineKeyboardButton('Кнопка 4', callback_data='button1')
        button5 = types.InlineKeyboardButton('Кнопка 5', callback_data='button2')
        button6 = types.InlineKeyboardButton('Кнопка 6', callback_data='button3')
        keyboard = types.InlineKeyboardMarkup()
        keyboard.add(button4)
        keyboard.add(button5, button6)
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text='Вы нажали на кнопку 2!',
                              reply_markup=keyboard)

    elif call.data == 'button4':
        button7 = types.InlineKeyboardButton('Кнопка 7', callback_data='button1')
        button8 = types.InlineKeyboardButton('Кнопка 8', callback_data='button2')
        button9 = types.InlineKeyboardButton('Кнопка 9', callback_data='button3')
        keyboard2 = types.InlineKeyboardMarkup()
        keyboard2.add(button7)
        keyboard2.add(button8, button9)
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text='Вы нажали на кнопку 4!',
                              reply_markup=keyboard2)

    else:
        bot.send_message(call.message.chat.id, 'Вы нажали на неизвестную кнопку!')


bot.polling(none_stop=True)
  • Вопрос задан
  • 111 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
febday
@febday
У вас имеется условие elif call.data =='button4'
В свою очередь callback_data='button4' у вас в принципе нет
Тогда в чём заключается вопрос?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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