65 lines
2.7 KiB
Markdown
65 lines
2.7 KiB
Markdown
# Session Status Bot
|
||
|
||
Бот на `aiogram 3` для управления статусами персонажей через кнопки и автоматического обновления одного сообщения в канале.
|
||
|
||
## Что умеет
|
||
|
||
- показывает пользователю только его кнопку, если он привязан по `operator_user_id` или `operator_user_ids`
|
||
- позволяет админам видеть все кнопки
|
||
- после выбора персонажа предлагает статус: `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` или `operator_user_ids` — 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
|
||
```
|