Подменю Telebot

#python #menu #telegram-bot #submenu

Вопрос:

Я создаю бота в telegram, и у меня есть меню. Дело в том, что каждый раз, когда кто-то выбирает опцию, вместо изменения меню отправляется новое сообщение. Я понимаю, что это связано с функцией send_message, но я не знаю, как это сделать.

 @bot.message_handler(commands=['menu']) def menu(message):  keyboard = telebot.types.InlineKeyboardMarkup()  keyboard.add(telebot.types.InlineKeyboardButton('Reglas', callback_data='Reglas'))  keyboard.add(telebot.types.InlineKeyboardButton('Consultas', callback_data='Consultas'))  keyboard.add(telebot.types.InlineKeyboardButton('Historia', callback_data='Historia'))  keyboard.add(telebot.types.InlineKeyboardButton('Tiradas', callback_data='Tiradas'))  keyboard.add(telebot.types.InlineKeyboardButton('Admin', callback_data='adm'))  bot.send_message(message.chat.id,'Has llamado al menu?',reply_markup=keyboard) @bot.callback_query_handler(func=lambda c:True) def submenus(c):  if c.data == 'Tiradas':  keyboard = telebot.types.InlineKeyboardMarkup()  keyboard.add(telebot.types.InlineKeyboardButton('Tirada suelta', callback_data='ts'))  keyboard.add(telebot.types.InlineKeyboardButton('Tirada de personajes',callback_data='tp'))  bot.send_message(c.message.chat.id, 'Deseas tiradas sueltas o para crear personajes?', reply_markup=keyboard)  

Я начал программировать несколько недель назад, прошу вашего терпения. Большое вам спасибо за ваше терпение.

Ответ №1:

Так… Это происходит из-за того, что вы недостаточно изучили api telegram. Если вы хотите отредактировать сообщение вместо отправки нового, вы просто не будете использовать send_message!

Вы будете использовать edit_message_text, в этом случае ваш код будет выглядеть следующим образом:

 bot.edit_message_text(chat_id=c.message.chat.id, message_id=c.message.message_id, text='Deseas tiradas sueltas o para crear personajes?', reply_markup=keyboard)  

Комментарии:

1. Большое вам спасибо, правда в том, что я не очень хорошо разбираюсь в программировании. Спасибо, что уделили мне время