init commit
This commit is contained in:
73
README.md
73
README.md
@@ -1,2 +1,73 @@
|
||||
# tg_post_min
|
||||
# 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 и т.п.) и секреты.
|
||||
|
||||
Reference in New Issue
Block a user