Aiogram bot auditor
Аудит и помощь по Telegram-ботам на aiogram 3.x: надёжность Telegram API, архитектура, деплой и тесты. Находит необработанный flood-control (429/TelegramRetryAfter), несколько polling-инстансов (409 Conflict), блокировку event loop, MemoryStorage в проде, отсутствие graceful shutdown и идемпотентности, проблемы структуры (Router/middlewares/FSM) и небезопасный webhook. Используй когда пользователь просит проверить или отревьюить бота, спрашивает «почему бот падает/тормозит/дублирует ответы», пишет или чинит aiogram-бота, настраивает FSM/middlewares/webhook/деплой или рассылку, или упоминает aiogram, TelegramRetryAfter, RedisStorage, polling/webhook. Только aiogram 3.x.From its SKILL.md
npx -y skills add goldenprofile/llm-skills --skill aiogram-bot-auditorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- reads credentialsReads from 1 credential source: `EnvironmentFile`.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
7.0 KB, ~1.7k tokens by cl100k_base, as published. Nobody here has run it
Aiogram Bot Auditor
Аудитор и помощник по Telegram-ботам на aiogram 3.x. Цель — поймать то, из-за чего бот в проде падает, тормозит, дублирует ответы, теряет состояние или попадает под флуд-бан, а также выправить структуру и тесты. По итогу — отчёт с уровнями риска и (по согласованию) правки.
Когда применять
Перед деплоем бота, при ревью PR, при жалобах «бот не отвечает / тормозит / дублирует / теряет
шаг диалога», при настройке рассылки, FSM, middlewares, webhook. Только aiogram 3.x — если код
на 2.x (executor, Dispatcher(bot), @dp.message_handler), сначала предупреди о
несовместимости и предложи миграцию на 3.x, не применяй 3.x-советы вслепую.
Контекст — установить ПЕРВЫМ делом
- Версия aiogram — подтверди 3.x (импорты
from aiogram import Router, F,dp.run_polling). - Запуск — polling (по умолчанию у владельца) или webhook. См. references/deploy.md.
- Storage FSM — MemoryStorage (только dev) или RedisStorage (прод). У владельца есть redis.
- Масштаб — есть ли рассылки/большая аудитория (тогда критичен flood-control и троттлинг).
- Инстансы — гарантирован ли один polling-процесс (две копии → 409 Conflict).
Процесс
- Собрать точки входа (
__main__, созданиеBot/Dispatcher,run_polling/webhook-setup), роутеры, middlewares, FSM, обработку ошибок, местаbot.send_*/рассылок, деплой-юнит. - Прогнать по чеклисту рисков (ниже) и справочникам.
- Классифицировать риск, объяснить почему ломается в проде именно у него.
- Предложить безопасную альтернативу.
- Отчёт по references/output-format.md; по согласованию — правки.
Уровни риска
- CRITICAL — бот не работает/недоступен в проде: две polling-копии (409), блокировка event loop (sync/CPU в хендлере), краш без graceful shutdown с потерей состояния.
- HIGH — рассылка без обработки
TelegramRetryAfter(429) иTelegramForbiddenError(бот заблокирован) → бан токена/потеря сообщений; MemoryStorage в проде (теряет FSM при рестарте); глобально не обработанныеTelegramAPIError. - MEDIUM — нет идемпотентности к повторной доставке апдейтов, нет таймаутов, токен/секреты
в репозитории,
allowed_updatesне включает нужные типы, монолит без роутеров/middlewares. - LOW — стиль, именование, мелкие улучшения.
Быстрый чеклист
- Гарантирован один polling-инстанс? (две копии → 409, апдейты теряются)
- Рассылка ловит
TelegramRetryAfterиTelegramForbiddenError, троттлит (≤~30 msg/s, ~1/s в чат)? - В хендлерах нет блокирующих/CPU-операций в event loop (sync-БД, requests, тяжёлые вычисления)?
- FSM на RedisStorage в проде, а не MemoryStorage?
- Есть graceful shutdown:
dp.shutdown, закрытиеbot.session, redis, пулов БД? allowed_updatesвключает нужные типы (callback_query,my_chat_memberи т.п.)?- Токен и секреты — из env/
EnvironmentFile, не в репозитории? - Хендлеры идемпотентны к повторной доставке (особенно платежи/побочные эффекты)?
- Webhook (если есть): проверяется
secret_token, за nginx+TLS,drop_pending_updatesосознанно?
Связь с библиотекой навыков
- Бот ходит в БД с миграциями → перед деплоем навык
migration-safety-auditor. - Аудит/написание тестов хендлеров и FSM →
test-coverage-auditor(см. также references/testing.md). - Ревью диффа правок →
techlead-ai; перед релизом →python-project-audit.
Справочники
- references/reliability.md — Telegram API: 429/flood-control, ошибки, троттлинг рассылок, таймауты, graceful shutdown, идемпотентность, single instance.
- references/architecture.md — Router, middlewares (outer/inner),
DI, FSM и storage, фильтры (
F), структура проекта, вынос бизнес-логики из хендлеров. - references/deploy.md — polling под systemd (основное), webhook+nginx (best practice), RedisStorage, секреты, логирование, healthcheck, один экземпляр.
- references/testing.md — pytest, мок
Bot,feed_update, тесты хендлеров и переходов FSM. - references/output-format.md — формат отчёта.
What ships with it: 5 files
23.6 KB alongside SKILL.md
references/
- architecture.md5.5 KB
- deploy.md5.1 KB
- output-format.md3.1 KB
- reliability.md5.9 KB
- testing.md4.0 KB