# 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 ```