Инструменты и боты для экосистемы MTL (aiogram).
Проект следует принципам Clean Architecture с адаптацией под Telegram‑бота:
- Delivery:
routers/(handlers) иmiddlewares/(db/app_context/throttling и т.п.). - Application:
services/— прикладные сервисы и use‑cases. Входная точка DI —services/app_context.py. - Domain:
shared/domain/— сущности и статусы (например,SpamStatus,AdminStatus). - Infrastructure:
db/(SQLAlchemy репозитории) иshared/infrastructure/database/(модели и Alembic). - Utilities/Integrations:
other/— утилиты, внешние сервисы, Telegram‑хелперы.
Важно: статус спама пользователя хранится в BotUsers.user_type и читается через SpamStatusService.
- Установите зависимости:
uv sync. - Скопируйте
.env.exampleв.envи заполните обязательные значения. - Запустите бота:
uv run python start.py.
- Подготовьте конфигурацию окружения (
.env). Его использует и приложение, и Alembic. - Соберите образы:
docker compose build. - Запустите стек:
docker compose up -d. - Первым делом стартует сервис
migrations: он применитalembic upgrade headи завершится. - После успешного применения миграций автоматически стартует основной сервис
bot, а также вспомогательныеpostgresиredis. - Для просмотра логов используйте
docker compose logs -f bot.
Для запуска тестов используется uv:
uv run pytest -qПодробнее — TESTING.md.
- Остановить стек:
docker compose down. - Перезапустить бота:
docker compose restart bot. - Ручной прогон миграций (при необходимости):
docker compose run --rm migrations.
Перед запуском в production убедитесь, что значения в .env соответствуют боевой инфраструктуре и что доступ к PostgreSQL и Redis ограничен.