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

Session Status Bot

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

Что умеет

  • показывает пользователю только его кнопку, если он привязан по operator_user_id
  • позволяет админам видеть все кнопки
  • после выбора персонажа предлагает статус: open, backstage, delay, rest
  • после выбора статуса просит фразу для публикации
  • обновляет заданное сообщение в канале через edit_message_text
  • хранит текущее состояние в 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 — Telegram user id человека, который может менять этот статус
  • phrases — шаблонные фразы под каждый статус

Запуск

uv run python main.py

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

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

Если отправить точку . вместо текста, бот возьмет шаблонную фразу из config/actors.json.

Проверка

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

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