Files
Otkritiebot/README.md
Verum c286039df7
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
12312421
2026-04-02 20:36:20 +07:00

72 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Session Status Bot
Бот на `aiogram 3` для управления статусами персонажей через кнопки и автоматического обновления одного сообщения в канале.
## Что умеет
- показывает пользователю только его кнопку, если он привязан по `operator_user_id` или `operator_user_ids`
- позволяет админам видеть все кнопки
- после выбора персонажа предлагает статус: `open`, `backstage`, `delay`, `rest`
- после выбора статуса все основные действия доступны кнопками: шаблон, без фразы, своя фраза, назад
- обновляет заданное сообщение в канале через `edit_message_text`
- рендерит пост как HTML с кликабельными ссылками
- хранит текущее состояние в `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
```
## Команды
- `/start` или `/panel` — открыть панель
- `/help` — показать справку
- `/refresh` — принудительно перерисовать сообщение канала
- `/cancel` — сбросить текущий ввод и вернуться к панели
## Как это работает
1. Пользователь пишет `/start`.
2. Бот показывает доступные кнопки персонажей.
3. После выбора персонажа бот показывает кнопки статусов.
4. После выбора статуса бот показывает кнопки вариантов фразы.
5. Если выбрать `Своя фраза`, бот ждет одно текстовое сообщение.
6. После выбора бот редактирует сообщение в канале.
## Проверка
Тест рендера:
```powershell
uv run --with pytest python -m pytest
```