Введение 0:00 Приветствие от Сурена. Объяснение темы видео: работа с Telegram-ботом на Python и онлайн-кнопками. Упоминание о телеграм-канале для обсуждения программирования.
Создание кнопок с фиксированными числами 1:04 Создание клавиатуры с кнопкой для генерации случайного числа. Добавление кнопок с фиксированными числами через колбек-фабрику. Определение класса `FixedRandomNumberCallbackData` как наследника `CallbackData`.
Настройка свойств кнопки 1:58 Импорт `CallbackData` и указание префикса. Объявление свойств кнопки: `number: int`. Возможность указания сепаратора вместо двоеточия.
Генерация случайных чисел и сохранение в колбек-дате 2:56 Генерация случайных чисел с помощью `RandomInt`. Сохранение случайных чисел в колбек-дате с помощью метода `pack`. Проверка максимальной длины колбек-даты 64 байта.
Создание второй кнопки 4:48 Создание второй кнопки с текстом «hidden». Проверка отображения кнопок в Telegram-боте.
Обработка нажатий на кнопки 6:35 Добавление обработчика нажатий на кнопки. Использование фильтра `CallbackData.filter` для обработки запросов. Получение данных из кнопки через аннотацию `CallbackData.set`.
Завершение обработки запросов 8:17 Добавление строки для отображения структуры колбек-даты. Обработка всех запросов по кнопке.
Перезапуск бота и тестирование кнопок 8:42 Перезапускаем бот и возвращаемся в Telegram. Нажимаем на кнопки с фиксированным числом, например, «рендом на 58». Добавляем «шоу аллерт тру» для отображения уведомлений. Устанавливаем «кейч-тайм» на 30 секунд для отладки.
Использование фильтров для поиска чисел 9:42 Используем магический фильтр `f` для поиска нужного числа или числа в диапазоне. Добавляем обработчик для числа 66, чтобы возвращать другой ответ. Создаём отдельный хендлер для логики обработки.
Обработка «джек-пота» 10:41 В тексте ответа пишем «джек-пот» и добавляем эмодзи. Фильтруем данные с помощью `f.numb == 66`. Перезапускаем бот и проверяем работу кнопки.
Валидация данных и использование префиксов 12:33 Валидируем данные с помощью аннотаций. Указываем префиксы для разделения действий по группам. Используем помощник для упаковки и распаковки данных.
Создание enum для параметров 13:04 Создаём enum `renderNumAction` с значениями `dice` и `model`. Импортируем enum из `enum`. Создаём класс `renderNumCallbackData` с префиксом `renderNum`.
Применение enum в обработчиках 15:13 Заменяем константы на `renderNumCallbackData` в обработчиках. Фильтруем данные по `renderNumAction.dice` и `renderNumAction.model`. Сохраняем изменения и перезапускаем бот для проверки.
Преимущества использования префиксов 17:02 Префиксы обеспечивают уникальность данных. Можно выносить префиксы в отдельные настройки для дополнительной безопасности. В кнопки можно складывать несколько полей данных, соблюдая лимит в 64 байта.
Хранение данных о товарах в кнопке 17:43 Данные о товарах будут храниться в базе данных, но некоторые данные можно закодировать на уровне кнопки. Пример данных: название и цена товара. Добавление нового обработчика в `user_com` для вызова `shop_comment`.
Создание клавиатуры для кнопок 18:29 Получение обычного сообщения и отправка клавиатуры с сообщением. Создание модуля `shop_keyboard` и объявление новой клавиатуры. Использование `inline_keyboard_builder` для создания клавиатуры.
Добавление кнопок на клавиатуру 19:04 Использование `callback_data` для передачи данных в кнопки. Объявление класса `shop_actions` с методами `product` и `address`. Добавление кнопок `show_product` и `my_address` на клавиатуру.
Обработка кнопок в боте 21:49 Регистрация роутера в `callback_handlers`. Обработка запроса на кнопку `my_address` с использованием фильтра. Исправление проблемы с фильтрацией запросов.
Обработка второго экшена 25:38 Добавление обработки второго экшена для отображения списка товаров. Создание новой клавиатуры `product_keyboard`. Добавление кнопки `back_to_root` для возврата на главную страницу.
Вывод товаров на клавиатуру 29:05 Использование цикла `for` для создания списка товаров. Добавление информации о товарах в кнопки клавиатуры. Генерация индексов для товаров с помощью `enumerate`.
Завершение настройки клавиатуры 30:02 Распаковка списка товаров и добавление информации о товарах в кнопки. Создание индексов для товаров с помощью `enumerate` и параметра `start`.
Создание класса ProductCallbackData 30:32 Объявляем новый класс ProductCallbackData, наследующий CallbackData. Добавляем свойства: ID, Name, Price. Указываем префикс для удобства работы.
Объявление действий 31:29 Создаём класс ProductAction с свойствами: details, update, delete. В действии на кнопку указываем Action: ProductAction.details.
Обработка действий в Telegram 32:28 Добавляем обработчик для действий в ShoppingKeyboard. Объявляем RouterCallbackQuery с фильтром по товарам. Запрашиваем детали товара через ProductAction.details.
Формирование текста сообщения 33:16 Объявляем переменную messageText для построения текста сообщения. Используем помощник markdown для сборки текста. Включаем ID, Title и Price товара в текст сообщения.
Создание клавиатуры для деталей товара 35:57 Создаём клавиатуру ProductDetailsKeyboard. Добавляем кнопку для возврата к списку товаров. Создаём кнопки для обновления и удаления товара.
Передача данных в кнопки 36:52 Передаём информацию о товаре в кнопку обновления. Выбираем между явной передачей данных и распаковкой объекта. Исключаем ненужные поля или явно указываем необходимые.
Создание кнопок обновления и удаления 38:26 Копируем код для создания кнопки обновления. Создаём аналогичную кнопку для удаления товара. Используем цикл for для создания списка пар label, action.
Добавление кнопок в клавиатуру 39:22 Добавляем две кнопки: «Апдейт» и «Делит». Изменяем текст и действие кнопок. Используем клавиатуру для ответа, передавая объект «продакт дитейлс кейборд».
Обработка кнопок в Telegram 40:19 Нажимаем на кнопку «Таблетт» и получаем информацию о товаре. Возвращаемся к списку товаров через кнопку «Бэкту продакс». Добавляем обработчики для кнопок «Апдейт» и «Делит».
Обработка кнопки «Апдейт» 41:17 Создаём обработчик для кнопки «Апдейт». Редактируем клавиатуру с помощью метода «кол точка бот эдит месседж реплай марка». Передаём информацию по товару в функцию «билд апдейт продакт кейборд».
Создание клавиатуры для обновления 42:15 Создаём функцию «билд апдейт продакт кейборд» для создания клавиатуры. Добавляем кнопки «Назад» и «Апдейт» в клавиатуру. Указываем колбек дата для обработки действий.
Обработка кнопки «Назад» 44:09 Создаём кнопку «Назад» с указанием колбек дата и экшна. Прокидываем информацию о товаре в кнопку. Проверяем работу кнопок в Telegram.
Применение колбек дата фабрики 46:03 Обсуждаем удобство использования колбек дата фабрики для временных данных. Приводим пример использования для ручной модерации пользователей. Подчёркиваем преимущества работы с колбек дата как с Python объектами.
Заключение 47:00 Подводим итоги использования колбек дата фабрики. Делимся впечатлениями от работы с колбек дата. Приглашаем к обсуждению в Telegram-чате и на Boosty.