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

This commit is contained in:
2026-04-02 20:36:20 +07:00
parent ef40fc25ee
commit c286039df7
5 changed files with 405 additions and 77 deletions

View File

@@ -7,8 +7,9 @@
- показывает пользователю только его кнопку, если он привязан по `operator_user_id` или `operator_user_ids`
- позволяет админам видеть все кнопки
- после выбора персонажа предлагает статус: `open`, `backstage`, `delay`, `rest`
- после выбора статуса просит фразу для публикации
- после выбора статуса все основные действия доступны кнопками: шаблон, без фразы, своя фраза, назад
- обновляет заданное сообщение в канале через `edit_message_text`
- рендерит пост как HTML с кликабельными ссылками
- хранит текущее состояние в `data/state.json`
## Настройка
@@ -45,15 +46,21 @@ uv sync
uv run python main.py
```
## Команды
- `/start` или `/panel` — открыть панель
- `/help` — показать справку
- `/refresh` — принудительно перерисовать сообщение канала
- `/cancel` — сбросить текущий ввод и вернуться к панели
## Как это работает
1. Пользователь пишет `/start`.
2. Бот показывает доступные кнопки персонажей.
3. После выбора персонажа бот показывает кнопки статусов.
4. После выбора статуса бот просит ввести фразу.
5. Введенная фраза сохраняется и бот редактирует сообщение в канале.
Если отправить точку `.` вместо текста, бот возьмет шаблонную фразу из `config/actors.json`.
4. После выбора статуса бот показывает кнопки вариантов фразы.
5. Если выбрать `Своя фраза`, бот ждет одно текстовое сообщение.
6. После выбора бот редактирует сообщение в канале.
## Проверка