Go to file
MpakobecEx 10b48c77a7 Первоначальная версия 2026-10-16 01:00:57 +05:00
bot Первоначальная версия 2026-10-16 01:00:57 +05:00
common Первоначальная версия 2026-10-16 01:00:57 +05:00
images Первоначальная версия 2026-10-16 01:00:57 +05:00
sql Первоначальная версия 2026-10-16 01:00:57 +05:00
.env.example Первоначальная версия 2026-10-16 01:00:57 +05:00
.gitattributes Первоначальная версия 2026-10-16 01:00:57 +05:00
.gitignore Первоначальная версия 2026-10-16 01:00:57 +05:00
README.md Первоначальная версия 2026-10-16 01:00:57 +05:00
pyproject.toml Первоначальная версия 2026-10-16 01:00:57 +05:00
requirements-dev.txt Первоначальная версия 2026-10-16 01:00:57 +05:00
requirements.txt Первоначальная версия 2026-10-16 01:00:57 +05:00
start.sh Первоначальная версия 2026-10-16 01:00:57 +05:00

README.md

DispelEvilBot

Telegram-бот клана Dispel Evil (aiogram 3 + Postgres). Монорепозиторий: общий пакет common используется сервисом бота bot (и, в будущем, админкой admin).

Структура

common/     # общий пакет: config, logging, db, repositories, models, texts
bot/        # сервис бота: handlers, services, keyboards, notifications
sql/        # миграции Flyway (V__*.sql, R__*.sql)
images/     # статичные картинки (приветствие)

Требования

  • Python 3.12
  • PostgreSQL 14+

Настройка

cp .env.example .env
# заполнить BOT_TOKEN, DB_*, чаты и ADMIN_IDS
pip install -r requirements.txt

Запуск

APP_ENV=dev python -m bot     # dev
APP_ENV=prod python -m bot    # prod

или через ./start.sh (режим берётся из APP_ENV).

База данных

Схема управляется миграциями Flyway в sql/ (V__*.sql — versioned, R__*.sql — repeatable).

Разработка

pip install -r requirements-dev.txt
ruff check .
black --check .
pytest

Версионирование

  • Единый источник версии — common/version.py (__version__), текущая — 0.1.
  • Схема — SemVer-подобная (MAJOR.MINOR.PATCH); git-тег = v + версия (v0.1).
  • Docker-образы тегируются версией (Блок 2), события ClickHouse получают bot_version (Блок 3).
  • Выпуск: изменить common/version.py → коммит → аннотированный тег vX.Y → git push --tags.

Процесс работы с git

Проект ведётся в режиме trunk-based (один разработчик): основная работа — прямо в master.

  • master — интеграционная ветка, всегда в рабочем состоянии.
  • Релизы — аннотированные теги vX.Y (см. «Версионирование»).
  • Для крупных/рискованных изменений — короткая ветка feature/... и merge обратно в master.
  • Push в master → CI (Gitea Actions) собирает образ; авто-выката в прод нет.
  • Выкатка: сначала контур test, затем prod по подтверждению (см. Блок 2.5 плана).
  • Переход на «ветки + PR» и защиту ветки — когда появится второй разработчик.
# обычная работа
git add -A
git commit -m "feat: ..."
git push origin master

# выпуск релиза
# 1) поднять __version__ в common/version.py
git commit -am "chore: bump version to X.Y"
git tag -a vX.Y -m "Release vX.Y"
git push origin master --tags

Команды бота

/ник, /список, /кто, /инфо, /помощь, /очищение, /яички, /магазин, /рейтинг, /отписка, /подписка.

Переменные окружения

См. .env.example.