123
This commit is contained in:
64
README.md
Normal file
64
README.md
Normal 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
|
||||
```
|
||||
Reference in New Issue
Block a user