Как сделать кнопку "Возврат в главное меню" в телеграмм боте в Python
Дан скрипт. Нужно сделать переход на начало скрипта без команды /start, а только нажав на кнопку "В главное меню". Единственное, что у меня получилось сделать, это скопировать данные функции menu и добавить в ответ на кнопку 'В главное меню'. Такую кнопку планирую делать не одну и мне не нравится мой способ "копирования". Предложите идеи, решения данной ситуации
import telegram
import telebot
from telebot import types
@bot.message_handler(commands=['start'])
def menu(message):
hello_text = 'Привет1'
keyboard_1 = types.InlineKeyboardMarkup()
callback_button_1 = types.InlineKeyboardButton(text="Кнопка1", callback_data="knopka1")
keyboard_1.add(callback_button_1)
msg = bot.send_message(message.chat.id, hello_text, reply_markup=keyboard_1)
@bot.callback_query_handler(func=lambda call: call.data == 'knopka1')
def messendgers(call):
text = 'Привет2'
keyboard_2 = types.InlineKeyboardMarkup()
callback_button_1 = types.InlineKeyboardButton(text="Кнопка2", callback_data='knopka2')
keyboard_2.add(callback_button_1)
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text=text, reply_markup=keyboard_2)
@bot.callback_query_handler(func=lambda call: call.data == 'knopka2')
def mainme(call):
text = 'Завершающий диалог'
keyboard_3 = types.InlineKeyboardMarkup()
callback_button_1 = types.InlineKeyboardButton(text="В главное меню", callback_data="mainmenu")
keyboard_3.add(callback_button_1)
msg = bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text=text, reply_markup=keyboard_3)
bot.polling()
Ответы (1 шт):
Автор решения: D. Violet
→ Ссылка
def mainmenu():
keyboard_1 = types.InlineKeyboardMarkup()
callback_button_1 = types.InlineKeyboardButton(text="Кнопка1", callback_data="knopka1")
keyboard_1.add(callback_button_1)
return keyboard_1
@bot.message_handler(commands=['start', 'help'])
def menu(message):
hello_text = 'Привет1'
keyboard_1 = types.InlineKeyboardMarkup()
callback_button_1 = types.InlineKeyboardButton(text="Кнопка1", callback_data="knopka1")
keyboard_1.add(callback_button_1)
bot.send_message(message.chat.id, hello_text, reply_markup=keyboard_1)
@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
if call.data == 'knopka1':
text = 'Привет2'
keyboard_2 = types.InlineKeyboardMarkup()
callback_button_1 = types.InlineKeyboardButton(text="Кнопка2", callback_data='knopka2')
keyboard_2.add(callback_button_1)
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text=text,
reply_markup=keyboard_2)
elif call.data == 'knopka2':
text = 'Завершающий диалог'
keyboard_3 = types.InlineKeyboardMarkup()
callback_button_1 = types.InlineKeyboardButton(text="В главное меню", callback_data="mainmenu")
keyboard_3.add(callback_button_1)
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text=text,
reply_markup=keyboard_3)
elif call.data == 'mainmenu':
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
text='вы вернулись в главное меню', reply_markup=mainmenu())