Руководство ГМа
Руководство описывает пользовательские сценарии бота и Web-панели для GM-Relay v1.7.0.
Кто управляет группой
При первом создании сессии в группе бот сохраняет автора как owner группы. Owner хранится в таблице group_managers с ролью Owner; историческое поле game_groups.gm_telegram_id остаётся для совместимости и миграций.
Owner может назначать помощников с ролью CoGm в Web Dashboard. Owner и co-GM могут создавать, отменять, удалять и переносить сессии, редактировать batch и поднимать игроков из листа ожидания. Только owner может добавлять или убирать co-GM.
Делегирование co-GM
На странице группы Web-панель показывает блок управления группой: owner, список co-GM и текущую роль пользователя. Чтобы добавить помощника, owner указывает Telegram ID, имя и при необходимости username. После сохранения co-GM видит эту группу на главной странице Web Dashboard и получает доступ к тем же операциям управления расписанием, что и owner.
Если co-GM больше не должен помогать с группой, owner удаляет его из того же блока. Снятие роли не удаляет игрока из таблицы players и не меняет его записи на игры.
Создание расписания
Команда:
/newsession
Название: Легенды Берега Мечей
Время: 15.05.2026 19:30
Время: 22.05.2026 19:00
Мест: 4
Ссылка: https://example.com/join
Поддерживаемые строки:
Название:— общий заголовок пачки игр.Время:— дата и время в МСК. Можно указать несколько строк.Мест:— необязательный лимит основного состава для каждой сессии в пачке.Ссылка:— ссылка для подключения к игре.
Если Мест: не указан, запись остаётся без лимита. Если указан лимит, бот показывает заполненность в формате Места: 2/4.
Запись игроков и лист ожидания
Игроки записываются через inline-кнопки вида На <дата> в сообщении расписания.
Поведение при записи:
- если мест достаточно, игрок попадает в основной состав со статусом RSVP
Pending; - если лимит заполнен, игрок попадает в
Лист ожиданияи не считается активным участником игры; - повторная запись отвечает, что игрок уже записан или уже находится в листе ожидания.
Игроки из листа ожидания не участвуют в RSVP, голосовании переноса и рассылке ссылки на игру, пока GM не поднимет их в основной состав.
Самостоятельный выход игрока
Игрок может снять запись кнопкой Выйти <дата> в сообщении расписания.
Поведение при выходе:
- если игрок был в основном составе, его запись удаляется из сессии;
- если игрок был в листе ожидания, он удаляется из очереди;
- если после выхода из основного состава есть свободное место и лист ожидания не пуст, бот автоматически переводит первого ожидающего в основной состав;
- после изменения бот перерисовывает сообщение расписания, чтобы список участников и очередь оставались актуальными.
Повышение из листа ожидания
Owner или co-GM может поднять первого игрока из очереди:
- в Telegram — кнопкой
Из ожидания (ГМ)в сообщении расписания; - в Web Dashboard — кнопкой
Из ожиданияв списке сессий.
Повышение возможно только если в основном составе есть свободное место. Если лимит заполнен, сначала увеличьте Мест: в Web-редактировании сессии. При самостоятельном выходе активного игрока первый ожидающий повышается автоматически.
Bulk-операции для batch в Web
На странице группы Web-панель показывает отдельный блок для каждой видимой пачки игр. Owner и co-GM могут:
- обновить общий
titleиlinkсразу у всех сессий batch; - выбрать режим уведомлений для игроков:
В группе и в личкуилиТолько в группе; - перенести всю пачку, задав новую первую дату и фиксированный шаг между играми в днях;
- клонировать batch на следующую неделю или следующий календарный месяц.
Редактирование title/link и перенос перерисовывают исходное Telegram-сообщение расписания. Клонирование создаёт новую пачку с новым batch_id, новым Telegram-сообщением и пустым составом игроков.
Режим В группе и в личку оставляет все групповые сообщения и дополнительно отправляет активным игрокам персональные уведомления в ЛС. Режим Только в группе отключает личные сообщения для batch, но не меняет публикацию в групповом чате.
Отмена и удаление
Отменить <дата> (ГМ)в сообщении расписания меняет статус сессии наCancelledи оставляет её в истории пачки./listsessionsпоказывает будущие сессии; если команду вызывает owner или co-GM, бот добавляет кнопки удаления.- Удаление физически удаляет сессию из БД. Если после удаления пачка пустая и была создана forum-тема, бот пытается удалить тему.
Перенос сессии
Перенос запускается кнопкой ⏰ (ГМ) в сообщении расписания.
Поток:
- Бот проверяет, что кнопку нажал owner или co-GM.
- Создаётся
reschedule_proposalsсо статусомAwaitingTime. - Инициатор переноса пишет 2-3 варианта нового времени и дедлайн обычным сообщением в чат.
- Если активных участников нет, бот переносит сессию сразу на первый предложенный вариант.
- Если активные участники есть, бот создаёт голосование с кнопкой для каждого варианта.
- Участники видят текущие результаты в Telegram-сообщении и могут менять голос до дедлайна.
- По дедлайну побеждает вариант с наибольшим числом голосов. Если голосов нет или есть ничья, перенос отклоняется.
- При успешном переносе бот сбрасывает RSVP активных участников в
Pending, очищаетconfirmation_message_idиlink_message_id, обновляет batch-сообщение и отправляет результат в ЛС при включённом DM-режиме.
Формат ввода:
25.04.2026 19:30
26.04.2026 18:00
Дедлайн: 25.04.2026 12:00
RSVP и ссылка на игру
За 24 часа до плановой сессии бот отправляет RSVP-сообщение активным участникам:
Будупереводит участника вConfirmed.Не смогупереводит участника вDeclined, а GM получает личное уведомление.
Когда все активные участники подтвердили участие, сессия переходит в Confirmed, группа и GM получают уведомления.
За 5 минут до подтверждённой сессии бот отправляет ссылку на подключение и список подтверждённых активных участников.
Если для batch включены личные уведомления, игроки дополнительно получают DM о RSVP за 24 часа, напоминание примерно за 1 час до старта, ссылку перед игрой, отмену и результат переноса. Если бот не может написать игроку в ЛС, отправка остальным участникам продолжается.
Web-панель
Web UI доступен после входа через Telegram Login Widget. Owner и co-GM могут:
- видеть свои Telegram-группы;
- открыть список предстоящих сессий группы;
- видеть заполненность и размер листа ожидания;
- редактировать название, время, ссылку и лимит мест;
- поднять первого игрока из листа ожидания, если есть свободное место;
- выполнять bulk-операции над batch: общий title/link, перенос пачки и клонирование на неделю или месяц.
- выбирать режим уведомлений batch: групповые сообщения с личными DM или только групповые сообщения.
Дополнительно owner может управлять списком co-GM на странице группы.
При сохранении отдельной сессии Web-панель обновляет запись в БД, отправляет уведомление в Telegram-группу и пытается перерисовать исходное сообщение расписания пачки. Bulk-операции обновляют исходное batch-сообщение, а clone публикует новое сообщение для новой пачки.