МНОГОУРОВНЕВОЕ МЕНЮ TELEGRAM BOT PYTHON

Многоуровневое меню в Telegram bot на Python позволяет пользователям взаимодействовать с ботом через древовидную структуру интерфейса. Для его создания используются inline-кнопки. Inline-кнопки позволяют разместить несколько кнопок в одной строке, в отличие от обычных кнопок, которые устанавливаются под сообщением.

Для создания многоуровневого меню в Telegram bot на Python нужно использовать обработчики CallbackQueryHandler и dict. CallbackQueryHandler вызывается, когда пользователь нажимает на inline-кнопку. Dict использует ключи, чтобы создавать дерево меню: каждый уровень меню обрабатывает каждый ключ как кнопку. Когда пользователь нажимает на кнопку, CallbackQueryHandler возвращает ключ.

Для примера создадим меню, которое имеет два уровня и три кнопки в каждом уровне: Кнопка 1, Кнопка 2 и Кнопка 3.

from telegram.ext import Updater, CommandHandler, CallbackQueryHandler
from telegram import InlineKeyboardButton, InlineKeyboardMarkup

data = {
'1': ['Кнопка 1', 'Кнопка 2', 'Кнопка 3'],
'2': ['Кнопка 1', 'Кнопка 2', 'Кнопка 3']
}

def start(update, context):
keyboard = []
for key in data.keys():
keyboard.append([InlineKeyboardButton(key, callback_data=key)])
reply_markup = InlineKeyboardMarkup(keyboard)
update.message.reply_text('Выберите уровень:', reply_markup=reply_markup)

def level_one(update, context):
query = update.callback_query
keyboard = []
for button_text in data[query.data]:
keyboard.append([InlineKeyboardButton(button_text, callback_data=button_text)])
reply_markup = InlineKeyboardMarkup(keyboard)
query.edit_message_text('Выберите кнопку 2 уровня:', reply_markup=reply_markup)

def level_two(update, context):
query = update.callback_query
query.edit_message_text('Вы выбрали кнопку {} уровня'.format(query.data))

def main():
updater = Updater('TOKEN', use_context=True)
dp = updater.dispatcher
dp.add_handler(CommandHandler('start', start))
dp.add_handler(CallbackQueryHandler(level_one))
dp.add_handler(CallbackQueryHandler(level_two))
updater.start_polling()
updater.idle()

if __name__ == '__main__':
main()

Наше меню имеет два уровня, ключи для первого уровня - '1' и '2'. Для каждого из этих ключей определены три кнопки для второго уровня. При выборе первого уровня, пользователь получает серию кнопок второго уровня. Когда пользователь выбирает кнопку второго уровня, бот отвечает сообщением о выборе кнопки и возвращает пользователя назад к первому уровню.

Как настроить кнопки и сделать многоуровневое меню

Как сделать меню для Телеграм Бота на Python

Как сделать меню для Телеграм Бота

Telegram бот на python - курс по созданию бота по документации aiogram и Telegram API

Многоуровневая клавиатура как у BotFather в Телеграм для чат бота - multi-level inline keyboard

Телеграм бот: многоуровневое меню, отправка аудиофайла.

BLGPG-3E4E2EFD7F56-24-09-20-00

Новые материалы: