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
123
2026-04-02 18:04:04 +07:00
2026-04-02 20:36:20 +07:00
2026-04-02 20:36:20 +07:00
2026-04-02 20:36:20 +07:00
123
2026-04-02 18:04:04 +07:00
123
2026-04-02 18:04:04 +07:00
123
2026-04-02 18:04:04 +07:00
123
2026-04-02 18:04:04 +07:00
123
2026-04-02 18:04:04 +07:00
123
2026-04-02 18:04:04 +07:00
123
2026-04-02 18:04:04 +07:00
123
2026-04-02 18:04:04 +07:00
123
2026-04-02 18:04:04 +07:00
123
2026-04-02 18:04:04 +07:00
123
2026-04-02 18:04:04 +07:00
123
2026-04-02 18:04:04 +07:00
123
2026-04-02 18:04:04 +07:00
123
2026-04-02 18:04:04 +07:00
2026-04-02 20:36:20 +07:00
123
2026-04-02 18:04:04 +07:00

Session Status Bot

Бот на aiogram 3 для управления статусами персонажей через кнопки и автоматического обновления одного сообщения в канале.

Что умеет

  • показывает пользователю только его кнопку, если он привязан по operator_user_id или operator_user_ids
  • позволяет админам видеть все кнопки
  • после выбора персонажа предлагает статус: open, backstage, delay, rest
  • после выбора статуса все основные действия доступны кнопками: шаблон, без фразы, своя фраза, назад
  • обновляет заданное сообщение в канале через edit_message_text
  • рендерит пост как HTML с кликабельными ссылками
  • хранит текущее состояние в data/state.json

Настройка

  1. Установите зависимости:
uv sync
  1. Заполните .env по примеру из [.env.example](/c:/Users/admin/Desktop/pidoras/.env.example).

Обязательные переменные:

  • BOT_TOKEN — токен бота
  • CHANNEL_ID — ID канала, где лежит обновляемое сообщение
  • CHANNEL_MESSAGE_ID — ID сообщения в канале
  • ADMIN_IDS — список Telegram user id через запятую
  1. Отредактируйте [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 — сбросить текущий ввод и вернуться к панели

Как это работает

  1. Пользователь пишет /start.
  2. Бот показывает доступные кнопки персонажей.
  3. После выбора персонажа бот показывает кнопки статусов.
  4. После выбора статуса бот показывает кнопки вариантов фразы.
  5. Если выбрать Своя фраза, бот ждет одно текстовое сообщение.
  6. После выбора бот редактирует сообщение в канале.

Проверка

Тест рендера:

uv run --with pytest python -m pytest
Description
No description provided
Readme 239 KiB
Languages
Python 95.8%
Dockerfile 4.2%