Кнопки под сообщением в Telegram | бот на aiogram | Inline Keyboard Markup & Inline Button

YOUTUBE · 22.11.2025 07:00

Ключевые темы и таймкоды

Введение в онлайн-клавиатуру

0:00
  • Обсуждение работы с кнопками в Telegram-боте на библиотеке aiogram.
  • Обзор кнопок, которые заменяют клавиатуру и отправляют сообщения.
  • Упоминание дополнительных возможностей: отправка номера телефона или геолокации.

Особенности онлайн-клавиатуры

0:26
  • Онлайн-клавиатура привязана к сообщению и продолжает отображаться при скроллинге чата.
  • При нажатии на кнопку отправляется запрос, который нужно обработать.
  • Возможность выполнения различных действий по кнопкам.

Документация и код

1:14
  • Переход по ссылке на документацию Bot API.
  • Объяснение передачи параметров онлайн-клавиатуры: текст, URL, callbackData.
  • Добавление нового действия для отправки сообщения с клавиатурой.

Создание обработчика команды

1:50
  • Создание обработчика команды в UserCommands или BaseComments.
  • Обработка запроса на сообщение с текстом «инфо».
  • Объявление онлайн-клавиатуры в сообщении.

Разметка онлайн-клавиатуры

3:05
  • Импорт объектов онлайн-клавиатуры и кнопок из aiogram.
  • Создание разметки онлайн-клавиатуры с помощью онлайн-клавиатуры и строк кнопок.

Создание кнопок со ссылками

4:07
  • Создание кнопки с текстом «канал» и эмодзи.
  • Указание URL ссылки на канал.
  • Добавление кнопки в строку и список строк.

Тестирование кнопок

5:06
  • Запуск бота и проверка отображения кнопок.
  • Нажатие на кнопку и переход по ссылке.
  • Возможность указания ссылок на другие ресурсы в Telegram.

Добавление кнопок на внешние ресурсы

8:08
  • Создание кнопки со ссылкой на GitHub.
  • Подтверждение перехода на внешний ресурс в Telegram.
  • Открытие браузера и просмотр страницы.

Опциональные поля и callbackData

10:02
  • Объяснение использования callbackData как уникального идентификатора кнопки.
  • Отправка события с callbackData при нажатии на кнопку.
  • Необходимость обратной связи от бота при нажатии на кнопку.

Обработка колбек-запросов

11:15
  • Колбек-запрос содержит информацию о сообщении, отправителе и данных, вложенных в кнопку.
  • Необходимо ответить на колбек-запрос, используя анс колбек кверри.
  • Важно указать колбек-верри-айди и передать необходимые параметры.

Создание новой кнопки

12:10
  • Создаём новую кнопку с колбек-дейта вместо URL.
  • Выносим код в отдельный модуль для организации онлайн-клавиатур.
  • Используем киборт билдер для генерации клавиатуры.

Перенос функции

13:02
  • Переносим функцию билд инфо киборт в отдельный модуль.
  • Рефакторим код для упрощения обработки.
  • Проверяем работу новой функции.

Добавление новой кнопки в клавиатуру

14:34
  • Создаём переменную для хранения колбек-дата.
  • Добавляем новую кнопку с текстом «рендом сайт» и колбек-дата.
  • Проверяем работу кнопки в Telegram.

Обработка колбек-запроса

15:31
  • Кнопка ждёт ответа от сервера, показывая анимацию.
  • Тайм-аут ожидания ответа обычно составляет 5 секунд.
  • Изучаем документацию для понимания ограничений колбек-запросов.

Создание роутеров

17:04
  • Создаём новый пакет колбек-хендлерс для обработки кнопок.
  • Импортируем роутер из aiogram и создаём новый роутер.
  • Подключаем роутер к основному роутеру.

Обработка запроса

20:40
  • Фильтруем запросы по значению колбек-дата.
  • Отвечаем на колбек-запрос с помощью колбек-верри анс.
  • Передаём случайную ссылку в ответе.

Проверка ответа

22:29
  • Перезапускаем бота и проверяем реакцию Telegram.
  • Telegram не обрабатывает ответ из-за неправильной ссылки.
  • Возвращаемся к документации для понимания ограничений колбек-запросов.

Использование имени бота

24:02
  • Создание переменной `bot_name` для хранения имени бота.
  • Получение кэшированной информации о боте через `bot.get_name`.
  • Подстановка имени бота в ответ на запрос.

Обработка запроса

25:32
  • Ожидание ссылки на старт бота с дополнительным текстом.
  • Вывод текста запроса пользователя через `print`.
  • Демонстрация работы кнопки «старт» с сгенерированным случайным числом.

Генерация случайных чисел

27:12
  • Добавление кнопки для генерации случайного числа.
  • Настройка иконки и диапазона чисел от 1 до 6.
  • Обработка колбек-запроса для генерации случайного числа.

Кэширование ответов

30:58
  • Настройка времени кэширования ответов на кнопку.
  • Проверка работы кэширования на стороне клиента Telegram.
  • Пример генерации случайных чисел с кэшированием.

Модальные окна

32:45
  • Создание кнопки для генерации случайного числа в модальном окне.
  • Обработка колбек-запроса с `show_alert = true`.
  • Демонстрация работы модальных окон с генерацией случайных чисел.

Обновление сообщений

34:45
  • Настройка времени кэширования для обновления сообщений.
  • Проверка работы кэширования при обновлении сообщений.
  • Упоминание о возможном обновлении сообщения при нажатии на колбек-кнопку.

Переименование переменных и создание новой клавиатуры

35:37
  • Переименовываем переменную `randomSiteCallbackData` в `randomNumUpdateCallbackData`.
  • Создаём новую онлайн-клавиатуру `actionsKeyboard` путём копирования файла.
  • Удаляем лишнее из исходной клавиатуры.

Импорт и настройка кнопок

36:31
  • Импортируем переменные из `infoKeyboard` в `actionsKeyboard`.
  • Настраиваем кнопку `randomNumber` на новой клавиатуре.
  • Используем `keyboardBuilder` для создания разметки клавиатуры.

Использование `keyboardBuilder`

37:26
  • Применяем `keyboardBuilder` для создания кнопки `randomNumber`.
  • Указываем текст кнопки и callback-функцию `randomUpdateCallbackData`.

Настройка роутера и отображение клавиатуры

38:23
  • Добавляем роутер для обработки команд `actions`.
  • Возвращаем сообщение с клавиатурой при нажатии на кнопку.
  • Перезапускаем бота для отображения новой клавиатуры.

Обработка нажатия на кнопку

40:03
  • Переносим обработку нажатия на кнопку в новый обработчик `actionsKeyboardCallbackHandlers`.
  • Редактируем сообщение при нажатии на кнопку с помощью `editMessage`.
  • Отвечаем на нажатие кнопки пустым текстом.

Добавление новой кнопки

41:57
  • Добавляем новую кнопку с текстом `generateRandomNumber` под отредактированное сообщение.
  • Сохраняем изменения и перезапускаем бот.

Регистрация роутера и проверка работы

43:38
  • Регистрируем роутер для обработки нажатий на кнопку.
  • Проверяем работу кнопки: при нажатии генерируется случайное число и добавляется новая кнопка.

Заключение

45:33
  • Подводим итоги работы с онлайн-кнопками.
  • Упоминаем о возможности создания отдельного ролика по взаимодействию с кнопками.
  • Благодарим спонсоров и призываем подписываться на соцсети и задавать вопросы в телеграм-чате.