МНОГОУРОВНЕВОЕ МЕНЮ 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
Телеграм бот: многоуровневое меню, отправка аудиофайла.
Новые материалы:
- Python голосование по большинству
- Flask наследование шаблонов
- Медиана в numpy
- Хахаев практикум по алгоритмизации и программированию на python
- Как запустить python на mac os
- Java или python
- Python selenium обход капчи
- Как проверить установлен ли pip python 3
- Info метод python
- Макграт майк python программирование для начинающих
- Python сортировка списка словарей
- Python метод apply
- Документирование python кода