61 lines
2.5 KiB
Markdown
61 lines
2.5 KiB
Markdown
# Session Status Bot
|
||
|
||
Бот на `aiogram 3` для управления статусами актеров и обновления одного поста в канале.
|
||
|
||
## Что умеет
|
||
|
||
- показывает пользователю только его кнопку актера
|
||
- после выбора актера сразу дает один экран кнопок:
|
||
`Открыть`, `Закулисье`, `Задержка`, `Антракт`, `Своя фраза`
|
||
- статусы применяются сразу с шаблонной фразой
|
||
- `Своя фраза` меняет текст для текущего статуса
|
||
- обновляет сообщение канала в `MarkdownV2`
|
||
- умеет хранить шаблон поста через `/post`
|
||
|
||
## Команды
|
||
|
||
- `/start` или `/panel` — открыть панель
|
||
- `/help` — справка
|
||
- `/refresh` — перерисовать пост в канале
|
||
- `/cancel` — сбросить текущий ввод
|
||
- `/post` — сохранить шаблон поста
|
||
|
||
## Шаблон поста
|
||
|
||
Шаблон должен содержать:
|
||
|
||
- `{{actors}}` — сюда бот вставляет блок актеров
|
||
- `{{hidden_link}}` — необязательно, сюда бот вставляет скрытую ссылку для превью
|
||
|
||
Если `{{hidden_link}}` не указан, но в [config/actors.json](/c:/Users/admin/Desktop/pidoras/config/actors.json) заполнен `hidden_link_url`, бот добавит скрытую ссылку в начало сам.
|
||
|
||
Важно: если просто переслать уже оформленный Telegram-пост, Telegram не гарантирует точное восстановление исходного `MarkdownV2`. Надежнее отправлять шаблон как обычный текст или реплаем на текстовый пост.
|
||
|
||
## Настройка
|
||
|
||
1. Установить зависимости:
|
||
|
||
```powershell
|
||
uv sync
|
||
```
|
||
|
||
2. Заполнить `.env`.
|
||
|
||
3. Проверить [config/actors.json](/c:/Users/admin/Desktop/pidoras/config/actors.json):
|
||
|
||
- `hidden_link_url` — ссылка для скрытого превью
|
||
- `phrases` — шаблонные фразы под статусы
|
||
- `operator_user_id` или `operator_user_ids` — кто может менять статус
|
||
|
||
## Запуск
|
||
|
||
```powershell
|
||
uv run python main.py
|
||
```
|
||
|
||
## Проверка
|
||
|
||
```powershell
|
||
uv run --with pytest python -m pytest
|
||
```
|