Помощь с telegram ботом на Python(telebot)

У меня есть два обработчика, первый вызывается с помощью команды /start и в ней появляется сообщение с inline-кнопками, а второй обработчик нужен для того что бы обрабатывать callback одной из кнопки в первом обработчике (при нажатие появляются inline-кнопки). И я хочу сделать так что бы при нажатие на кнопку в первом обработчике сообщение и кнопки там удалились и появилось сообщение второго обработчика с его кнопками.

ПРИМЕР

Я пишу /start и мне бот пишет сообщение:

выберите вариант:

кнопка1

кнопка2

Если я нажму на кнопку1 к примеру, тогда это сообщение должно удалиться и появится новое, которое должно выводиться при нажатие на кнопку1.

Если говорить коротко мне нужно сделать кнопку НАЗАД.

@bot.message_handler(commands=['start'])
def start(message):
    keyboard = telebot.types.InlineKeyboardMarkup(row_width=1)

    #КНОПКИ 
    profile = telebot.types.InlineKeyboardButton(text="? Профиль", callback_data="profile")
    shop = telebot.types.InlineKeyboardButton(text="? Магазин", url="https://ru.stackoverflow.com/")
    instructions = telebot.types.InlineKeyboardButton(text="? Инструкция", callback_data="instructions")
    support = telebot.types.InlineKeyboardButton(text="?️ Техническая поддержка", url="https://ru.stackoverflow.com/")
    aboutUs = telebot.types.InlineKeyboardButton(text="❗ О нас", url="https://ru.stackoverflow.com/")
    keyboard.add(profile, shop, instructions, support, aboutUs) 

    bot.send_message(message.chat.id, Выберите операцию:',   reply_markup=keyboard)
    

@bot.callback_query_handler(func=lambda call: True)
def callback_handler(call):
    if call.data == "instructions":
        profile_keyboard = telebot.types.InlineKeyboardMarkup(row_width=1)

        #КНОПКИ ПРОФИЛЯ 
        get_token = telebot.types.InlineKeyboardButton("❓️ Как получить токен", callback_data="get_token")
        video_inst = telebot.types.InlineKeyboardButton("❓️ Видео-инструкция", url="https://ru.stackoverflow.com/")
        gonna_back = telebot.types.InlineKeyboardButton("⬅️ НАЗАД", url="https://ru.stackoverflow.com/")
        profile_keyboard.add(get_token, video_inst, gonna_back)
        bot.send_message(call.message.chat.id, "? Выберите вопрос:", reply_markup=profile_keyboard) 

    elif call.data == "get_token":
        bot.send_message(call.message.chat.id, "<b>Для получение токен...</b> \n1) 

Вот к примеру в первом обработчике я нажимаю на кнопку profile = telebot.types.InlineKeyboardButton(text="? Профиль", callback_data="profile") и как сделать так что бы при ее нажатие сообщение обработчика в которой находится эта кнопка удалилась, появился обработчик другого сообщение?


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

Автор решения: Amgarak

Накидал вам небольшой пример:

import telebot
from telebot import types

bot = telebot.TeleBot('TOKEN')

@bot.message_handler(commands=['start'])
def start(message):
    send_start_message(message)

# Вынесем отправку стартового сообщения с кнопками в отдельную функцию для удобства
def send_start_message(message):
    keyboard = types.InlineKeyboardMarkup(row_width=1)
    profile_button = types.InlineKeyboardButton(text="? Профиль", callback_data="profile")
    shop_button = types.InlineKeyboardButton(text="? Магазин", url="https://ru.stackoverflow.com/")
    instructions_button = types.InlineKeyboardButton(text="? Инструкция", callback_data="instructions")
    support_button = types.InlineKeyboardButton(text="?️ Техническая поддержка", url="https://ru.stackoverflow.com/")
    about_button = types.InlineKeyboardButton(text="❗ О нас", url="https://ru.stackoverflow.com/")
    keyboard.add(profile_button, shop_button, instructions_button, support_button, about_button)
    bot.send_message(message.chat.id, 'Выберите операцию:', reply_markup=keyboard)

# Зачем принимать все калбэки и гарадить ифы? Обработаем каждый в своей функции. 
@bot.callback_query_handler(func=lambda call: call.data == "instructions")
def instructions_callback(call):
    bot.delete_message(call.message.chat.id, call.message.message_id)  # Удаляем старое сообщение
    send_instructions_message(call.message)

# Функция отправки сообщения с инструкциями и кнопкой "Назад"
def send_instructions_message(message):
    keyboard = types.InlineKeyboardMarkup(row_width=1)
    get_token_button = types.InlineKeyboardButton("❓️ Как получить токен", callback_data="get_token")
    video_inst_button = types.InlineKeyboardButton("❓️ Видео-инструкция", url="https://ru.stackoverflow.com/")
    back_button = types.InlineKeyboardButton("⬅️ НАЗАД", callback_data="back")
    keyboard.add(get_token_button, video_inst_button, back_button)
    bot.send_message(message.chat.id, "Выберите вопрос:", reply_markup=keyboard)

# Обработчик нажатия на кнопку "Назад"
@bot.callback_query_handler(func=lambda call: call.data == "back")
def back_callback(call):
    bot.delete_message(call.message.chat.id, call.message.message_id)  # Удаляем старое сообщение
    send_start_message(call.message)  # Отправляем стартовое сообщение как при старте

bot.polling()
→ Ссылка