Skip to content

Latest commit

 

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Production-Ready Telegram Bot Template

Python Aiogram Dishka Taskiq Docker Ruff

Production-ready шаблон Telegram-бота с чистой архитектурой, DI-контейнером Dishka, фоновыми задачами Taskiq и полной изоляцией слоев.


⚡ Быстрый старт

1. Клонирование и настройка переменных

git clone https://github.com/DesignerDeadTomorrow/telegram-bot-template.git
cd telegram-bot-template

cp .env.example .env
# Заполните .env своими ключами

2. Запуск через Docker Compose

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

Releases

Packages

Contributors

Languages