как добавить кнопку "вернуться назад" у бота telebot, чтобы перекидывало в главное меню
# add the button and greeting
@bot.message_handler(commands=["start"])
def start_message(message):
menu1 = types.InlineKeyboardMarkup()
button1 = types.InlineKeyboardButton(text="Приступить к подготовке", callback_data="preparation")
button2 = types.InlineKeyboardButton(text="Отзывы", callback_data="reviews")
button3 = types.InlineKeyboardButton(text="Техподдержка", callback_data="tech")
button4 = types.InlineKeyboardButton(text="Бесплатные материалы", callback_data="free")
menu1.add(button1, button2, button3, button4)
bot.send_message(message.chat.id,
text="Добро пожаловать, {0.first_name}!, лялялялля".format(message.from_user), reply_markup=menu1)
# add inline buttons
@bot.callback_query_handler(func=lambda call: True)
def answer(call):
if call.data == "preparation":
markup_inline = types.InlineKeyboardMarkup()
key1 = types.InlineKeyboardButton(text="ЮKassa", url="некая ссылка1", callback_data="pay1")
key2 = types.InlineKeyboardButton(text="Какой то другой способ", url="некая ссылка2",
callback_data="pay2")
key3 = types.InlineKeyboardButton(text="Вернуться назад", callback_data="back_menu1")
markup_inline.add(key1, key2, key3)
bot.send_message(call.message.chat.id, text="Выбери удобный способ оплаты: ", reply_markup=markup_inline)
if call.data == "back_menu1":
aa = types.InlineKeyboardMarkup()
button1 = types.InlineKeyboardButton(text="Приступить к подготовке", callback_data="preparation")
button2 = types.InlineKeyboardButton(text="Отзывы", callback_data="reviews")
button3 = types.InlineKeyboardButton(text="Техподдержка", callback_data="tech")
button4 = types.InlineKeyboardButton(text="Бесплатные материалы", callback_data="free")
aa.add(button1, button2, button3, button4)
bot.send_message(call.message.chat.id,
text="Выбери, что тебя интересует", reply_markup=aa)
Ответы (3 шт):
Автор решения: M141
→ Ссылка
Это решение может Вам подойти. Немного подкоректирровал Ваш исходный код, чтобы оно возвращало в главное меню при нажатии на кнопку "Вернуться назад".
import telebot
from telebot import types
API_TOKEN = '{Ваш токен}'
bot = telebot.TeleBot(API_TOKEN)
# add the button and greeting
markup_inline = types.InlineKeyboardMarkup()
key1 = types.InlineKeyboardButton(text="ЮKassa", url="https://google.com", callback_data="pay1")
key2 = types.InlineKeyboardButton(text="Какой то другой способ", url="https://google.com", callback_data="pay2")
key3 = types.InlineKeyboardButton(text="Вернуться назад", callback_data="back_menu1")
markup_inline.add(key1, key2, key3)
# add inline buttons
menu1 = types.InlineKeyboardMarkup()
button1 = types.InlineKeyboardButton(text="Приступить к подготовке", callback_data="preparation")
button2 = types.InlineKeyboardButton(text="Отзывы", callback_data="reviews")
button3 = types.InlineKeyboardButton(text="Техподдержка", callback_data="tech")
button4 = types.InlineKeyboardButton(text="Бесплатные материалы", callback_data="free")
menu1.add(button1, button2, button3, button4)
@bot.message_handler(commands=["start"])
def start_message(message):
bot.send_message(message.chat.id, text="Добро пожаловать, {0.first_name}!, лялялялля".format(message.from_user), reply_markup=menu1)
@bot.callback_query_handler(func=lambda call: True)
def answer(call):
if call.data == "preparation":
bot.send_message(call.message.chat.id, text="Выбери удобный способ оплаты: ", reply_markup=markup_inline)
elif call.data == "back_menu1":
bot.send_message(call.message.chat.id, text="Выбери, что тебя интересует", reply_markup=menu1)
if __name__ == '__main__':
bot.polling(none_stop=True)
Автор решения: GMR Chanel
→ Ссылка
@bot.callback_query_handler(func=lambda call: call.data == 'back_to_main')
def back_to_main_callback(query):
main_menu_keyboard = types.InlineKeyboardMarkup()
button1 = types.InlineKeyboardButton(text="Приступить к подготовке", callback_data="preparation")
button2 = types.InlineKeyboardButton(text="Отзывы", callback_data="reviews")
button3 = types.InlineKeyboardButton(text="Техподдержка", callback_data="tech")
button4 = types.InlineKeyboardButton(text="Бесплатные материалы", callback_data="free")
main_menu_keyboard.add(button1, button2, button3, button4)
bot.send_message(query.message.chat.id, "Выбери, что тебя интересует", reply_markup=main_menu_keyboard)
Автор решения: Leonid
→ Ссылка
Делаете самую обычную функцию без декораторов и на вход она должна принимать message создаете переменную - markup=types. ...Markup, где будут находится кнопки, делаете кнопки какие нужно, добавляете кнопки - markup.add(button1, button2...) пишете в конце bot.send_message(..., reply_markup=markup).
А дальше уже когда нужно будет вернуться в главное меню просто вызываешь эту функцию и передаешь аргумент message.
Надеюсь понятно объяснил.