Как реализовать переход по Inline кнопкам с помощью call.data?
Обработчик клавиш "Выбрано кольцо " и "Выбрана цепочка" не работает, помогите исправить
import config
import telebot
from telebot import types
bot = telebot.TeleBot(config.token)
@bot.callback_query_handler(func=lambda call:True)
def answer(call):
if call.data=='yes':
markup_inline = types.InlineKeyboardMarkup()
item_ring = types.InlineKeyboardButton(text="Кольцо", callback_data='ring')
item_chain = types.InlineKeyboardButton(text="Цепочка", callback_data="chain")
markup_inline.add(item_ring, item_chain)
bot.send_message(call.message.chat.id, "Какой вид украшения вы хотите заказать?", reply_markup=markup_inline)
elif call.data=='no':
bot.send_message(call.message.chat.id, 'До свидания!')
@bot.callback_query_handler(func=lambda call:True)
def step(call):
if call.data=="ring":
bot.send_message(call.message.chat.id, "Выбрано кольцо")
elif call.data=="chain":
bot.send_message(call.message.chat.id, "Выбрана цепочка")
Ответы (1 шт):
Автор решения: torrua
→ Ссылка
Вторая функция никогда не запускается, потому что всегда срабатывает условие в первом декораторе func=lambda call:True.
Вам нужно изменить условия декораторов или переместить всю логику в одну функцию:
@bot.callback_query_handler(func=lambda call:True)
def answer(call):
if call.data=='yes':
markup_inline = types.InlineKeyboardMarkup()
item_ring = types.InlineKeyboardButton(text="Кольцо", callback_data='ring')
item_chain = types.InlineKeyboardButton(text="Цепочка", callback_data="chain")
markup_inline.add(item_ring, item_chain)
bot.send_message(call.message.chat.id, "Какой вид украшения вы хотите заказать?", reply_markup=markup_inline)
elif call.data=='no':
bot.send_message(call.message.chat.id, 'До свидания!')
elif call.data=="ring":
bot.send_message(call.message.chat.id, "Выбрано кольцо")
elif call.data=="chain":
bot.send_message(call.message.chat.id, "Выбрана цепочка")