Your AI powered learning assistant

aiogram 3 - Телеграм бот на python #3 Роутеры, организация проекта, команды

Intro

00:00:00

Практическое руководство демонстрирует разработку Telegram-бота с использованием новейшего фреймворка Python. В нем делается упор на эффективном структурировании проекта и фильтрации событий за счет точного управления временными метками. Основываясь на первоначальном изучении документации, этот подход ориентирован на практическую реализацию с четкими навигационными указаниями, представленными в виде подробных временных меток.

Правильное хранение токена

00:00:31

В содержании объясняется, как защитить токены, переместив их из основного кода в отдельный файл конфигурации. Подход предполагает создание файла на Python (например, config.py), который содержит токен и другие вспомогательные значения, такие как IP-адреса и номера портов базы данных. Затем токен импортируется обратно в основной код с помощью инструкции import, что обеспечивает его сохранность при развертывании кода на сервере.

Env переменные

00:01:44

Оптимизация конфигурации с помощью переменных среды Специальная библиотека Python используется для моделирования серверной среды в локальной системе, используя переменные среды вместо традиционных конфигурационных файлов. Создается обычный текстовый файл, в котором токены и связанные с ними переменные записываются точно, без дополнительных кавычек или пробелов. Исходный конфигурационный файл удаляется, что гарантирует единообразное считывание сценарием значений из операционной системы как для локальных, так и для серверных настроек.

Автоматизированный поиск переменных среды и проверка бота Скрипт автоматически находит файл конфигурации, используя специализированную функцию поиска в установленной библиотеке. Затем он использует модуль операционной системы для извлечения значений переменных, таких как токен, в точности как указано в файле. Для запуска бота выполняется тестовая команда, подтверждающая правильность загрузки и использования переменных среды.

Роутеры aiogram и типы обновлений (событий)

00:05:21

Фильтрация обновлений с помощью диспетчера и маршрутизатора в Aiogram В Aiogram используется четкое разделение между диспетчером и маршрутизаторами для управления фильтрацией обновлений и опросом. Диспетчер представлен как основной механизм маршрутизации, который фильтрует входящие обновления с помощью таких средств оформления, как dispatcher.message. Маршрутизаторы еще больше улучшают этот процесс, применяя фильтры для конкретных событий на начальном этапе обработки обновлений. Такой дизайн проясняет взаимодействие между кодом бота и серверами Telegram, обеспечивая при этом оптимизированный подход к управлению событиями.

Обработка различных типов событий Telegram Обновления Telegram включают в себя множество событий, включая сообщения, отредактированные сообщения, публикации в каналах и запросы на обратный вызов с помощью встроенных кнопок. Каждое обновление представляет собой отдельное действие пользователя, будь то отправка текста, изображений, стикеров или других мультимедийных материалов. Механизмы фильтрации фиксируют эти различные типы событий, гарантируя, что только запланированные события запускают определенные действия в коде. Этот структурированный подход учитывает широкий спектр взаимодействий, делая обработку событий гибкой и эффективной.

allowed updates - только допустимы обновления

00:08:52

Выборочная обработка Повышает эффективность работы Бота Бот настроен на получение только определенных обновлений из Telegram, которые включают в себя сообщения пользователей, отредактированные сообщения и конкретные запросы на звонки. Такой выборочный подход предотвращает обработку системой посторонних обновлений, которые могут привести к перегрузке скрипта. Передавая настроенный список разрешенных типов обновлений, бот эффективно фильтрует и обрабатывает только необходимую информацию.

Адаптация фильтров обновления для пользовательских обработчиков событий При интеграции дополнительных обработчиков событий список разрешенных обновлений должен быть соответствующим образом обновлен, чтобы обеспечить учет всех соответствующих событий. Система предназначена для обработки только тех типов обновлений, которые явно определены, что обеспечивает гибкость в управлении новыми типами событий. Такая тщательная синхронизация сохраняет производительность, гарантируя, что бот обрабатывает только запланированные обновления.

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

00:11:18

Проект реструктурирован, чтобы избежать путаницы, путем отделения точки входа от специализированных функций, таких как обработка событий, управление с клавиатуры и операции с базой данных. Основной скрипт, называемый "App", служит центральным контроллером, в то время как дополнительные модули размещены в специальных папках для наглядности. Например, в папке "обработчики" хранятся определенные сценарии событий, например, для взаимодействия с пользователем, что гарантирует, что по мере увеличения числа обработчиков код остается организованным и масштабируемым.

Подключение роутера

00:13:34

Единая конфигурация маршрутизатора и диспетчера Приложение централизует свою логику маршрутизации, объединяя базовый маршрутизатор с расширенным диспетчером, образуя единую систему обработки событий. Диспетчер функционирует как основной интерфейс, предоставляя методы для запуска бота и фильтрации событий. Он легко принимает дополнительные процессоры и фильтры для расширения функциональности. Организованные файловые структуры обеспечивают эффективное управление необходимым импортом и переменными среды.

Включение модульного маршрутизатора и организация кода Модульная стратегия реализуется путем динамического включения одного или нескольких маршрутизаторов с использованием таких методов, как "включить маршрутизатор" или "включить маршрутизаторы". Основные инструкции по импорту для типов и конфигураций маршрутизаторов переносятся в основной файл конфигурации для обеспечения согласованности. Этот метод поддерживает гибкую интеграцию отдельных модулей обработки событий, сохраняя при этом чистоту кода. Такой подход упрощает добавление дополнительных правил обработки и фильтрации без ущерба для структуры системы.

Тестирование потока событий и определение приоритетов фильтров Тестирование подтверждает, что фильтры событий выстраиваются в определенном порядке, при этом начальная команда, такая как "Start", обрабатывается главным маршрутизатором-диспетчером, прежде чем последующие маршрутизаторы обработают ее. Последовательность важна, поскольку идентичные фильтры в разных модулях могут привести к конфликтам, активируя только первый попавшийся. Тщательная проверка на соответствие документации и иллюстрациям гарантирует, что события обрабатываются должным образом. Такая тщательная систематизация гарантирует надежную обработку команд во всей системе.

Команды. Фильтр Command

00:18:20

Настройка диспетчера с фильтрацией команд Настройка начинается с привязки диспетчера к механизму фильтрации, который различает типы событий. Импортируется класс фильтрации команд, который определяет, какие команды будут обрабатываться ботом, что обеспечивает фундаментальный диалог между пользователем и ботом. Команда запуска по умолчанию обрабатывается с помощью этой платформы, гарантируя, что только назначенные команды активируют определенные реакции.

Настройка фильтров для ответа на команды меню Импортирован дополнительный фильтр для обработки дополнительных команд, таких как меню, без использования косой черты с префиксом, благодаря автоматическому параметру префикса. Бот настроен на то, чтобы отвечать на команду меню, отправляя пользователю текст приветствия и клавиатуру меню. Тестирование настройки подтверждает, что пользовательский обработчик команд прекрасно работает в более широкой системе обработки команд.

Индивидуальное задание

00:20:50

В подробном руководстве описано, как интегрировать настраиваемое меню команд в интерфейс бота. Процесс включает в себя доступ к настройкам бота через опцию "Редактировать бота" и использование раздела "Редактировать команды" меню для ввода кратких шаблонов команд и описаний. Встроенные команды, такие как раздел "О магазине" или "бот", позволяют расширить интерактивную функциональность за счет творческой импровизации. В следующем материале мы подробнее рассмотрим внедрение пользовательских фильтров маршрутизатора для улучшения функциональности.