Files
Otkritiebot/README.md
Verum 02afbd23ec
Some checks failed
CI / Lint (ruff + mypy) (push) Failing after 34s
CI / Run tests (push) Has been skipped
CI / Docker build test (push) Successful in 13s
123
2026-04-02 18:04:04 +07:00

65 lines
2.7 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`
- позволяет админам видеть все кнопки
- после выбора персонажа предлагает статус: `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
```