docs(wiki): rewrite GM Guide for v2.7.2
@@ -0,0 +1,127 @@
|
|||||||
|
# Руководство ГМа
|
||||||
|
|
||||||
|
## Создание группы
|
||||||
|
|
||||||
|
### Telegram
|
||||||
|
- Напишите боту `/newgroup`.
|
||||||
|
- Укажите название группы.
|
||||||
|
- Группа создана — вы назначены owner.
|
||||||
|
|
||||||
|
### Веб-дашборд
|
||||||
|
- Зайдите на сайт / откройте Mini App.
|
||||||
|
- Нажмите "Создать группу".
|
||||||
|
- Укажите название, описание, платформу (Telegram / Discord / обе).
|
||||||
|
|
||||||
|
## Создание расписания (Batch)
|
||||||
|
|
||||||
|
### Telegram: `/newsession`
|
||||||
|
Формат сообщения:
|
||||||
|
```
|
||||||
|
Название: Название кампании
|
||||||
|
Ссылка: https://roll20.net/...
|
||||||
|
Картинка: https://... (опционально)
|
||||||
|
|
||||||
|
2026-05-25 19:00 5
|
||||||
|
2026-05-28 19:00 5
|
||||||
|
```
|
||||||
|
- Каждая строка: `YYYY-MM-DD HH:MM max_players`.
|
||||||
|
- `max_players` — максимальный состав (0 = без ограничений).
|
||||||
|
- `Картинка:` — обложка batch (опционально).
|
||||||
|
|
||||||
|
### Discord: `/newsession`
|
||||||
|
- Slash-команда `/newsession`.
|
||||||
|
- Заполните поля: title, dates (через запятую), max-players, link.
|
||||||
|
- Бот создаст batch и пришлёт подтверждение.
|
||||||
|
|
||||||
|
## Публикация расписания
|
||||||
|
|
||||||
|
### Telegram: `/listsessions`
|
||||||
|
- Показывает все сессии группы с inline-кнопками Join/Leave.
|
||||||
|
- Можно отменить (`❌`) или удалить (`🗑`) сессию.
|
||||||
|
- Можно инициировать перенос (`🔄`).
|
||||||
|
|
||||||
|
### Discord: `/listsessions`
|
||||||
|
- Публикует embed с расписанием и кнопками Join/Leave.
|
||||||
|
- При нажатии кнопок schedule message автоматически обновляется.
|
||||||
|
|
||||||
|
## Управление игроками
|
||||||
|
|
||||||
|
### Лист ожидания (Waitlist)
|
||||||
|
- Когда сессия заполнена — новые игроки попадают в waitlist.
|
||||||
|
- При выходе участника первый из waitlist автоматически поднимается в основной состав.
|
||||||
|
- В веб-дашборде ГМ может вручную поднять игрока из очереди.
|
||||||
|
|
||||||
|
### Co-GM
|
||||||
|
- Owner может назначить co-GM по Telegram ID в веб-дашборде.
|
||||||
|
- Co-GM может: создавать/редактировать сессии, управлять waitlist.
|
||||||
|
- Co-GM **не может** назначать других co-GM.
|
||||||
|
|
||||||
|
## Шаблоны кампаний
|
||||||
|
|
||||||
|
- В веб-дашборде: вкладка `Шаблоны`.
|
||||||
|
- Сохраните типовые параметры (title, max-players, link).
|
||||||
|
- Запустите новый batch из шаблона в один клик.
|
||||||
|
|
||||||
|
## Bulk-операции (Web Dashboard)
|
||||||
|
|
||||||
|
- **Обновить title/link**: применить к всему batch.
|
||||||
|
- **Сдвинуть даты**: перенести все сессии на +N дней.
|
||||||
|
- **Клонировать**: скопировать batch на следующую неделю или месяц.
|
||||||
|
|
||||||
|
## Переносы (Reschedule Voting)
|
||||||
|
|
||||||
|
### Как инициировать
|
||||||
|
- **Telegram**: в `/listsessions` нажмите `🔄` у сессии.
|
||||||
|
- **Discord**: в schedule message нажмите кнопку reschedule.
|
||||||
|
|
||||||
|
### Как работает
|
||||||
|
- Бот предлагает варианты новых дат/времени.
|
||||||
|
- Игроки голосуют кнопками.
|
||||||
|
- Голосование завершается по дедлайну (обычно через N часов).
|
||||||
|
- Побеждает вариант с наибольшим количеством голосов.
|
||||||
|
- Schedule message автоматически обновляется.
|
||||||
|
|
||||||
|
## RSVP (Подтверждения)
|
||||||
|
|
||||||
|
- За 24 часа до сессии бот отправляет запрос подтверждения.
|
||||||
|
- **Telegram**: inline-кнопки "Подтвердить" / "Отклонить".
|
||||||
|
- **Discord**: кнопки **Confirm** / **Decline**.
|
||||||
|
- GM получает итоги RSVP.
|
||||||
|
|
||||||
|
## Уведомления
|
||||||
|
|
||||||
|
### Режимы
|
||||||
|
- `В группе и в личку` — каждый игрок получает DM + групповое сообщение.
|
||||||
|
- `Только в группе` — только групповые сообщения.
|
||||||
|
|
||||||
|
### Типы уведомлений
|
||||||
|
- За 24ч: запрос подтверждения (RSVP).
|
||||||
|
- За 1ч: напоминание.
|
||||||
|
- За 5 мин: ссылка на игру.
|
||||||
|
- Отмена / перенос: уведомление об изменении.
|
||||||
|
|
||||||
|
## Статистика посещаемости
|
||||||
|
|
||||||
|
- Страница `/group/{id}/stats`.
|
||||||
|
- Показывает долю присутствия, пропуски, среднюю явку по каждому игроку.
|
||||||
|
- Считается только для завершённых сессий (статус `completed`).
|
||||||
|
|
||||||
|
## История изменений
|
||||||
|
|
||||||
|
- Страница `/session/{id}/history`.
|
||||||
|
- Аудит-лог: время, ссылка, название, участники, статус.
|
||||||
|
- Указывается актор и дата изменения.
|
||||||
|
|
||||||
|
## FAQ для ГМа
|
||||||
|
|
||||||
|
### Бот не отвечает
|
||||||
|
- Проверьте права администратора в группе.
|
||||||
|
- Попробуйте `/start`.
|
||||||
|
|
||||||
|
### Кнопки не работают
|
||||||
|
- Нужно право "Manage Messages".
|
||||||
|
- Подождите 1–2 минуты — возможно, rate limit.
|
||||||
|
|
||||||
|
### Mini App не открывается
|
||||||
|
- Должен быть HTTPS.
|
||||||
|
- Домен должен быть зарегистрирован в BotFather (`/setdomain`).
|
||||||
@@ -1,291 +0,0 @@
|
|||||||
# Руководство ГМа
|
|
||||||
|
|
||||||
Полное руководство по использованию GM-Relay v1.10.1.
|
|
||||||
|
|
||||||
## Содержание
|
|
||||||
|
|
||||||
1. [Управление группами](#управление-группами)
|
|
||||||
2. [Создание расписаний](#создание-расписаний)
|
|
||||||
3. [Управление сессиями](#управление-сессиями)
|
|
||||||
4. [Управление очередью](#управление-очередью)
|
|
||||||
5. [Игроки и статистика посещаемости](#игроки-и-статистика-посещаемости)
|
|
||||||
6. [Шаблоны кампаний](#шаблоны-кампаний)
|
|
||||||
7. [Уведомления игроков](#уведомления-игроков)
|
|
||||||
8. [Перенос сессий голосованием](#перенос-сессий-голосованием)
|
|
||||||
9. [Экспорт в календарь](#экспорт-в-календарь)
|
|
||||||
10. [Bulk-операции](#bulk-операции)
|
|
||||||
11. [Telegram Mini App](#telegram-mini-app)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Управление группами
|
|
||||||
|
|
||||||
### Назначение co-GM
|
|
||||||
|
|
||||||
Owner группы может назначить помощников через Web Dashboard:
|
|
||||||
1. Перейдите на страницу группы
|
|
||||||
2. В блоке «Управление группой» найдите раздел «Co-GM"
|
|
||||||
3. Введите Telegram ID, имя или username потенциального co-GM
|
|
||||||
4. Нажмите «Добавить co-GM»
|
|
||||||
|
|
||||||
Co-GM получает доступ к управлению сессиями, статистике и bulk-операциям, но не может назначать других co-GM.
|
|
||||||
|
|
||||||
### Передача ownership
|
|
||||||
|
|
||||||
В текущей версии передача ownership не поддерживается напрямую. Для смены owner обратитесь к администратору системы.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Создание расписаний
|
|
||||||
|
|
||||||
### Формат /newsession
|
|
||||||
|
|
||||||
```
|
|
||||||
/newsession
|
|
||||||
Название: Название кампании
|
|
||||||
Время: 25.05.2026 19:00
|
|
||||||
Мест: 4
|
|
||||||
Ссылка: https://discord.gg/invite-link
|
|
||||||
Картинка: https://example.com/cover.jpg
|
|
||||||
```
|
|
||||||
|
|
||||||
### Повторяющиеся сессии
|
|
||||||
|
|
||||||
Для регулярных кампаний используйте:
|
|
||||||
- `Игр: 6` — количество сессий
|
|
||||||
- `Интервал: 7` — шаг в днях между сессиями
|
|
||||||
|
|
||||||
Бот автоматически сгенерирует расписание на 6 недель с недельным интервалом.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Управление сессиями
|
|
||||||
|
|
||||||
### Статусы сессии
|
|
||||||
|
|
||||||
- `Scheduled` — запланирована, открыта запись
|
|
||||||
- `Confirmed` — подтверждена (достаточно ответов)
|
|
||||||
- `Cancelled` — отменена
|
|
||||||
- `Rescheduled` — перенесена
|
|
||||||
- `Completed` — завершена
|
|
||||||
|
|
||||||
### Редактирование
|
|
||||||
|
|
||||||
В Web Dashboard на странице сессии можно изменить:
|
|
||||||
- Название и описание
|
|
||||||
- Дату и время
|
|
||||||
- Количество мест
|
|
||||||
- Ссылку на игру
|
|
||||||
- Статус сессии
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Управление очередью
|
|
||||||
|
|
||||||
### Лист ожидания
|
|
||||||
|
|
||||||
Когда лимит мест исчерпан, новые игроки попадают в лист ожидания. При освобождении места первый ожидающий автоматически получает статус `Confirmed`.
|
|
||||||
|
|
||||||
### Ручное управление
|
|
||||||
|
|
||||||
Owner/co-GM может вручную повысить игрока из листа ожидания через:
|
|
||||||
- Web Dashboard → страница сессии → таблица игроков
|
|
||||||
- Telegram: `/listsessions` → кнопка ⬆️ у нужной сессии
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Игроки и статистика посещаемости *(новое в v1.10.1)*
|
|
||||||
|
|
||||||
### Обзор функционала
|
|
||||||
|
|
||||||
GM-Relay теперь предоставляет детальную статистику посещаемости для каждой группы. Это помогает ГМам принимать решения о составе, выявлять ненадёжных игроков и управлять листом ожидания более эффективно.
|
|
||||||
|
|
||||||
### Как открыть статистику
|
|
||||||
|
|
||||||
1. **Web Dashboard**: Перейдите на страницу группы → вкладка «📊 Статистика» или кнопка «Статистика посещаемости»
|
|
||||||
2. **Прямая ссылка**: `/groupstats/{groupId}`
|
|
||||||
|
|
||||||
### Что показывает статистика
|
|
||||||
|
|
||||||
Таблица со следующими колонками:
|
|
||||||
|
|
||||||
| Игрок | Всего сессий | Подтверждено | Отказов | Без ответа | В листе ожидания | Рейтинг посещаемости |
|
|
||||||
|-------|-------------|--------------|---------|------------|------------------|---------------------|
|
|
||||||
| `@player1` | 24 | 20 | 2 | 2 | 0 | 🟢 83% |
|
|
||||||
| `@player2` | 24 | 12 | 6 | 6 | 2 | 🟡 50% |
|
|
||||||
| `@player3` | 24 | 4 | 2 | 18 | 5 | 🔴 17% |
|
|
||||||
|
|
||||||
*Рейтинг = (Подтверждено / Всего сессий) × 100%*
|
|
||||||
|
|
||||||
### Цветовая индикация
|
|
||||||
|
|
||||||
- 🟢 **Зелёный (>80%)** — надёжный игрок, стабильно подтверждает участие
|
|
||||||
- 🟡 **Жёлтый (50-80%)** — средняя надёжность, возможно стоит уточнять планы
|
|
||||||
- 🔴 **Красный (<50%)** — ненадёжный игрок, стоит держать в резерве или брать в основной состав только при наличии свободных мест
|
|
||||||
|
|
||||||
### Как данные собираются
|
|
||||||
|
|
||||||
- **Всего сессий** — количество сессий группы, которые были запланированы/подтверждены/завершены (исключаются отменённые)
|
|
||||||
- **Подтверждено** — игрок ответил RSVP со статусом `Confirmed`
|
|
||||||
- **Отказов** — игрок ответил RSVP со статусом `Declined`
|
|
||||||
- **Без ответа** — RSVP статус остался `Pending` (не ответил)
|
|
||||||
- **В листе ожидания** — количество раз, когда игрок был добавлен в waitlist
|
|
||||||
|
|
||||||
### Важные правила расчёта
|
|
||||||
|
|
||||||
1. **Отменённые сессии**: Если сессия отменена или перенесена, подтвердившие игроки **не влияют** на рейтинг посещаемости. Это справедливо — ГМ может отменить игру по своим причинам.
|
|
||||||
|
|
||||||
2. **Автоматическое обновление**: Статистика пересчитывается в реальном времени при каждом изменении RSVP статуса или сессии.
|
|
||||||
|
|
||||||
3. **Исключение игрока из расчёта**: Можно скрыть игрока из статистики (например, если он покинул группу).
|
|
||||||
|
|
||||||
### Практическое применение
|
|
||||||
|
|
||||||
**Сценарий 1: Выбор на замену**
|
|
||||||
ГМ видит, что основной игрок отказался. Проверяет статистику и берёт в основной состав игрока из waitlist с самым высоким рейтингом.
|
|
||||||
|
|
||||||
**Сценарий 2: Формирование постоянной партии**
|
|
||||||
ГМ решает, кого включить в постоянный состав группы. Игроки с 🟡 идут в резерв, с 🟢 — в основной состав.
|
|
||||||
|
|
||||||
**Сценарий 3: Предупреждение проблемы**
|
|
||||||
Игрок `@player3` с рейтингом 17% и 18 «без ответа». ГМ решает поговорить с ним или перестать включать в основной состав.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Шаблоны кампаний
|
|
||||||
|
|
||||||
### Создание шаблона
|
|
||||||
|
|
||||||
1. Перейдите в раздел «Шаблоны» в левом меню
|
|
||||||
2. Нажмите «Новый шаблон»
|
|
||||||
3. Заполните:
|
|
||||||
- Название шаблона
|
|
||||||
- Ссылка на игру (по умолчанию)
|
|
||||||
- Количество мест
|
|
||||||
- Интервал между сессиями
|
|
||||||
- Режим уведомлений
|
|
||||||
4. Сохраните
|
|
||||||
|
|
||||||
### Использование шаблона
|
|
||||||
|
|
||||||
На странице группы:
|
|
||||||
1. Выберите шаблон из выпадающего списка
|
|
||||||
2. Укажите начальную дату
|
|
||||||
3. Нажмите «Создать из шаблона»
|
|
||||||
|
|
||||||
Бот сгенерирует batch сессий согласно параметрам шаблона.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Уведомления игроков
|
|
||||||
|
|
||||||
### Режимы уведомлений
|
|
||||||
|
|
||||||
**«В группе и в личку»** — все важные события дублируются в личные сообщения игроков:
|
|
||||||
- RSVP за 24ч до сессии
|
|
||||||
- Напоминание за 1ч
|
|
||||||
- Ссылка на игру перед стартом
|
|
||||||
- Отмена/перенос
|
|
||||||
|
|
||||||
**«Только в группе»** — уведомления только в групповой чат.
|
|
||||||
|
|
||||||
### Проблемы с личными сообщениями
|
|
||||||
|
|
||||||
Если игрок заблокировал бота или не начал диалог, бот:
|
|
||||||
- Записывает ошибку в лог
|
|
||||||
- Продолжает отправку остальным игрокам
|
|
||||||
- Помечает игрока в статистике как «нет личных сообщений»
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Перенос сессий голосованием
|
|
||||||
|
|
||||||
### Инициация голосования
|
|
||||||
|
|
||||||
1. Выполните `/listsessions`
|
|
||||||
2. Нажмите кнопку `⏰` у нужной сессии
|
|
||||||
3. Отправьте варианты нового времени и дедлайн:
|
|
||||||
|
|
||||||
```
|
|
||||||
25.05.2026 19:00
|
|
||||||
26.05.2026 19:00
|
|
||||||
Дедлайн: 25.05.2026 12:00
|
|
||||||
```
|
|
||||||
|
|
||||||
### Требования
|
|
||||||
|
|
||||||
- Дедлайн должен быть в будущем
|
|
||||||
- Дедлайн раньше первого предложенного времени
|
|
||||||
- Минимум 2, максимум 3 варианта
|
|
||||||
|
|
||||||
### Результаты
|
|
||||||
|
|
||||||
- Бот создаёт голосование с inline-кнопками
|
|
||||||
- Игроки голосуют, могут менять выбор до дедлайна
|
|
||||||
- По дедлайну бот выбирает вариант с большинством голосов
|
|
||||||
- При ничьей или отсутствии голосов — перенос отклоняется
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Экспорт в календарь
|
|
||||||
|
|
||||||
### Формат .ics
|
|
||||||
|
|
||||||
Команда `/exportcalendar` генерирует файл для импорта в:
|
|
||||||
- Google Calendar
|
|
||||||
- Apple Calendar (iCal)
|
|
||||||
- Яндекс Календарь
|
|
||||||
- Outlook
|
|
||||||
|
|
||||||
### Что попадает в файл
|
|
||||||
|
|
||||||
- Все запланированные и подтвержденные сессии
|
|
||||||
- Название, время, ссылка на игру
|
|
||||||
- Описание с составом игроков
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Bulk-операции
|
|
||||||
|
|
||||||
### Доступные операции
|
|
||||||
|
|
||||||
На странице группы доступны:
|
|
||||||
|
|
||||||
1. **Обновить title/link** — массовое изменение названия и ссылки у всех сессий batch
|
|
||||||
2. **Перенести batch** — сдвинуть все сессии на фиксированный срок
|
|
||||||
3. **Клонировать** — создать копию batch на новую неделю/месяц
|
|
||||||
4. **Изменить режим уведомлений** — переключить между «В группе и в личку» / «Только в группе»
|
|
||||||
|
|
||||||
### Безопасность
|
|
||||||
|
|
||||||
Все bulk-операции требуют подтверждения (модальное окно). После выполнения Telegram-сообщение batch автоматически обновляется.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Telegram Mini App
|
|
||||||
|
|
||||||
### Запуск
|
|
||||||
|
|
||||||
1. Нажмите кнопку меню бота (или `/start` → «Открыть dashboard»)
|
|
||||||
2. Dashboard откроется внутри Telegram, без дополнительной авторизации
|
|
||||||
3. Интерфейс адаптирован под мобильные телефоны с учётом safe-area
|
|
||||||
|
|
||||||
### Функционал
|
|
||||||
|
|
||||||
Mini App поддерживает весь функционал Web Dashboard:
|
|
||||||
- Просмотр и редактирование сессий
|
|
||||||
- Управление очередью и составом
|
|
||||||
- Запуск шаблонов и bulk-операций
|
|
||||||
- Просмотр статистики посещаемости
|
|
||||||
- Голосования за перенос
|
|
||||||
|
|
||||||
### Fallback-вход
|
|
||||||
|
|
||||||
Если автоматическая авторизация не сработала:
|
|
||||||
1. Нажмите кнопку «Войти через Telegram»
|
|
||||||
2. Подтвердите вход в стандартном диалоге Telegram
|
|
||||||
3. Dashboard откроется в том же WebView
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
*Документация актуальна для версии v1.10.1. Обновлено: 7 мая 2026.*
|
|
||||||
Reference in New Issue
Block a user