python telebot - Не вызывается функция через (call.message)

Всем привет. Пытаюсь разобраться с телеграм-ботом. Суть в чём, есть три страницы:

choose_language = выбор языка
ru_main_menu = меню на русском языке
ru_freshman = одна из тем

Я хотел реализовать кнопку возврата на предыдущий уровень. Так, есть кнопка возврата из ru_main_menu в choose_language. Хотел сделать кнопку возврата из ru_freshman по тому же алгоритму, но питон это есть не захотел. Попытки обсудить с ChatGPT успехом не увенчались, поэтому я здесь. Я плохо уже понимаю, что из-за чего тут, поэтому буду очень рад, если объясните, что не так с кодом и как это исправить. (p.s. если что, таких "возвратов" планируется много. Проще говоря, на каждой странице я хочу реализовать "шаг назад")

Вот код:

import telebot
from telebot.types import InlineKeyboardMarkup,InlineKeyboardButton,ReplyKeyboardMarkup,KeyboardButton #импорт необходимых библиотек

bot=telebot.TeleBot('API') #Вводим API-ключ

@bot.message_handler(commands=['start']) #меню выбора языка
def choose_language(message):
    lang = InlineKeyboardMarkup()
    lang.add(InlineKeyboardButton('Русский', callback_data='ru'))
    lang.add(InlineKeyboardButton('English', callback_data='eng'))
    bot.send_message(message.chat.id, 'Привет! Выбери язык.', reply_markup=lang)


@bot.callback_query_handler(func=lambda call: call.data == 'ru' or call.data == 'changelanguage') #Меню на русском
def ru_main_menu(call):
    if call.data=='ru':
        ru_menu=InlineKeyboardMarkup()
        ru_menu.add(InlineKeyboardButton('FAQ', callback_data='ru_faq'))
        ru_menu.add(InlineKeyboardButton('Кнопка2', callback_data='ru_butt2'))
        ru_menu.add(InlineKeyboardButton('Кнопка3', callback_data='ru_butt3'))
        ru_menu.add(InlineKeyboardButton('Кнопка4', callback_data='ru_butt4'))
        ru_menu.add(InlineKeyboardButton('Вернуться к выбору языка', callback_data='changelanguage'))
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text='Выбран русский язык. Выберите интересующий вас запрос:', reply_markup=ru_menu)
    elif call.data=='changelanguage':
        bot.delete_message(call.message.chat.id,message_id=call.message.message_id)
        choose_language(call.message)



@bot.callback_query_handler(func=lambda call: call.data == 'eng' or call.data == 'changelanguage') #Меню на английском
def eng_main_menu(call):
    if call.data == 'eng':
        eng_menu=InlineKeyboardMarkup()
        eng_menu.add(InlineKeyboardButton('fаq', callback_data='eng_faq'))
        eng_menu.add(InlineKeyboardButton('Button2', callback_data='eng_butt2'))
        eng_menu.add(InlineKeyboardButton('Button3', callback_data='eng_butt3'))
        eng_menu.add(InlineKeyboardButton('Button4', callback_data='eng_butt4'))
        eng_menu.add(InlineKeyboardButton('Вернуться к выбору языка', callback_data='changelanguage'))
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text='English. Choose your option:', reply_markup=eng_menu)
    elif call.data == 'changelanguage':
        bot.delete_message(call.message.chat.id, message_id=call.message.message_id)
        choose_language(call.message)

@bot.callback_query_handler(func=lambda call: True) #Меню при нажатии кнопки "FAQ" в ru_main_menu
def ru_freshman(call):
    if call.data=='ru_faq':
        rufaq_menu = InlineKeyboardMarkup()
        rufaq_menu.add(InlineKeyboardButton('text1', callback_data='ru_per1'))
        rufaq_menu.add(
            InlineKeyboardButton('text2',callback_data='ru_per2'))
        rufaq_menu.add(InlineKeyboardButton('text3',callback_data='ru_per3'))
        rufaq_menu.add(InlineKeyboardButton('text4', callback_data='ru_per4'))
        rufaq_menu.add(InlineKeyboardButton('text5',callback_data='ru_per5'))
        rufaq_menu.add(InlineKeyboardButton('Назад в меню',callback_data='ru_back_to_main'))

        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text='Здесь какой-то текст')

    elif call.data=='ru_back_to_main':
        bot.delete_message(chat_id=call.message.chat.id, message_id=call.message.message_id)
        # ru_main_menu(call.message) |Не работает. при вызове функции ru_main_menu через 'ru_main_menu(call.message)',
                                    # мы пытаемся передать объект типа Message, вместо объекта типа CallbackQuery.
                                    # Это вызывает ошибку, так как ru_main_menu ожидает объект типа CallbackQuery.
        choose_language(call.message) #|Работает, но, это не то. Мне необходимо чтобы вызывалась другая функция

bot.polling()

Ответы (1 шт):

Автор решения: kolo
elif call.data == 'changelanguage':
    lang = InlineKeyboardMarkup()
    lang.add(InlineKeyboardButton('Русский',callback_data='ru'))
    lang.add(InlineKeyboardButton('English', callback_data='eng'))
    bot.edit_message_text(
        call.message.chat.id, message_id=call.message.message_id, 
        text = 'Привет! Выбери язык.', reply_markup = lang)

и по такой же логике осуществляется любой шаг назад

→ Ссылка