Задать вопрос
ADyusha
@ADyusha

Многоуровневое меню в Bot Telegram, как сделать кнопку назад на каждом уровне?

Хелп товарищи, не могу разобраться, перепробовал разные варианты из туториалов
Код ниже:

import telebot
from telebot import types

bot = telebot.TeleBot('ТОКЕН')

@bot.message_handler(commands=['start'])
def start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=1)
    item1 = types.KeyboardButton('меню')
    item2 = types.KeyboardButton('инфо')

    markup.add(item1, item2)

    bot.send_message(message.chat.id, 'Привет, {0.first_name}!'.format(message.from_user), reply_markup=markup)


@bot.message_handler(content_types=['text'])
def bot_message(message):
    if message.chat.type == 'private':
        if message.text == 'меню':
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=1)
            item1 = types.KeyboardButton('раздел 1')
            item2 = types.KeyboardButton('раздел 1.2')
            back = types.KeyboardButton(' Назад')
            markup.add(item1, item2, back)

            bot.send_message(message.chat.id, 'меню', reply_markup=markup)

        elif message.text == 'раздел 1':
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=1)
            item1 = types.KeyboardButton('товар 1')
            item2 = types.KeyboardButton('товар 2')
            back = types.KeyboardButton(' Назад')
            markup.add(item1, item2, back)

            bot.send_message(message.chat.id, 'раздел 1', reply_markup=markup)

        elif message.text == ' Назад':
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
            item1 = types.KeyboardButton('меню')
            item2 = types.KeyboardButton('инфо')

            markup.add(item1, item2)

            bot.send_message(message.chat.id, ' Назад', reply_markup=markup)

bot.polling(none_stop = True)
  • Вопрос задан
  • 859 просмотров
Подписаться 1 Простой 4 комментария
Решения вопроса 1
@helldess
Делаешь кнопку, в ней callback_data='что-то' отлавливаешь этот callback хендлером и просто отправляешь тоже самое, что было на прошлом уровне.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@olegspb858585
Нужно убрать пробел перед назад в ' Назад'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы