aiogram-bot-auditor
Skill3 starsChanged 3 months agoMITView on GitHub
Telegram-бот на aiogram 3.x падает, молчит или дублирует ответы — найти причину и укрепить: необработанный flood-control (429/TelegramRetryAfter), второй polling-инстанс (409 Conflict), блокировка event loop, MemoryStorage в проде, отсутствие graceful shutdown и идемпотентности, структура Router/middlewares/FSM, небезопасный webhook. Используй когда пользователь говорит «бот запущен, на /help не реагирует», «бот падает/тормозит/дублирует», пишет или чинит aiogram-бота, настраивает FSM, middlewares, webhook или рассылку. Только aiogram 3.x. Сервис на сервере не поднимается вовсе — vps-ops.
In this repository25 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- advanced-seo-optimizerSkill
- agent-workflowSkill
- change-reviewSkill
- codebase-reconSkill
- dependency-auditorSkill
- django-auditSkill
- docs-generatorSkill
- fastapi-architectSkill
- git-commit-plannerSkill
- goal-pipelineSkill
- harness-engineeringSkill
- migration-safety-auditorSkill
- obsidianSkill
- postgres-performanceSkill
- python-project-auditSkill
- ratchet-loopSkill
- release-managerSkill
- sageSkill
- session-catchupSkill
- spec-writerSkill
- test-coverage-auditorSkill
- ui-dnaSkill
- vps-opsSkill
The file
Files
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). - Ревью диффа правок →
change-review; перед релизом →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 — формат отчёта.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

