commit 1df77f5ffe9818dc96f758e0dcd24ce8c0a259a8 Author: Toutsu Date: Fri Apr 24 10:56:29 2026 +0300 Create wiki page 'Home' diff --git a/Home.md b/Home.md new file mode 100644 index 0000000..6e4de67 --- /dev/null +++ b/Home.md @@ -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. \ No newline at end of file