Перейти к содержимому
Digital Business BY · БЕЛАРУСЬ
НБ РБUSD3.0228EUR3.4879RUB0.0360PLN0.8027CNY0.4515Конвертер →
IT и стартапы

Raito: библиотека-плагин для aiogram, которая убирает повторяющийся код из Telegram-ботов

Разработчик вынес в открытую библиотеку всё, что приходилось копировать из проекта в проект: hot-reload, роли, пагинацию, FSM-сцены и троттлинг.

Казакевич Алексей
6 мин
Raito: библиотека-плагин для aiogram, которая убирает повторяющийся код из Telegram-ботов
Содержание · 3
  1. 01Что конкретно добавляет Raito
  2. 02Пагинация, FSM-сцены и диалоги
  3. 03Как подключить

Разработчик под ником Aidenable опубликовал на GitHub библиотеку Raito — плагин поверх aiogram3, который решает типовые задачи при разработке Telegram-ботов. Вместо того чтобы копировать одни и те же блоки кода между проектами, достаточно подключить одну зависимость.

Проект уже доступен с документацией на русском языке. Исходный код открыт: github.com/Aidenable/Raito.

Что конкретно добавляет Raito

Автор собрал в библиотеке функциональность, которой намеренно нет в aiogram — тот отвечает только за обёртку над Telegram Bot API. Raito берёт на себя всё остальное.

Hot-reload — пожалуй, самое востребованное улучшение. Раньше любое изменение кода требовало полного перезапуска бота. Теперь достаточно передать `production=False` при инициализации, и watchdog сам перезагрузит изменившиеся файлы.

Кастомные роутеры с приоритетами и динамической загрузкой. Можно задать `priority=9999` для хэндлеров со сложной фильтрацией или отключить автозагрузку роутера при старте (`autoload=False`) и включать его вручную командой `.rt load <name>` прямо из чата с ботом.

Автоматическая регистрация команд в слэш-меню. Достаточно пометить хэндлер декоратором `@rt.description("Описание")` — Raito сам соберёт список и передаст его в Telegram. Поддерживается i18n через `lazy_gettext`.

RBAC-роли из коробки. Система поддерживает встроенные роли `OWNER`, `ADMINISTRATOR`, `MODERATOR`, `DEVELOPER`, а также кастомные. Фильтрация в хэндлере выглядит лаконично:

```python @router.message(filters.Command("ban"), OWNER | ADMINISTRATOR | MODERATOR) async def ban(): ... ```

По умолчанию роли хранятся в памяти и сбрасываются при перезапуске. Для персистентности Raito предлагает JSONStorage, SQLiteStorage и PostgreSQLStorage — все три реализуют абстрактный класс `aiogram.BaseStorage`, поэтому их можно использовать и как основное хранилище FSM в самом aiogram.

Билдеры клавиатур в двух режимах. Статичный режим описывает разметку через вложенные списки строк — читается как таблица. Динамичный режим принимает параметры раскладки (`1, 2` — одна кнопка в первом ряду, две во втором) и строит клавиатуру через стандартный `InlineKeyboardBuilder`.

Пагинация, FSM-сцены и диалоги

Serverless-пагинация — одна из нетривиальных задач в боте. Большинство библиотек требуют внешнего хранилища. Raito обходится без него: состояние страницы кодируется прямо в `callback_data` по схеме `rt_p:<mode>:<name>:<page>:<total>:<limit>`, укладываясь в лимит Telegram в 64 символа.

Доступно пять режимов: `INLINE` (текст + inline-кнопки), `TEXT` (только текст с навигацией), `PHOTO` (медиа с подписью), `LIST` (текст в виде отформатированного списка) и `RICH` (новый формат rich-сообщений, требует aiogram ≥ 3.30.0).

FSM-сцены расширяют стандартный механизм aiogram: добавляется валидация данных через `SceneData` (Pydantic-модель) и явная навигация — `scene.next()`, `scene.retry()`, `scene.finish()`, `scene.goto()`. Это делает сложные анкеты и мастера настройки читаемыми и поддерживаемыми.

Диалоги (`wait_for`) — упрощённая альтернатива FSM для прототипов и ботов с низким DAU. Весь диалог описывается внутри одного хэндлера:

```python await message.answer("Enter username:") user = await raito.wait_for(state, F.text.regexp(r"@[\w]+")) ```

Автор честно предупреждает об ограничении: `wait_for` держит `asyncio.Future` и несовместим с `SimpleEventIsolation`. Для высоконагруженных ботов нужно использовать сцены.

Троттлинг настраивается как глобально для всего бота, так и на уровне отдельного хэндлера через `@rt.limiter(rate_limit=5.0, mode="user")`. Три режима: `user` (кулдаун на пользователя во всех чатах), `chat` (общий для чата) и `bot` (единый глобальный).

Как подключить

Инициализация занимает две строки поверх стандартного запуска бота:

```python raito = Raito(dispatcher, "src/handlers") await raito.setup() ```

Первый аргумент — диспетчер aiogram для dependency injection и регистрации роутеров. Второй — путь к папке с хэндлерами. Raito сканирует её автоматически, поэтому single-file архитектура не поддерживается: каждый роутер должен лежать в отдельном файле.

Для разработчиков, которые хотят получить доступ к `.rt`-командам (перезагрузка роутеров, управление ролями, список команд), достаточно передать свой Telegram ID: `Raito(developers=[12345678])`. Флаг `enable_dangerous_commands=True` дополнительно разблокирует `eval` и `bash` прямо из чата — удобно для отладки, но очевидно не для продакшена.

Lifespan-хуки реализованы в стиле FastAPI: всё до `yield` выполняется при старте, всё после — при остановке бота. Это удобно для регистрации команд, подключения к базе данных и graceful shutdown.

Для белорусских разработчиков, которые активно пишут Telegram-ботов для внутренних инструментов, автоматизации или как MVP-продукты, Raito может сократить время на бойлерплейт и сосредоточить усилия на бизнес-логике. Библиотека молодая, но уже покрывает большинство типовых задач, с которыми сталкивается любой бот-разработчик.

ПоделитьсяVK

Свежие новости

Все новости
OpenAI ужесточает безопасность разработки моделей после инцидента с Hugging Face
IT и стартапы

OpenAI ужесточает безопасность разработки моделей после инцидента с Hugging Face

OpenAI объявила о новых мерах безопасности при разработке и тестировании моделей. Поводом стал июльский инцидент с Hugging Face, когда модель вышла за пределы тренировочной среды через уязвимость в утилите установки пакетов.

Редакция
3 мин
Рынок роботов в США: заказы достигли $622 млн на фоне рекордных результатов производителей
IT и стартапы

Рынок роботов в США: заказы достигли $622 млн на фоне рекордных результатов производителей

Во втором квартале 2026 года северноамериканские компании заказали 8 940 роботов на $622 млн — рост выручки производителей составил 21,3% при увеличении числа единиц лишь на 4,3%. Производители — от Teradyne до ABB — фиксируют рекордные показатели.

Редакция
4 мин
OpenAI приостановила обучение модели Astra после побега ИИ-агентов из изолированной среды
IT и стартапы

OpenAI приостановила обучение модели Astra после побега ИИ-агентов из изолированной среды

OpenAI остановила часть тренировочных процессов для модели Astra и объявила о новых мерах безопасности. Поводом стал инцидент, при котором ИИ-агенты вышли за пределы изолированных сред и взломали Hugging Face — и компания не заметила этого неделями.

Редакция
4 мин
ФБР инвестирует $88 млн в AI-инфраструктуру и переходит на Gemini
IT и стартапы

ФБР инвестирует $88 млн в AI-инфраструктуру и переходит на Gemini

ФБР готово потратить до $88 млн на серверы и оборудование для расширения AI-мощностей. Бюро также намерено развернуть модель Gemini от Google на собственной инфраструктуре — с лицензией по выделенной ёмкости, а не по числу пользователей.

Редакция
3 мин
Google купил внутреннюю переписку обанкротившейся Spirit Airlines за $10 млн
IT и стартапы

Google купил внутреннюю переписку обанкротившейся Spirit Airlines за $10 млн

Google заплатил $10 млн за 100 млн писем, около 500 млн сообщений в Teams и 30 млн строк кода обанкротившейся Spirit Airlines. Это первый случай, когда внутренние операционные данные компании стали предметом конкурентных торгов на аукционе по банкротству.

Редакция
3 мин
Apple меняет комиссии для разработчиков в ЕС: новые ставки с октября 2025
IT и стартапы

Apple меняет комиссии для разработчиков в ЕС: новые ставки и структура

Apple вводит новую структуру комиссий для приложений в ЕС: от 5% для дистрибуции вне App Store до 26% для крупных разработчиков, использующих встроенную оплату Apple. Изменения вступают в силу с 1 октября.

Редакция
3 мин
Flock Safety создала ИИ-систему для полиции, которая отслеживает людей — не только номера
IT и стартапы

Flock Safety создала ИИ-систему для полиции, которая отслеживает людей — не только номера

Flock Safety годами уверяла, что её камеры не идентифицируют людей. Wired получил код новой ИИ-системы OS Investigate и выяснил: она делает именно это — строит досье, находит ассоциатов и ищет людей по поведенческим паттернам.

Редакция
6 мин