123
Some checks failed
CI / Lint (ruff + mypy) (push) Failing after 34s
CI / Run tests (push) Has been skipped
CI / Docker build test (push) Successful in 13s

This commit is contained in:
2026-04-02 18:04:04 +07:00
commit 02afbd23ec
31 changed files with 2624 additions and 0 deletions

64
README.md Normal file
View File

@@ -0,0 +1,64 @@
# Session Status Bot
Бот на `aiogram 3` для управления статусами персонажей через кнопки и автоматического обновления одного сообщения в канале.
## Что умеет
- показывает пользователю только его кнопку, если он привязан по `operator_user_id`
- позволяет админам видеть все кнопки
- после выбора персонажа предлагает статус: `open`, `backstage`, `delay`, `rest`
- после выбора статуса просит фразу для публикации
- обновляет заданное сообщение в канале через `edit_message_text`
- хранит текущее состояние в `data/state.json`
## Настройка
1. Установите зависимости:
```powershell
uv sync
```
2. Заполните `.env` по примеру из `[.env.example](/c:/Users/admin/Desktop/pidoras/.env.example)`.
Обязательные переменные:
- `BOT_TOKEN` — токен бота
- `CHANNEL_ID` — ID канала, где лежит обновляемое сообщение
- `CHANNEL_MESSAGE_ID` — ID сообщения в канале
- `ADMIN_IDS` — список Telegram user id через запятую
3. Отредактируйте `[config/actors.json](/c:/Users/admin/Desktop/pidoras/config/actors.json)`.
Для каждого участника задаются:
- `key` — внутренний ключ
- `button_text` — текст на кнопке
- `display_name` — имя в посте
- `link` — ссылка на бота
- `operator_user_id` — Telegram user id человека, который может менять этот статус
- `phrases` — шаблонные фразы под каждый статус
## Запуск
```powershell
uv run python main.py
```
## Как это работает
1. Пользователь пишет `/start`.
2. Бот показывает доступные кнопки персонажей.
3. После выбора персонажа бот показывает кнопки статусов.
4. После выбора статуса бот просит ввести фразу.
5. Введенная фраза сохраняется и бот редактирует сообщение в канале.
Если отправить точку `.` вместо текста, бот возьмет шаблонную фразу из `config/actors.json`.
## Проверка
Тест рендера:
```powershell
uv run --with pytest python -m pytest
```