Появилась проблема, не получается в кнопке 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, так как он уже засветился в сети.

→ Ссылка