Telegram-бот для редакционного пайплайна Unlimy: принимает новость, генерирует пост, валидирует, отправляет на модерацию, публикует сразу или по расписанию.
- LLM-пайплайн:
generate -> rule-based validation -> critic pass. - Очистка пересланных сообщений от рекламных/ссылочных хвостов.
- Режимы публикации:
instant— публикация сразу в канал.queue— предпросмотр и модерация.
- Модерация через inline-кнопки:
- Опубликовать сейчас
- Перегенерировать
- Запланировать (интервалы + выбор дня/времени)
- Отмена
- Фоновый воркер отложенных публикаций.
- Команда
/scheduledдля просмотра и отмены запланированных постов. - PostgreSQL для истории и очередей.
- Redis для временных ключей, флагов и счётчиков.
main.py— точка входа, wiring зависимостей, scheduled worker.handlers.py— команды, сообщения, callback-сценарии.llm.py— генерация, валидация, критик.formatter.py— финальный рендер поста под Telegram HTML.db.py— слой доступа к PostgreSQL.redis_client.py— слой доступа к Redis.cleaner.py— очистка текста форвардов.keyboards.py— inline-клавиатуры.config.py— конфиг из переменных окружения.
- Установите зависимости:
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt- Поднимите локальные сервисы:
docker compose up -d- Создайте
.env:
cp .env.example .env- Запустите бота:
python main.pyBOT_TOKENOWNER_IDCHANNEL_IDOPENAI_API_KEYPG_DSNREDIS_URL
Дополнительно:
OPENAI_MODELOPENAI_MODEL_CRITICTEMPERATURE_GENERATORTEMPERATURE_CRITICMAX_TOKENS_GENERATORMAX_TOKENS_CRITICMAX_RETRIESPUBLISH_MODECUSTOM_STAR_EMOJI_ID
/start/help/mode/status/history/scheduled
- Клонируйте репозиторий:
git clone <repo-url> ~/unlimyFlow
cd ~/unlimyFlow- Подготовьте env:
cp deploy/.env.prod.example .env.prod- Запустите стек:
docker compose -f deploy/docker-compose.prod.yml --env-file .env.prod up -d --buildcp deploy/.env.staging.example .env.staging
docker compose -f deploy/docker-compose.staging.yml --env-file .env.staging up -d --build- CI:
.github/workflows/ci.yml- установка зависимостей
- проверка синтаксиса (
compileall)
- CD:
.github/workflows/cd.yml- деплой по SSH на VPS при push в
main
- деплой по SSH на VPS при push в
Secrets для GitHub:
VPS_HOSTVPS_USERVPS_SSH_KEYVPS_PORT(опционально)VPS_APP_DIR(опционально)
docker compose -f deploy/docker-compose.prod.yml --env-file .env.prod ps
docker compose -f deploy/docker-compose.prod.yml --env-file .env.prod logs -f bot