Create wiki page 'Home'

2026-04-24 10:56:29 +03:00
commit 1df77f5ffe
+43
@@ -0,0 +1,43 @@
# GM-Relay Wiki
GM-Relay — Telegram-бот и Blazor-панель управления для организации TTRPG-сессий. Текущее состояние документации соответствует репозиторию `Toutsu/GmRelayBot` на 2026-04-24.
## Текущий стек
- Версия проекта: `1.1.5`.
- Платформа: `.NET 10`, C# preview, nullable reference types, warnings as errors.
- Оркестрация разработки: `.NET Aspire 13` через `src/GmRelay.AppHost`.
- Runtime бота: `Worker Service`, `BackgroundService`, Telegram long polling, Native AOT.
- Web UI: Blazor Server с Telegram Login Widget.
- База данных: PostgreSQL 17.
- Доступ к данным: Npgsql, Dapper, Dapper.AOT; миграции через DbUp.
- Деплой: Docker Compose, отдельные образы `gmrelay-bot` и `gmrelay-web`.
## Основные возможности
- Создание пачки игровых сессий одной командой `/newsession` с несколькими строками `Время:`.
- Запись игроков на конкретные даты через inline-кнопки в Telegram.
- Автоматическое создание Telegram forum topic для пачки игр, если группа является форумом.
- Отмена отдельной сессии ГМом из основного сообщения расписания.
- Удаление сессий ГМом через список `/listsessions`.
- Перенос сессии через кнопку ГМа и голосование участников.
- RSVP-подтверждение за 24 часа до игры.
- Отправка ссылки на подключение за 5 минут до подтверждённой игры.
- Экспорт будущих запланированных сессий в `.ics` через `/exportcalendar`.
- Web-панель для ГМа: список групп, список сессий, редактирование названия, времени и ссылки.
## Разделы
- [Quick Start](Quick-Start) — быстрый локальный запуск и первичная настройка.
- [GM Guide](GM-Guide) — как пользоваться ботом и web-панелью.
- [Architecture](Architecture) — устройство сервисов и ключевые потоки.
- [Development](Development) — правила разработки, тесты и добавление фич.
- [Deployment](Deployment) — Docker Compose, окружение и эксплуатационные заметки.
- [Database](Database) — схема БД, миграции и статусная модель.
## Важные ограничения
- Бот работает через long polling; webhook в текущей архитектуре не используется.
- Время в пользовательских сценариях вводится и отображается как МСК (`UTC+3`), а в базе хранится в UTC.
- Web-доступ ограничен Telegram-пользователями, которые являются ГМом соответствующей группы.
- В Native AOT избегаются reflection-heavy подходы: обработчики регистрируются явно, SQL-маппинг завязан на DTO.