post message
This commit is contained in:
77
README.md
77
README.md
@@ -1,44 +1,51 @@
|
||||
# Session Status Bot
|
||||
|
||||
Бот на `aiogram 3` для управления статусами персонажей через кнопки и автоматического обновления одного сообщения в канале.
|
||||
Бот на `aiogram 3` для управления статусами актеров и обновления одного поста в канале.
|
||||
|
||||
## Что умеет
|
||||
|
||||
- показывает пользователю только его кнопку, если он привязан по `operator_user_id` или `operator_user_ids`
|
||||
- позволяет админам видеть все кнопки
|
||||
- после выбора персонажа предлагает статус: `open`, `backstage`, `delay`, `rest`
|
||||
- после выбора статуса все основные действия доступны кнопками: шаблон, без фразы, своя фраза, назад
|
||||
- обновляет заданное сообщение в канале через `edit_message_text`
|
||||
- рендерит пост как HTML с кликабельными ссылками
|
||||
- хранит текущее состояние в `data/state.json`
|
||||
- показывает пользователю только его кнопку актера
|
||||
- после выбора актера сразу дает один экран кнопок:
|
||||
`Открыть`, `Закулисье`, `Задержка`, `Антракт`, `Своя фраза`
|
||||
- статусы применяются сразу с шаблонной фразой
|
||||
- `Своя фраза` меняет текст для текущего статуса
|
||||
- обновляет сообщение канала в `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. Установите зависимости:
|
||||
1. Установить зависимости:
|
||||
|
||||
```powershell
|
||||
uv sync
|
||||
```
|
||||
|
||||
2. Заполните `.env` по примеру из `[.env.example](/c:/Users/admin/Desktop/pidoras/.env.example)`.
|
||||
2. Заполнить `.env`.
|
||||
|
||||
Обязательные переменные:
|
||||
3. Проверить [config/actors.json](/c:/Users/admin/Desktop/pidoras/config/actors.json):
|
||||
|
||||
- `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` — шаблонные фразы под каждый статус
|
||||
- `hidden_link_url` — ссылка для скрытого превью
|
||||
- `phrases` — шаблонные фразы под статусы
|
||||
- `operator_user_id` или `operator_user_ids` — кто может менять статус
|
||||
|
||||
## Запуск
|
||||
|
||||
@@ -46,26 +53,8 @@ uv sync
|
||||
uv run python main.py
|
||||
```
|
||||
|
||||
## Команды
|
||||
|
||||
- `/start` или `/panel` — открыть панель
|
||||
- `/help` — показать справку
|
||||
- `/refresh` — принудительно перерисовать сообщение канала
|
||||
- `/cancel` — сбросить текущий ввод и вернуться к панели
|
||||
|
||||
## Как это работает
|
||||
|
||||
1. Пользователь пишет `/start`.
|
||||
2. Бот показывает доступные кнопки персонажей.
|
||||
3. После выбора персонажа бот показывает кнопки статусов.
|
||||
4. После выбора статуса бот показывает кнопки вариантов фразы.
|
||||
5. Если выбрать `Своя фраза`, бот ждет одно текстовое сообщение.
|
||||
6. После выбора бот редактирует сообщение в канале.
|
||||
|
||||
## Проверка
|
||||
|
||||
Тест рендера:
|
||||
|
||||
```powershell
|
||||
uv run --with pytest python -m pytest
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user