Не могу активировать кнопку в телеграм
В общем, создал телеграм-канал, есть 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)