Files
tg_post_min/README.md
2025-08-20 21:10:31 +09:00

74 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# TG Poster Bot
Бот для конструирования сообщений (текст + фото/видео/анимация) и отправки в выбранные группы/каналы.
Привязка чатов — вручную: пользователь добавляет бота в чат, затем в ЛС выполняет `/add_group` и вставляет chat_id или пересылает сообщение из чата.
## Стек
- Python 3.12
- python-telegram-bot v21
- SQLAlchemy 2.x
- Alembic
- Docker & Compose
- Drone CI pipeline
## Быстрый старт (локально с Docker)
1. Скопируйте `.env.example` в `.env` и заполните `BOT_TOKEN` (получите у @BotFather).
2. Запустите:
```bash
docker compose up --build
```
3. Бот сам применит миграции и запустится.
## Команды бота
- `/add_group` — привязать группу/канал (вставьте chat_id `-100...` или перешлите сообщение из чата)
- `/groups` — список привязанных чатов и признак права публикации
- `/new` — создать черновик, затем отправить его в выбранный чат
- `/help` — краткая справка
## Миграции
Alembic уже настроен. Первичная ревизия `0001_init` добавлена. В контейнере миграции запускаются автоматически в `entrypoint.sh`.
Локально:
```bash
# создать новую ревизию
alembic revision -m "feature: add something"
# применить миграции
alembic upgrade head
# откатиться
alembic downgrade -1
```
## Настройка Drone CI
- В секретах репозитория создайте:
- `docker_username`
- `docker_password`
- `docker_repo` (например, `registry.example.com/namespace/tg-poster-bot`)
- (Опционально для деплоя) `ssh_host`, `ssh_user`, `ssh_key`, `ssh_port`, и переменная окружения `DEPLOY_DIR` в настройках репозитория.
## Структура проекта
```
app/
bot/
handlers/ # команды и коллбэки
keyboards/ # inline-клавиатуры
messages.py # текстовые константы
db/
base.py # Base = declarative_base()
session.py # движок и SessionLocal
models.py # модели
migrations/ # alembic (env.py, versions/...)
main.py # точка входа
alembic.ini
docker-compose.yml
Dockerfile
entrypoint.sh
requirements.txt
```
## Заметки
- Для каналов бот должен быть администратором с правом «Публиковать сообщения».
- `DATABASE_URL` имеет приоритет перед параметрами `DB_*`.
- В проде используйте внешнюю БД (RDS и т.п.) и секреты.