docs(readme): update for v2.7.2 — Discord features, env vars, structure

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-21 18:34:46 +03:00
parent 7fac5926fc
commit 7249ca079d
+24 -12
View File
@@ -4,7 +4,7 @@
Проект разработан с упором на производительность, архитектуру Vertical Slice, Native AOT (для бота) и удобство развертывания с использованием .NET Aspire. Проект разработан с упором на производительность, архитектуру Vertical Slice, Native AOT (для бота) и удобство развертывания с использованием .NET Aspire.
**Текущая версия:** `v2.7.0`. **Текущая версия:** `v2.7.2`.
--- ---
@@ -25,11 +25,11 @@
- **🔄 Автоматическая синхронизация**: Любые изменения в веб-интерфейсе мгновенно обновляют сообщения с расписанием в подключенных Telegram- и Discord-каналах. - **🔄 Автоматическая синхронизация**: Любые изменения в веб-интерфейсе мгновенно обновляют сообщения с расписанием в подключенных Telegram- и Discord-каналах.
### Discord Bot ### Discord Bot
- **Slash-команды расписания**: GM создаёт сессию через `/newsession` и публикует актуальное расписание через `/listsessions`. - **Slash-команды `/newsession` и `/listsessions`**: GM создаёт сессии и публикует актуальное расписание прямо в Discord-канале.
- **Кнопки записи и выхода**: игроки нажимают Join/Leave в Discord-сообщении; бот отвечает ephemeral-сообщением и обновляет schedule message. - **Кнопки Join/Leave с ephemeral-ответами**: игроки нажимают Join/Leave в Discord-сообщении; бот отвечает ephemeral-сообщением и обновляет schedule message.
- **Подтверждения и RSVP**: scheduler публикует запрос подтверждения в Discord-канале, игроки отвечают кнопками, а GM получает исходы RSVP через платформенный messenger. - **RSVP (подтверждения) за 24ч до сессии**: scheduler публикует запрос подтверждения в Discord-канале, игроки отвечают кнопками, а GM получает итоги RSVP.
- **Напоминания и ссылки**: one-hour reminders и join-link notifications отправляются в Discord DM при включенных личных уведомлениях; сбои DM логируются без публичного fallback. - **DM-напоминания за 1ч и ссылки перед игрой**: one-hour reminders и join-link notifications отправляются в Discord DM при включённых личных уведомлениях; сбои DM логируются без публичного fallback.
- **Переносы**: deadline-сервис обновляет Discord vote message и schedule message через `IPlatformMessenger`. - **Reschedule voting (голосование за перенос)**: deadline-сервис обновляет Discord vote message и schedule message через `IPlatformMessenger`.
- **Лимиты и waitlist**: при заполненном составе игрок попадает в waitlist, а при выходе участника первый ожидающий автоматически продвигается в основной состав. - **Лимиты и waitlist**: при заполненном составе игрок попадает в waitlist, а при выходе участника первый ожидающий автоматически продвигается в основной состав.
### 🌐 Web Dashboard (Blazor Server) ### 🌐 Web Dashboard (Blazor Server)
@@ -55,7 +55,7 @@
|---|---| |---|---|
| Язык | C# 14 (.NET 10) | | Язык | C# 14 (.NET 10) |
| Архитектура | Vertical Slice + общая библиотека `GmRelay.Shared` | | Архитектура | Vertical Slice + общая библиотека `GmRelay.Shared` |
| Боты | Telegram.Bot (**Native AOT**), NetCord Gateway (Discord worker) | | Боты | Telegram.Bot (**Native AOT**), NetCord Gateway (Discord worker внутри `GmRelay.Bot`) |
| Веб | Blazor Server | | Веб | Blazor Server |
| Оркестрация | .NET Aspire (`GmRelay.AppHost`) | | Оркестрация | .NET Aspire (`GmRelay.AppHost`) |
| БД | PostgreSQL | | БД | PostgreSQL |
@@ -85,6 +85,9 @@ TELEGRAM_BOT_TOKEN=ваш_токен_здесь
# Токен Discord application bot # Токен Discord application bot
DISCORD_BOT_TOKEN=ваш_discord_токен_здесь DISCORD_BOT_TOKEN=ваш_discord_токен_здесь
# Client ID Discord application (используется для slash-команд)
DISCORD_BOT_CLIENT_ID=ваш_discord_client_id_здесь
# Имя бота без @ (для Telegram Login Widget) # Имя бота без @ (для Telegram Login Widget)
TELEGRAM_BOT_USERNAME=ваше_имя_бота_здесь TELEGRAM_BOT_USERNAME=ваше_имя_бота_здесь
@@ -109,15 +112,15 @@ docker compose up -d
- создание Docker-сети и volume PostgreSQL; - создание Docker-сети и volume PostgreSQL;
- подъём PostgreSQL (`db:5432`); - подъём PostgreSQL (`db:5432`);
- запуск бота с плавной миграцией (DbUp); - запуск бота с плавной миграцией (DbUp);
- запуск отдельного Discord Gateway worker на NetCord; - запуск Discord Gateway worker на NetCord (healthcheck на `:8082`);
- запуск веб-приложения с подключением к БД и Telegram API. - запуск веб-приложения с подключением к БД и Telegram API.
### 3. Первоначальная настройка ### 3. Первоначальная настройка
1. Напишите боту `/start`. 1. Напишите боту `/start`.
2. Создайте группу через `/newgroup`. 2. Создайте группу через `/newgroup`.
3. Откройте Mini App или Web Dashboard для расширенного управления. 3. Откройте Mini App или Web Dashboard для расширенного управления.
4. Для Discord пригласите application bot на сервер с правами `bot` и `applications.commands`. 4. Для Discord пригласите application bot на сервер с правами `bot` и `applications.commands`. Скопируйте `DISCORD_BOT_TOKEN` и `DISCORD_BOT_CLIENT_ID` в `.env`.
5. В Discord создайте сессию через `/newsession` или опубликуйте расписание через `/listsessions`; игроки записываются и выходят кнопками в опубликованном сообщении. 5. Перезапустите Docker Compose (`docker compose up -d`), а затем в Discord создайте сессию через `/newsession` или опубликуйте расписание через `/listsessions`; игроки записываются и выходят кнопками в опубликованном сообщении.
## 💾 Backup и восстановление ## 💾 Backup и восстановление
@@ -164,8 +167,7 @@ BACKUP_VOLUME_NAME=game_pgbackups
``` ```
├── src/ ├── src/
│ ├── GmRelay.AppHost/ # .NET Aspire orchestrator │ ├── GmRelay.AppHost/ # .NET Aspire orchestrator
│ ├── GmRelay.Bot/ # Telegram-бот (Native AOT) │ ├── GmRelay.Bot/ # Telegram- и Discord-бот (Native AOT + NetCord Gateway worker)
│ ├── GmRelay.DiscordBot/ # Discord Gateway worker на NetCord
│ ├── GmRelay.ServiceDefaults/ # Aspire service defaults │ ├── GmRelay.ServiceDefaults/ # Aspire service defaults
│ ├── GmRelay.Shared/ # Общие доменные модели │ ├── GmRelay.Shared/ # Общие доменные модели
│ └── GmRelay.Web/ # Blazor Server dashboard │ └── GmRelay.Web/ # Blazor Server dashboard
@@ -177,6 +179,16 @@ BACKUP_VOLUME_NAME=game_pgbackups
--- ---
## 👨‍💻 Для разработчиков
- **Архитектура**: проект следует Vertical Slice с явным DI. Подробности — в [ADR-001](docs/adr/0001-use-vertical-slice-native-aot-and-aspire.md) и [ADR-002](docs/adr/002-platform-neutral-batch-rendering.md).
- **Добавление обработчика**: из-за Native AOT все DI-регистрации выполняются вручную в `src/GmRelay.Bot/Program.cs` (assembly scanning не используется).
- **Миграции**: SQL-скрипты добавляются как embedded resources в `src/GmRelay.Bot/Migrations/` и применяются автоматически при старте бота через DbUp.
- **Тесты**: `dotnet test tests/GmRelay.Bot.Tests/GmRelay.Bot.Tests.csproj --verbosity normal`
- **Сборка**: `dotnet build`
---
## 📜 Лицензия ## 📜 Лицензия
MIT License. См. [LICENSE](./LICENSE). MIT License. См. [LICENSE](./LICENSE).