Не могу активировать кнопку в телеграм

В общем, создал телеграм-канал, есть 3 раздела с кнопками. Два из них работают без проблем и открывается отлично, но третий не кликабелен.

keyboard = types.InlineKeyboardMarkup()
key_yes = types.InlineKeyboardButton(text='Да', callback_data='yes')
keyboard.add(key_yes)
key_no = types.InlineKeyboardButton(text='Нет', callback_data='no')
keyboard.add(key_no)
question = 'Доброго времени суток, ' + name + ". Вы хотите купить книгу «" +book+ '», ваш номер телефона ' +str(phone)+ ' верно?'
bot.send_message(message.from_user.id, text=question, reply_markup=keyboard)

@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
    if call.data == "yes":
        keyboard = types.InlineKeyboardMarkup()
        key_digital = types.InlineKeyboardButton(text='Электронная (epub)', callback_data='digital')
        keyboard.add(key_digital)
        key_audio = types.InlineKeyboardButton(text='Аудиокнига (mp3)', callback_data='audio')
        keyboard.add(key_audio)
        key_paper = types.InlineKeyboardButton(text='Бумажная', callback_data='paper')
        keyboard.add(key_paper)
        key_cancel = types.InlineKeyboardButton(text='Отмена', callback_data='cancel')
        keyboard.add(key_cancel)
        choice = 'Какой вариант книги вы хотите купить?'
        bot.send_message(message.from_user.id, text=choice, reply_markup=keyboard)
    elif call.data == "no":
        bot.send_message(call.message.chat.id, "Давайте, попробуем еще раз!")
        bot.send_message(call.message.chat.id, "Напишите своё имя")
        bot.register_next_step_handler(call.message, reg_name)
        bot.send_message(call.message.chat.id,call.data)


        if call.data == "digital":
                bot.send_message(call.message.chat.id, "Стоимость электронной книги составляет 5 сомони. Оплата принимается на номер +992 902 000 125 посредство кошелька Алиф моби, МегаФон Life или Qiwi. Книга поступит вам в течение 15 минут после оплаты")
        elif call.data == "audio":
                bot.send_message(call.message.chat.id, "Стоимость аудиокниги составляет 12 сомони. Оплата принимается на номер +992 902 000 125 посредство кошелька Алиф моби, МегаФон Life или Qiwi. Книга поступит вам в течение 15 минут после оплаты")
        elif call.data == "paper":
                bot.send_message(call.message.chat.id, "Стоимость книги и время доставки будет отправлена вам в личных сообщениях в течение 15 минут")
        elif call.data == "cancel":
                bot.send_message(call.message.chat.id, "Давайте, попробуем еще раз!")
                bot.send_message(call.message.chat.id, "Напишите своё имя")
                bot.register_next_step_handler(call.message, reg_name)

Здесь нижние кнопки "Digital", "Paper", "Audio" и "Cancel" не работают. С верхними проблем нет.


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

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

Если в коде вопроса у вас не съехала табуляция, тогда сместите блок if\elif влево, под elif call.data == "no": и замените if call.data == "digital": на elif call.data == "digital":

@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
    if call.data == "yes":
        keyboard = types.InlineKeyboardMarkup()
        key_digital = types.InlineKeyboardButton(text='Электронная (epub)', callback_data='digital')
        keyboard.add(key_digital)
        key_audio = types.InlineKeyboardButton(text='Аудиокнига (mp3)', callback_data='audio')
        keyboard.add(key_audio)
        key_paper = types.InlineKeyboardButton(text='Бумажная', callback_data='paper')
        keyboard.add(key_paper)
        key_cancel = types.InlineKeyboardButton(text='Отмена', callback_data='cancel')
        keyboard.add(key_cancel)
        choice = 'Какой вариант книги вы хотите купить?'
        bot.send_message(message.from_user.id, text=choice, reply_markup=keyboard)

    elif call.data == "no":
          bot.send_message(call.message.chat.id, "Давайте, попробуем еще раз!")
          bot.send_message(call.message.chat.id, "Напишите своё имя")
          bot.register_next_step_handler(call.message, reg_name)
          bot.send_message(call.message.chat.id,call.data)

    elif call.data == "digital":
          bot.send_message(call.message.chat.id, "Стоимость электронной книги составляет 5 сомони. Оплата принимается на номер +992 902 000 125 посредство кошелька Алиф моби, МегаФон Life или Qiwi. Книга поступит вам в течение 15 минут после оплаты")

    elif call.data == "audio":
          bot.send_message(call.message.chat.id, "Стоимость аудиокниги составляет 12 сомони. Оплата принимается на номер +992 902 000 125 посредство кошелька Алиф моби, МегаФон Life или Qiwi. Книга поступит вам в течение 15 минут после оплаты")

    elif call.data == "paper":
          bot.send_message(call.message.chat.id, "Стоимость книги и время доставки будет отправлена вам в личных сообщениях в течение 15 минут")

    elif call.data == "cancel":
          bot.send_message(call.message.chat.id, "Давайте, попробуем еще раз!")
          bot.send_message(call.message.chat.id, "Напишите своё имя")
          bot.register_next_step_handler(call.message, reg_name)
→ Ссылка