docs: update wiki for 1.9.6 session posts
@@ -37,6 +37,8 @@ GM-Relay состоит из нескольких .NET-проектов и об
|
|||||||
- callback `rsvp:<confirm|decline>:<sessionId>`;
|
- callback `rsvp:<confirm|decline>:<sessionId>`;
|
||||||
- обычные текстовые сообщения ГМа как ввод 2-3 вариантов времени и дедлайна для активного переноса.
|
- обычные текстовые сообщения ГМа как ввод 2-3 вариантов времени и дедлайна для активного переноса.
|
||||||
|
|
||||||
|
`/newsession` может прийти как обычный text message или как caption к прикреплённому фото. Вариант с caption используется для обложек batch-поста: `CreateSessionHandler` отправляет фото отдельным сообщением перед текстовым расписанием, чтобы обновления состава продолжали редактировать обычный `batch_message_id`.
|
||||||
|
|
||||||
Маршрутизация не использует reflection или assembly scanning.
|
Маршрутизация не использует reflection или assembly scanning.
|
||||||
|
|
||||||
## Планировщик
|
## Планировщик
|
||||||
@@ -57,7 +59,7 @@ GM-Relay состоит из нескольких .NET-проектов и об
|
|||||||
## Web UI
|
## Web UI
|
||||||
|
|
||||||
Blazor Server-приложение использует cookie auth и Telegram Login Widget.
|
Blazor Server-приложение использует cookie auth и Telegram Login Widget.
|
||||||
Начиная с `1.9.0`, тот же Web UI открывается как Telegram Mini App через `/miniapp`; в `1.9.3` основной вход по-прежнему проверяет Telegram `initData`, а fallback `/login` использует callback-mode Telegram Login Widget и endpoint `/auth/telegram-login`, чтобы cookie выставлялась внутри активного Mini App WebView без ручного закрытия и повторного открытия.
|
Начиная с `1.9.0`, тот же Web UI открывается как Telegram Mini App через `/miniapp`; в `1.9.6` основной вход по-прежнему проверяет Telegram `initData`, а fallback `/login` использует callback-mode Telegram Login Widget и endpoint `/auth/telegram-login`, чтобы cookie выставлялась внутри активного Mini App WebView без ручного закрытия и повторного открытия.
|
||||||
|
|
||||||
Основные сервисы:
|
Основные сервисы:
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# База данных
|
# База данных
|
||||||
|
|
||||||
GM-Relay **v1.9.3** использует PostgreSQL. Изменения схемы управляются DbUp-миграциями, встроенными в `GmRelay.Bot` как embedded resources.
|
GM-Relay **v1.9.6** использует PostgreSQL. Изменения схемы управляются DbUp-миграциями, встроенными в `GmRelay.Bot` как embedded resources.
|
||||||
|
|
||||||
## Миграции
|
## Миграции
|
||||||
|
|
||||||
@@ -17,7 +17,7 @@ GM-Relay **v1.9.3** использует PostgreSQL. Изменения схем
|
|||||||
- `V009__add_multi_option_reschedule_votes.sql` — дедлайн и выбранный вариант в `reschedule_proposals`, таблицы `reschedule_options` и `reschedule_option_votes` для голосования по нескольким слотам.
|
- `V009__add_multi_option_reschedule_votes.sql` — дедлайн и выбранный вариант в `reschedule_proposals`, таблицы `reschedule_options` и `reschedule_option_votes` для голосования по нескольким слотам.
|
||||||
- `V010__add_campaign_templates.sql` — таблица `campaign_templates` для сохранённых шаблонов кампаний и быстрого создания повторяющихся batch-расписаний из Web.
|
- `V010__add_campaign_templates.sql` — таблица `campaign_templates` для сохранённых шаблонов кампаний и быстрого создания повторяющихся batch-расписаний из Web.
|
||||||
|
|
||||||
Версия `1.9.3` не добавляет новую миграцию: исправление входа Telegram Mini App использует существующие cookie-auth и таблицы `players`, `group_managers`, `game_groups`, `sessions`, `campaign_templates` и `session_participants`. Новый endpoint `/auth/telegram-login` проверяет Telegram Login Widget HMAC и создаёт ту же cookie-сессию, не меняя схему БД.
|
Версия `1.9.6` не добавляет новую миграцию: обложка batch-поста отправляется в Telegram как отдельное photo message перед расписанием, а перенос GM-кнопок из основного сообщения в `/listsessions` использует существующие `batch_message_id`, `sessions`, `group_managers` и `session_participants`.
|
||||||
|
|
||||||
## Основные таблицы
|
## Основные таблицы
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Быстрый старт
|
# Быстрый старт
|
||||||
|
|
||||||
Эта страница описывает минимальный запуск текущей версии GM-Relay **v1.9.3**.
|
Эта страница описывает минимальный запуск текущей версии GM-Relay **v1.9.6**.
|
||||||
|
|
||||||
## Требования
|
## Требования
|
||||||
|
|
||||||
@@ -42,8 +42,8 @@ docker compose up -d
|
|||||||
Compose поднимает:
|
Compose поднимает:
|
||||||
|
|
||||||
- `db`: PostgreSQL 17 Alpine, БД `gmrelay_db`, пользователь `gmrelay`.
|
- `db`: PostgreSQL 17 Alpine, БД `gmrelay_db`, пользователь `gmrelay`.
|
||||||
- `bot`: образ `git.codeanddice.ru/toutsu/gmrelay-bot:1.9.3`.
|
- `bot`: образ `git.codeanddice.ru/toutsu/gmrelay-bot:1.9.6`.
|
||||||
- `web`: образ `git.codeanddice.ru/toutsu/gmrelay-web:1.9.3`.
|
- `web`: образ `git.codeanddice.ru/toutsu/gmrelay-web:1.9.6`.
|
||||||
|
|
||||||
Web UI будет доступен на `http://localhost:8080`, если `GMRELAY_WEB_PORT` не переопределён.
|
Web UI будет доступен на `http://localhost:8080`, если `GMRELAY_WEB_PORT` не переопределён.
|
||||||
|
|
||||||
@@ -73,12 +73,13 @@ dotnet run --project src/GmRelay.AppHost
|
|||||||
## Проверка после запуска
|
## Проверка после запуска
|
||||||
|
|
||||||
- `/start` должен ответить `GM-Relay Bot ready. Use /help for commands.` или показать кнопку `Открыть dashboard`, если настроен `TELEGRAM_MINI_APP_URL`.
|
- `/start` должен ответить `GM-Relay Bot ready. Use /help for commands.` или показать кнопку `Открыть dashboard`, если настроен `TELEGRAM_MINI_APP_URL`.
|
||||||
- `/help` должен показать формат `/newsession`, включая необязательную строку `Мест:` и быстрый повтор через `Игр:`/`Интервал:`.
|
- `/help` должен показать формат `/newsession`, включая необязательные строки `Мест:`/`Картинка:` и быстрый повтор через `Игр:`/`Интервал:`.
|
||||||
- В сообщении расписания у активной сессии должны быть кнопки записи и `Выйти`.
|
- Если создать `/newsession` с прикреплённым фото или строкой `Картинка: https://...`, бот должен отправить обложку перед сообщением расписания.
|
||||||
- Owner/co-GM может нажать `⏰ Перенести`, отправить 2-3 варианта времени и дедлайн; бот создаст голосование и применит победивший вариант по дедлайну.
|
- В основном сообщении расписания у активной сессии должны быть только кнопки записи и `Выйти`.
|
||||||
|
- Owner/co-GM вызывает `/listsessions`, нажимает `⏰`, отправляет 2-3 варианта времени и дедлайн; бот создаст голосование и применит победивший вариант по дедлайну.
|
||||||
- Web-панель должна перенаправлять неавторизованного пользователя на `/login`.
|
- Web-панель должна перенаправлять неавторизованного пользователя на `/login`.
|
||||||
- После входа через Telegram пользователь видит группы, где он назначен owner или co-GM.
|
- После входа через Telegram пользователь видит группы, где он назначен owner или co-GM.
|
||||||
- `/miniapp` вне Telegram показывает диагностичный fallback на обычный вход, а внутри Telegram ждёт `initData`, отправляет его на `/auth/telegram-webapp` и открывает тот же dashboard в мобильной раскладке. Если нужен fallback `/login`, Telegram Login Widget работает через `data-onauth`: payload отправляется на `/auth/telegram-login`, cookie выставляется в текущем WebView, и страница сразу возвращается на `/`.
|
- `/miniapp` вне Telegram показывает диагностичный fallback на обычный вход, а внутри Telegram ждёт `initData`, отправляет его на `/auth/telegram-webapp` и открывает тот же dashboard в мобильной раскладке. Если нужен fallback `/login`, Telegram Login Widget работает через `data-onauth`: payload отправляется на `/auth/telegram-login`, cookie выставляется в текущем WebView, и страница сразу возвращается на `/`.
|
||||||
- Для v1.9.3 не нужно новое действие в BotFather, если домен и menu button уже указывают на HTTPS URL `/miniapp` из `TELEGRAM_MINI_APP_URL`.
|
- Для v1.9.6 не нужны новые переменные окружения или действия в BotFather, если домен и menu button уже указывают на HTTPS URL `/miniapp` из `TELEGRAM_MINI_APP_URL`.
|
||||||
- В левом меню есть вкладка `Шаблоны` для управления сохранёнными шаблонами кампаний.
|
- В левом меню есть вкладка `Шаблоны` для управления сохранёнными шаблонами кампаний.
|
||||||
- На странице группы owner видит блок управления co-GM, а owner/co-GM применяют существующие шаблоны и видят batch-операции: общий title/link, режим уведомлений, перенос всей пачки и клонирование batch.
|
- На странице группы owner видит блок управления co-GM, а owner/co-GM применяют существующие шаблоны и видят batch-операции: общий title/link, режим уведомлений, перенос всей пачки и клонирование batch.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Развёртывание
|
# Развёртывание
|
||||||
|
|
||||||
Текущий production-like способ запуска GM-Relay **v1.9.3** — Docker Compose из `compose.yaml`.
|
Текущий production-like способ запуска GM-Relay **v1.9.6** — Docker Compose из `compose.yaml`.
|
||||||
|
|
||||||
## Сервисы Docker Compose
|
## Сервисы Docker Compose
|
||||||
|
|
||||||
@@ -15,13 +15,13 @@
|
|||||||
|
|
||||||
`bot`:
|
`bot`:
|
||||||
|
|
||||||
- образ: `git.codeanddice.ru/toutsu/gmrelay-bot:1.9.3`;
|
- образ: `git.codeanddice.ru/toutsu/gmrelay-bot:1.9.6`;
|
||||||
- запускается после успешного healthcheck сервиса `db`;
|
- запускается после успешного healthcheck сервиса `db`;
|
||||||
- переменные окружения: `ConnectionStrings__gmrelaydb`, `Telegram__BotToken`, `Telegram__MiniAppUrl`.
|
- переменные окружения: `ConnectionStrings__gmrelaydb`, `Telegram__BotToken`, `Telegram__MiniAppUrl`.
|
||||||
|
|
||||||
`web`:
|
`web`:
|
||||||
|
|
||||||
- образ: `git.codeanddice.ru/toutsu/gmrelay-web:1.9.3`;
|
- образ: `git.codeanddice.ru/toutsu/gmrelay-web:1.9.6`;
|
||||||
- запускается после успешного healthcheck сервиса `db`;
|
- запускается после успешного healthcheck сервиса `db`;
|
||||||
- переменные окружения: `ConnectionStrings__gmrelaydb`, `Telegram__BotToken`, `Telegram__BotUsername`, `Telegram__MiniAppUrl`;
|
- переменные окружения: `ConnectionStrings__gmrelaydb`, `Telegram__BotToken`, `Telegram__BotUsername`, `Telegram__MiniAppUrl`;
|
||||||
- порт: `${GMRELAY_WEB_PORT:-8080}:8080`;
|
- порт: `${GMRELAY_WEB_PORT:-8080}:8080`;
|
||||||
@@ -94,7 +94,7 @@ docker compose down -v
|
|||||||
|
|
||||||
## Поведение миграций
|
## Поведение миграций
|
||||||
|
|
||||||
Бот применяет DbUp-миграции при старте до обработки Telegram updates. Начиная с версии `1.8.0` доступна миграция `V010__add_campaign_templates.sql`: она создаёт таблицу `campaign_templates` для Web-шаблонов кампаний и быстрого создания повторяющихся batch-расписаний. Версия `1.9.3` не добавляет новую миграцию: Telegram Mini App использует существующую модель пользователей, групп и сессий, а исправление входа работает на уровне Web-auth flow через `/auth/telegram-login`. После обновления стоит проверить логи `bot`, чтобы убедиться, что миграции применились без ошибок.
|
Бот применяет DbUp-миграции при старте до обработки Telegram updates. Начиная с версии `1.8.0` доступна миграция `V010__add_campaign_templates.sql`: она создаёт таблицу `campaign_templates` для Web-шаблонов кампаний и быстрого создания повторяющихся batch-расписаний. Версия `1.9.6` не добавляет новую миграцию: обложки batch-постов отправляются как отдельные Telegram photo messages, а GM-кнопки перенесены из основного сообщения расписания в `/listsessions` без изменения схемы БД. После обновления стоит проверить логи `bot`, чтобы убедиться, что миграции применились без ошибок.
|
||||||
|
|
||||||
## Безопасность
|
## Безопасность
|
||||||
|
|
||||||
@@ -113,3 +113,4 @@ docker compose down -v
|
|||||||
6. Проверить вход в Web-панель и одну read-only страницу группы или сессии до редактирования данных.
|
6. Проверить вход в Web-панель и одну read-only страницу группы или сессии до редактирования данных.
|
||||||
7. Проверить `/miniapp` из Telegram: пользователь owner/co-GM должен попасть в мобильный dashboard без повторного открытия Mini App после входа; если сработал fallback `/login`, callback Telegram Login Widget должен сразу вернуть пользователя на `/` в текущем WebView.
|
7. Проверить `/miniapp` из Telegram: пользователь owner/co-GM должен попасть в мобильный dashboard без повторного открытия Mini App после входа; если сработал fallback `/login`, callback Telegram Login Widget должен сразу вернуть пользователя на `/` в текущем WebView.
|
||||||
8. На телефоне проверить, что верхняя навигация и карточки dashboard начинаются ниже системного статус-бара и панели Telegram; Mini App использует Telegram `safeAreaInset` / `contentSafeAreaInset` и browser `env(safe-area-inset-*)` fallback.
|
8. На телефоне проверить, что верхняя навигация и карточки dashboard начинаются ниже системного статус-бара и панели Telegram; Mini App использует Telegram `safeAreaInset` / `contentSafeAreaInset` и browser `env(safe-area-inset-*)` fallback.
|
||||||
|
9. Проверить Telegram-группу: новый `/newsession` с фото или `Картинка:` публикует обложку перед расписанием, а основное сообщение содержит только кнопки записи и выхода; GM-действия доступны через `/listsessions`.
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ dotnet run --project src/GmRelay.AppHost
|
|||||||
|
|
||||||
`Directory.Build.props` задаёт:
|
`Directory.Build.props` задаёт:
|
||||||
|
|
||||||
- `Version`: `1.9.3`.
|
- `Version`: `1.9.6`.
|
||||||
- `TargetFramework`: `net10.0`.
|
- `TargetFramework`: `net10.0`.
|
||||||
- `LangVersion`: `preview`.
|
- `LangVersion`: `preview`.
|
||||||
- `Nullable`: `enable`.
|
- `Nullable`: `enable`.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Руководство ГМа
|
# Руководство ГМа
|
||||||
|
|
||||||
Руководство описывает пользовательские сценарии бота, Telegram Mini App и Web-панели для GM-Relay **v1.9.3**.
|
Руководство описывает пользовательские сценарии бота, Telegram Mini App и Web-панели для GM-Relay **v1.9.6**.
|
||||||
|
|
||||||
## Кто управляет группой
|
## Кто управляет группой
|
||||||
|
|
||||||
@@ -25,6 +25,7 @@ Owner может назначать помощников с ролью `CoGm` в
|
|||||||
Время: 22.05.2026 19:00
|
Время: 22.05.2026 19:00
|
||||||
Мест: 4
|
Мест: 4
|
||||||
Ссылка: https://example.com/join
|
Ссылка: https://example.com/join
|
||||||
|
Картинка: https://example.com/cover.jpg
|
||||||
```
|
```
|
||||||
|
|
||||||
Поддерживаемые строки:
|
Поддерживаемые строки:
|
||||||
@@ -33,9 +34,12 @@ Owner может назначать помощников с ролью `CoGm` в
|
|||||||
- `Время:` — дата и время в МСК. Можно указать несколько строк.
|
- `Время:` — дата и время в МСК. Можно указать несколько строк.
|
||||||
- `Мест:` — необязательный лимит основного состава для каждой сессии в пачке.
|
- `Мест:` — необязательный лимит основного состава для каждой сессии в пачке.
|
||||||
- `Ссылка:` — ссылка для подключения к игре.
|
- `Ссылка:` — ссылка для подключения к игре.
|
||||||
|
- `Картинка:` — необязательная ссылка на обложку приключения.
|
||||||
|
|
||||||
Если `Мест:` не указан, запись остаётся без лимита. Если указан лимит, бот показывает заполненность в формате `Места: 2/4`.
|
Если `Мест:` не указан, запись остаётся без лимита. Если указан лимит, бот показывает заполненность в формате `Места: 2/4`.
|
||||||
|
|
||||||
|
Вместо строки `Картинка:` можно прикрепить фото к сообщению `/newsession` и поместить команду в подпись к фото. Бот отправит обложку отдельным сообщением прямо перед расписанием, а само расписание останется обычным текстовым сообщением с кнопками записи.
|
||||||
|
|
||||||
Для регулярной кампании можно указать одну дату и правило повтора:
|
Для регулярной кампании можно указать одну дату и правило повтора:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
@@ -77,7 +81,7 @@ Owner может назначать помощников с ролью `CoGm` в
|
|||||||
|
|
||||||
Owner или co-GM может поднять первого игрока из очереди:
|
Owner или co-GM может поднять первого игрока из очереди:
|
||||||
|
|
||||||
- в Telegram — кнопкой `Из ожидания (ГМ)` в сообщении расписания;
|
- в Telegram — кнопкой `Из ожидания` в GM-панели `/listsessions`;
|
||||||
- в Web Dashboard — кнопкой `Из ожидания` в списке сессий.
|
- в Web Dashboard — кнопкой `Из ожидания` в списке сессий.
|
||||||
|
|
||||||
Повышение возможно только если в основном составе есть свободное место. Если лимит заполнен, сначала увеличьте `Мест:` в Web-редактировании сессии. При самостоятельном выходе активного игрока первый ожидающий повышается автоматически.
|
Повышение возможно только если в основном составе есть свободное место. Если лимит заполнен, сначала увеличьте `Мест:` в Web-редактировании сессии. При самостоятельном выходе активного игрока первый ожидающий повышается автоматически.
|
||||||
@@ -103,13 +107,14 @@ Owner или co-GM может поднять первого игрока из о
|
|||||||
|
|
||||||
## Отмена и удаление
|
## Отмена и удаление
|
||||||
|
|
||||||
- `Отменить <дата> (ГМ)` в сообщении расписания меняет статус сессии на `Cancelled` и оставляет её в истории пачки.
|
- Основное сообщение расписания показывает только кнопки игроков: запись и выход.
|
||||||
- `/listsessions` показывает будущие сессии; если команду вызывает owner или co-GM, бот добавляет кнопки удаления.
|
- `/listsessions` показывает будущие сессии; если команду вызывает owner или co-GM, бот добавляет кнопки отмены, переноса, повышения из листа ожидания и удаления.
|
||||||
|
- Отмена меняет статус сессии на `Cancelled` и оставляет её в истории пачки.
|
||||||
- Удаление физически удаляет сессию из БД. Если после удаления пачка пустая и была создана forum-тема, бот пытается удалить тему.
|
- Удаление физически удаляет сессию из БД. Если после удаления пачка пустая и была создана forum-тема, бот пытается удалить тему.
|
||||||
|
|
||||||
## Перенос сессии
|
## Перенос сессии
|
||||||
|
|
||||||
Перенос запускается кнопкой `⏰ (ГМ)` в сообщении расписания.
|
Перенос запускается кнопкой `⏰` в GM-панели `/listsessions`.
|
||||||
|
|
||||||
Поток:
|
Поток:
|
||||||
|
|
||||||
@@ -168,6 +173,6 @@ Owner и co-GM могут открыть dashboard прямо внутри Teleg
|
|||||||
- через default menu button бота, если настроен `TELEGRAM_MINI_APP_URL`;
|
- через default menu button бота, если настроен `TELEGRAM_MINI_APP_URL`;
|
||||||
- через кнопку `Открыть dashboard` в ответе на `/start`.
|
- через кнопку `Открыть dashboard` в ответе на `/start`.
|
||||||
|
|
||||||
Mini App открывает `/miniapp`, ждёт `Telegram.WebApp.initData`, отправляет его на серверный endpoint `/auth/telegram-webapp` и проходит HMAC-проверку токеном бота. После проверки пользователь получает обычную cookie-сессию dashboard. Если нужен fallback-вход, `/login` использует callback Telegram Login Widget: подтверждение Telegram отправляется на `/auth/telegram-login`, cookie появляется в текущем Mini App WebView, и dashboard открывается без ручного закрытия и повторного запуска Mini App. Интерфейс v1.9.3 также учитывает safe-area телефона и Telegram, поэтому верхняя навигация не должна перекрываться статус-баром.
|
Mini App открывает `/miniapp`, ждёт `Telegram.WebApp.initData`, отправляет его на серверный endpoint `/auth/telegram-webapp` и проходит HMAC-проверку токеном бота. После проверки пользователь получает обычную cookie-сессию dashboard. Если нужен fallback-вход, `/login` использует callback Telegram Login Widget: подтверждение Telegram отправляется на `/auth/telegram-login`, cookie появляется в текущем Mini App WebView, и dashboard открывается без ручного закрытия и повторного запуска Mini App. Интерфейс v1.9.6 также учитывает safe-area телефона и Telegram, поэтому верхняя навигация не должна перекрываться статус-баром.
|
||||||
|
|
||||||
Функционально Mini App использует те же страницы, что и Web Dashboard: список групп, карточки сессий, редактирование, очередь ожидания, применение шаблонов и bulk-операции batch. Доступ к чужим группам не появляется, потому что все операции продолжают проходить через `AuthorizedSessionService` и роль owner/co-GM.
|
Функционально Mini App использует те же страницы, что и Web Dashboard: список групп, карточки сессий, редактирование, очередь ожидания, применение шаблонов и bulk-операции batch. Доступ к чужим группам не появляется, потому что все операции продолжают проходить через `AuthorizedSessionService` и роль owner/co-GM.
|
||||||
|
|||||||
+9
-8
@@ -1,10 +1,10 @@
|
|||||||
# Главная
|
# Главная
|
||||||
|
|
||||||
GM-Relay — Telegram-бот, Telegram Mini App и Blazor-панель для организации TTRPG-сессий. Текущее состояние документации соответствует репозиторию `Toutsu/GmRelayBot` и релизу **v1.9.3**.
|
GM-Relay — Telegram-бот, Telegram Mini App и Blazor-панель для организации TTRPG-сессий. Текущее состояние документации соответствует репозиторию `Toutsu/GmRelayBot` и релизу **v1.9.6**.
|
||||||
|
|
||||||
## Текущий стек
|
## Текущий стек
|
||||||
|
|
||||||
- Версия проекта: `1.9.3`.
|
- Версия проекта: `1.9.6`.
|
||||||
- Платформа: `.NET 10`, C# preview, nullable reference types, warnings as errors.
|
- Платформа: `.NET 10`, C# preview, nullable reference types, warnings as errors.
|
||||||
- Оркестрация разработки: `.NET Aspire 13` через `src/GmRelay.AppHost`.
|
- Оркестрация разработки: `.NET Aspire 13` через `src/GmRelay.AppHost`.
|
||||||
- Runtime бота: `Worker Service`, Telegram long polling, Native AOT.
|
- Runtime бота: `Worker Service`, Telegram long polling, Native AOT.
|
||||||
@@ -17,15 +17,16 @@ GM-Relay — Telegram-бот, Telegram Mini App и Blazor-панель для о
|
|||||||
|
|
||||||
- Создание пачки игровых сессий одной командой `/newsession` с несколькими строками `Время:` или одной датой плюс `Игр:`/`Интервал:` для регулярного расписания.
|
- Создание пачки игровых сессий одной командой `/newsession` с несколькими строками `Время:` или одной датой плюс `Игр:`/`Интервал:` для регулярного расписания.
|
||||||
- Опциональный лимит мест через строку `Мест:` при создании сессии.
|
- Опциональный лимит мест через строку `Мест:` при создании сессии.
|
||||||
|
- Опциональная обложка batch-поста через прикреплённое фото к `/newsession` или строку `Картинка: https://...`.
|
||||||
- Интерактивная запись игроков на конкретные даты и самостоятельный выход через inline-кнопки Telegram.
|
- Интерактивная запись игроков на конкретные даты и самостоятельный выход через inline-кнопки Telegram.
|
||||||
- Лист ожидания: если основной состав заполнен, новые игроки не переполняют сессию, а попадают в очередь.
|
- Лист ожидания: если основной состав заполнен, новые игроки не переполняют сессию, а попадают в очередь.
|
||||||
- Автоматическое освобождение места: когда активный игрок снимает запись, первый ожидающий переводится в основной состав.
|
- Автоматическое освобождение места: когда активный игрок снимает запись, первый ожидающий переводится в основной состав.
|
||||||
- Делегирование управления группой: owner может назначать co-GM, а co-GM управляет расписанием в Telegram и Web Dashboard.
|
- Делегирование управления группой: owner может назначать co-GM, а co-GM управляет расписанием в Telegram и Web Dashboard.
|
||||||
- Повышение первого игрока из листа ожидания кнопкой owner/co-GM в Telegram или Web Dashboard.
|
- Повышение первого игрока из листа ожидания через GM-панель `/listsessions` или Web Dashboard.
|
||||||
- Автоматическое создание Telegram forum topic для пачки игр, если группа является форумом.
|
- Автоматическое создание Telegram forum topic для пачки игр, если группа является форумом.
|
||||||
- Отмена отдельной сессии owner/co-GM из основного сообщения расписания.
|
- Основное сообщение расписания показывает только игроковые кнопки записи и выхода.
|
||||||
- Управление сессиями через `/listsessions` с отображением мест и очереди ожидания.
|
- Управление сессиями через `/listsessions` с отображением мест, очереди ожидания и GM-кнопок отмены, переноса, повышения и удаления.
|
||||||
- Перенос сессии через кнопку owner/co-GM: GM предлагает 2-3 времени и дедлайн, участники голосуют за варианты, бот показывает текущие результаты и применяет победителя по дедлайну.
|
- Перенос сессии через GM-панель `/listsessions`: GM предлагает 2-3 времени и дедлайн, участники голосуют за варианты, бот показывает текущие результаты и применяет победителя по дедлайну.
|
||||||
- RSVP-подтверждение за 24 часа до игры только для основного состава.
|
- RSVP-подтверждение за 24 часа до игры только для основного состава.
|
||||||
- Персональные DM-уведомления игрокам о RSVP за 24 часа, напоминание за 1 час, ссылке перед стартом, отмене и переносе.
|
- Персональные DM-уведомления игрокам о RSVP за 24 часа, напоминание за 1 час, ссылке перед стартом, отмене и переносе.
|
||||||
- Отправка ссылки на подключение за 5 минут до подтверждённой игры.
|
- Отправка ссылки на подключение за 5 минут до подтверждённой игры.
|
||||||
@@ -47,6 +48,6 @@ GM-Relay — Telegram-бот, Telegram Mini App и Blazor-панель для о
|
|||||||
- [Развёртывание](Развёртывание) — Docker Compose, окружение и эксплуатация.
|
- [Развёртывание](Развёртывание) — Docker Compose, окружение и эксплуатация.
|
||||||
- [База данных](База-данных) — схема БД, миграции и статусная модель.
|
- [База данных](База-данных) — схема БД, миграции и статусная модель.
|
||||||
|
|
||||||
## v1.9.3
|
## v1.9.6
|
||||||
|
|
||||||
Patch-релиз стабилизирует Telegram Mini App: fallback-вход на `/login` больше не уводит cookie в отдельный redirect-flow, а отправляет Telegram Login Widget payload на `/auth/telegram-login` из текущего WebView. Mini App shell также применяет `safeAreaInset` и `contentSafeAreaInset`, поэтому шапка и контент не перекрываются системным статус-баром и верхней панелью Telegram. Новых миграций и действий в BotFather для уже настроенного `/miniapp` URL нет.
|
Patch-релиз улучшает Telegram-посты записи: GM может добавить обложку к batch через прикреплённое фото или строку `Картинка:`, а публичное сообщение расписания больше не перегружено кнопками owner/co-GM. Управление отменой, переносом, повышением из листа ожидания и удалением перенесено в `/listsessions`; доступ по-прежнему проверяется через owner/co-GM. Новых миграций нет.
|
||||||
|
|||||||
Reference in New Issue
Block a user