3.2 KiB
3.2 KiB
Session Status Bot
Бот на aiogram 3 для управления статусами персонажей через кнопки и автоматического обновления одного сообщения в канале.
Что умеет
- показывает пользователю только его кнопку, если он привязан по
operator_user_idилиoperator_user_ids - позволяет админам видеть все кнопки
- после выбора персонажа предлагает статус:
open,backstage,delay,rest - после выбора статуса все основные действия доступны кнопками: шаблон, без фразы, своя фраза, назад
- обновляет заданное сообщение в канале через
edit_message_text - рендерит пост как HTML с кликабельными ссылками
- хранит текущее состояние в
data/state.json
Настройка
- Установите зависимости:
uv sync
- Заполните
.envпо примеру из[.env.example](/c:/Users/admin/Desktop/pidoras/.env.example).
Обязательные переменные:
BOT_TOKEN— токен ботаCHANNEL_ID— ID канала, где лежит обновляемое сообщениеCHANNEL_MESSAGE_ID— ID сообщения в каналеADMIN_IDS— список Telegram user id через запятую
- Отредактируйте
[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— шаблонные фразы под каждый статус
Запуск
uv run python main.py
Команды
/startили/panel— открыть панель/help— показать справку/refresh— принудительно перерисовать сообщение канала/cancel— сбросить текущий ввод и вернуться к панели
Как это работает
- Пользователь пишет
/start. - Бот показывает доступные кнопки персонажей.
- После выбора персонажа бот показывает кнопки статусов.
- После выбора статуса бот показывает кнопки вариантов фразы.
- Если выбрать
Своя фраза, бот ждет одно текстовое сообщение. - После выбора бот редактирует сообщение в канале.
Проверка
Тест рендера:
uv run --with pytest python -m pytest