Появилась проблема, не получается в кнопке kurs1 сделать кнопку назад, чтобы она возвращала в предыдущее меню
import telebot
from telebot import types
bot = telebot.TeleBot('token')
@bot.message_handler(commands=["start"])
def inline(massege):
mainmenu = types.InlineKeyboardMarkup()
catalog = types.InlineKeyboardButton(text="Каталог", callback_data="Catalog")
help = types.InlineKeyboardButton(text="Поддержка", callback_data="help")
mainmenu.add(catalog, help)
bot.send_message(massege.chat.id, "ВЫБЕРИТЕ КНОПКУ", reply_markup=mainmenu)
@bot.callback_query_handler(func=lambda a:True)
def inline_a(a):
if a.data == 'Catalog':
menucatalog = types.InlineKeyboardMarkup()
but1 = types.InlineKeyboardButton(text="Курс 1", callback_data="but1")
but2 = types.InlineKeyboardButton(text="Курс 2", callback_data="but2")
but3 = types.InlineKeyboardButton(text="Курс 3", callback_data="but3")
but4 = types.InlineKeyboardButton(text="Курс 4", callback_data="but4")
backinmainmenuforcatalog = types.InlineKeyboardButton(text="Назад", callback_data="backinmainmenu")
menucatalog.add(but1, but2, but3, but4, backinmainmenuforcatalog)
bot.send_message(a.message.chat.id, 'Каталог', reply_markup=menucatalog)
elif a.data =='but1':
kurs1 = types.InlineKeyboardMarkup()
aboutkurs1 = types.InlineKeyboardButton(text="О курсе", callback_data="aboutkurs1")
paykurs1 = types.InlineKeyboardButton(text="Оплата", callback_data="paykurs1")
backincatalog = types.InlineKeyboardButton(text="Назад", callback_data="menucatalog")
kurs1.add(aboutkurs1, paykurs1, backincatalog)
bot.send_message(a.message.chat.id, 'Курс 1', reply_markup=kurs1)
elif a.data == 'help':
menuhelp = types.InlineKeyboardMarkup()
helper = types.InlineKeyboardButton(text="Связь с нами", callback_data="helper")
backinmainmenu = types.InlineKeyboardButton(text="Назад", callback_data="backinmainmenu")
menuhelp.add(helper, backinmainmenu)
bot.send_message(a.message.chat.id, 'Выбирите действие', reply_markup=menuhelp)
elif a.data == "helper":
bot.send_message(a.message.chat.id, 'Это кнопка 2')
elif a.data == 'backinmainmenu':
return inline(a.message)
elif a.data == 'menucatalog':
return inline(a.message)
bot.polling()
Ответы (1 шт):
Автор решения: Denis Rudnitskiy
→ Ссылка
При обработке callback_query_handler - вы указываете обратно вызвать стартовую функцию inline, возвращая её через return, поэтому получаете вывод стартовой функции.
elif a.data == 'menucatalog':
return inline(a.message)
Вот один из примеров решения вашей проблемы:
import telebot
from telebot import types
bot = telebot.TeleBot('token')
@bot.message_handler(commands=["start"])
def inline(massege):
mainmenu = types.InlineKeyboardMarkup()
catalog = types.InlineKeyboardButton(text="Каталог", callback_data="Catalog")
help = types.InlineKeyboardButton(text="Поддержка", callback_data="help")
mainmenu.add(catalog, help)
bot.send_message(massege.chat.id, "ВЫБЕРИТЕ КНОПКУ", reply_markup=mainmenu)
@bot.callback_query_handler(func=lambda a:True)
def inline_a(a):
if a.data == 'Catalog' or a.data == "menucatalog": #!
menucatalog = types.InlineKeyboardMarkup()
but1 = types.InlineKeyboardButton(text="Курс 1", callback_data="but1")
but2 = types.InlineKeyboardButton(text="Курс 2", callback_data="but2")
but3 = types.InlineKeyboardButton(text="Курс 3", callback_data="but3")
but4 = types.InlineKeyboardButton(text="Курс 4", callback_data="but4")
backinmainmenuforcatalog = types.InlineKeyboardButton(text="Назад", callback_data="backinmainmenu")
menucatalog.add(but1, but2, but3, but4, backinmainmenuforcatalog)
bot.send_message(a.message.chat.id, 'Каталог', reply_markup=menucatalog)
elif a.data =='but1':
kurs1 = types.InlineKeyboardMarkup()
aboutkurs1 = types.InlineKeyboardButton(text="О курсе", callback_data="aboutkurs1")
paykurs1 = types.InlineKeyboardButton(text="Оплата", callback_data="paykurs1")
backincatalog = types.InlineKeyboardButton(text="Назад", callback_data="menucatalog")
kurs1.add(aboutkurs1, paykurs1, backincatalog)
bot.send_message(a.message.chat.id, 'Курс 1', reply_markup=kurs1)
elif a.data == 'help':
menuhelp = types.InlineKeyboardMarkup()
helper = types.InlineKeyboardButton(text="Связь с нами", callback_data="helper")
backinmainmenu = types.InlineKeyboardButton(text="Назад", callback_data="backinmainmenu")
menuhelp.add(helper, backinmainmenu)
bot.send_message(a.message.chat.id, 'Выберите действие', reply_markup=menuhelp)
elif a.data == "helper":
bot.send_message(a.message.chat.id, 'Это кнопка 2')
elif a.data == 'backinmainmenu':
return inline(a.message)
#elif a.data == 'menucatalog': #!
# return inline(a.message) #!
elif a.data == 'backinmainmenu':
return inline(a.message)
Знаком #! я указал, что требовалось добавить для решения вашей задачи.
И, да, измените свой токен у BotFather, так как он уже засветился в сети.