Production-ready шаблон Telegram-бота с чистой архитектурой, DI-контейнером Dishka, фоновыми задачами Taskiq и полной изоляцией слоев.
git clone https://github.com/DesignerDeadTomorrow/telegram-bot-template.git
cd telegram-bot-template
cp .env.example .env
# Заполните .env своими ключамиcurl -fsSL https://get.docker.com | sudo sh
docker compose up -d- Clean Architecture & DIP: Строгое разделение ответственности между слоями (
core,infrastructure,app,modules). - Inversion of Control (Dishka): Полноценный DI-контейнер с четким разделением на
APP(синглтоны) иREQUESTскоупы. - Task Queue (Taskiq): Изолированный воркер для фоновых и тяжелых задач без блокировки главного Event Loop бота.
- Graceful Shutdown: Корректное закрытие сессий бота, сокетов Redis, соединений БД и DI-контейнера при остановке процесса.
- Smart Middleware Pipeline: Throttling-мидлварь работает на уровне
outer_middleware, не расходуя ресурсы на создание DB-сессий для спамеров. - Production-Ready Docker Setup: Многоэтапная сборка и изолированные сервисы для бота, воркера, PostgreSQL и Redis.
| Компонент | Технология |
|---|---|
| Framework | Aiogram 3.x |
| Dependency Injection | Dishka |
| Task Queue | Taskiq + Redis |
| Database & ORM | PostgreSQL 16 + SQLAlchemy 2.0 (AsyncIO) |
| Cache & FSM | Redis 7 + redis-py |
| Linter & Formatter | Ruff |
├── src/
│ ├── app/ # Точка сборки (Composition Root: bot.py, di.py)
│ ├── core/ # Ядро (Middlewares, протоколы, общие фильтры)
│ ├── infrastructure/ # Внешние адаптеры (DB, Redis, Broker, Config)
│ ├── modules/ # Бизнес-модули и фичи бота (handlers, services)
│ └── ui/ # Навигация и клавиатуры (генераторы Inline/Reply клавиатур, отдельные кнопки назад, меню навигации)
├── .dockerignore
├── .env.example
├── .gitignore
├── docker-compose.yml
├── dockerfile
└── requirements.txt