🔮 Magic AIOgram 3.x [ 2 ] | Работа с клавиатурой (Reply/Inline) / Пагинация / Фабрика коллбэков

YOUTUBE · 01.12.2025 04:47

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

Введение

0:01
  • Приветствие и начало второго урока по Python.
  • Объявление темы урока: создание и обработка клавиатуры.

Комментарии и класс CommentStart

0:40
  • Обсуждение использования класса CommentStart для обработки команды «старт».
  • Импорт класса CommentStart из пакета fess.
  • Упоминание о параметрах класса CommentStart и призыв к зрителям делиться знаниями в комментариях.

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

1:24
  • Создание файла keyboard_spive для отдельного кода клавиатуры.
  • Импорт необходимых классов из пакета types: ReplyKeyboardMarkup, KeyboardButton, LineKeyboardMarkup, InlineKeyboardButton.
  • Объяснение назначения каждого класса: ReplyKeyboardMarkup — клавиатура под полем ввода, KeyboardButton — кнопки для клавиатуры, LineKeyboardMarkup — клавиатура под сообщениями, InlineKeyboardButton — кнопки для inline-клавиатуры.

Настройка клавиатуры

2:19
  • Определение переменной main_keyboard для основной клавиатуры.
  • Вызов класса ReplyKeyboardMarkup и передача аргументов.
  • Создание списка кнопок для клавиатуры с помощью класса KeyboardButton.
  • Пример настройки кнопок: текст «смайлики» и «стрелочка вниз».

Организация кнопок

3:14
  • Объяснение использования двух списков для организации кнопок по рядам.
  • Первая группа кнопок будет на первом ряду.

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

3:21
  • Добавление второго ряда кнопок.
  • Работа с пагинацией сообщений при нажатии на кнопку «Смайлики».
  • Использование инлайновой клавиатуры для ссылок.
  • Настройка размера кнопок с помощью параметра `is_touch_keyboard`.

Параметры клавиатуры

4:19
  • Параметр `van_time_keyboard` скрывает клавиатуру после первого использования.
  • Параметр `input_field_placeholder` отображает текст в поле ввода.
  • Параметр `selective` активирует клавиатуру только для вызывающего пользователя.

Прикрепление клавиатуры к сообщению

5:19
  • Импорт клавиатуры и её прикрепление к сообщению с помощью параметра `reply_markup`.
  • Создание нескольких рядов кнопок на клавиатуре.
  • Обработка текста кнопок в отдельном хендлере.

Обработка текста кнопок

6:16
  • Проверка текста кнопок с помощью декоратора `message`.
  • Перевод текста в нижний регистр с помощью метода `lower`.
  • Создание асинхронной функции для обработки каждой кнопки.

Обработка ссылок

7:12
  • Проверка текста ссылки и вывод следующего сообщения.
  • Создание инлайновой клавиатуры для ссылок.
  • Примеры ссылок: YouTube и Telegram каналы.

Специальные кнопки

9:02
  • Обработка специальных кнопок: геолокация, контакт, викторина, голосование.
  • Настройка параметров кнопок: `re_location`, `re_contact`, `re_poll`.
  • Импорт класса `keyboard_button_poll` для создания викторин и голосований.

Работа с билдерами

10:53
  • Импорт класса `reply_keyboard_builder` и `inline_keyboard_builder`.
  • Создание функции для работы с билдерами.
  • Пример создания калькулятора на онлайн-кнопках с передачей `callback_data`.

Введение в билдер

12:13
  • Билдер удобен для создания сложных структур кнопок, например, калькулятора.
  • Пример создания калькулятора: переменная `items` содержит элементы кнопок.
  • Методы `a-just` и `a-size` позволяют управлять количеством кнопок в ряду.

Методы билдера

13:10
  • Методы `add`, `row` и `button` встроены в билдер.
  • Метод `button` создаёт отдельную кнопку.
  • Цикл с генератором упрощает создание кнопок.

Создание кнопки «назад»

14:05
  • Создание кнопки «назад» для перехода в главное меню.
  • Настройка размера кнопок с помощью `resizeKeyboardToTrue`.

Настройка количества кнопок в ряду

15:09
  • Метод `a-just` позволяет контролировать количество кнопок в ряду.
  • Пример настройки: первый ряд — четыре кнопки, второй — четыре и так далее.

Работа с инлайн-кнопками

16:07
  • Пример работы с инлайн-кнопками: ссылки, геолокация, отправка контакта.
  • Создание кнопки «создать викторину».

Фабрика колбеков для пагинации

17:07
  • Импорт класса `CallbackData` и создание класса `Pagination`.
  • Создание функции `paginator` для пагинации.
  • Использование `inlineKeyboardButton` для создания инлайн-кнопок.

Реализация пагинации

20:00
  • Возврат клавиатуры с помощью `return builder.asMark`.
  • Настройка количества кнопок в ряду с помощью `a-size`.

Обработка смайликов

21:02
  • Создание списка смайликов и их текстов.
  • Вывод смайликов и текстов с помощью форматирования.

Завершение пагинации

22:00
  • Вызов функции `paginator` для пагинации.
  • Установка колбек-хендлера для обработки пагинации.

Передача фильтра

22:37
  • Использование метода filter класса Pagination для обработки кнопок «вперёд» и «назад».
  • Наследование от класса CallbackData позволяет обрабатывать две кнопки в одном хендлере.

Обработка кнопок в отдельных хендлерах

23:25
  • Обращение к свойству action класса MagicFilter для сравнения действий «преф» и «некст».
  • Использование метода _iterable для обработки обеих кнопок в одной функции.

Передача параметров и аннотаций

24:22
  • Передача параметра кол и аннотации CallbackQuery из пакета types.
  • Получение CallbackData через фабрику колбеков.
  • Обращение к атрибутам action и page для получения текста и номера страницы.

Логика нумерации страниц

25:21
  • Создание переменных page_num и page для управления нумерацией страниц.
  • Проверка условий для перехода на предыдущую и следующую страницу.

Изменение сообщения

27:48
  • Изменение текста сообщения с помощью метода edit_text.
  • Подстановка переменной page вместо индекса 0 для динамического изменения текста.

Вывод клавиатуры и обработка ошибок

29:44
  • Вывод клавиатуры через функцию Pagination.
  • Обработка ошибок с помощью метода suppress из библиотеки contextlib.
  • Завершение обработки кнопки с помощью метода end_callback.

Обработка нескольких сообщений

31:36
  • Создание декоратора для обработки нескольких сообщений.
  • Использование метода lower для получения текста в любом регистре.
  • Пример обработки сообщений «хай», «хэллоу», «привет».