Я использую библиотеку Telebot для реализации бота Telegram, который выполняет конвертацию валюты, используя встроенные кнопки. Бот сначала предлагает пользователю нажать на валюту для обмена, а затем отправить сообщение пользователю, чтобы ввести сумму.
Затем бот отвечает на все запросы встроенных кнопок, которые были нажаты после того, как пользователь ввел сумму. Как я могу получить, чтобы мой бот отвечал только на последний встроенный запрос кнопки?
Разговор с ботом и фрагментом кода прилагается ниже.
@bot.callback_query_handler(func=lambda call:True)
def callback_inline(call):
if call.data == "mainmenu":
keyboardmain = types.InlineKeyboardMarkup(row_width=2)
selling = types.InlineKeyboardButton(text="SELL", callback_data="sell")
buying = types.InlineKeyboardButton(text="BUY", callback_data="buy")
keyboardmain.add(selling,buying)
bot.edit_message_text(chat_id=call.message.chat.id,message_id=call.message.message_id,\
text="SELL - Exchange SGD to other currencies.\n BUY - Exchange other currencies to SGD.",
reply_markup=keyboardmain)
elif call.data == "sell":
sell(call)
elif call.data == "buy":
buy(call)
elif call.data == "aud":
msg = bot.send_message(call.message.chat.id, "How much SGD do you have?") #aud
bot.answer_callback_query(callback_query_id=call.id, show_alert=False, text="How much SGD do you have")
bot.register_next_step_handler(msg, calulation.process_aud_step)
elif call.data == "cad":
msg = bot.send_message(call.message.chat.id, "How much SGD do you have?") #cad
bot.answer_callback_query(callback_query_id=call.id, show_alert=False, text="How much SGD do you have")
bot.register_next_step_handler(msg, calulation.process_cad_step)
elif call.data == "chf":
msg = bot.send_message(call.message.chat.id, "How much SGD do you have?") #chf
bot.answer_callback_query(callback_query_id=call.id, show_alert=False, text="How much SGD do you have")
bot.register_next_step_handler(msg, calulation.process_chf_step)