feat: сделать пошаговое создание игры или пула игр в Discord-боте #112

Closed
opened 2026-05-28 19:04:50 +03:00 by Toutsu · 1 comment
Owner

Контекст

Если Discord-платформа позволяет реализовать такой же удобный сценарий, нужно добавить пошаговое создание игры или пула игр и в Discord-боте. В Discord можно использовать slash-команды, кнопки, select menus и modals, поэтому UX должен быть адаптирован под возможности Discord, а не просто скопирован из Telegram.

Сценарий должен покрывать как одиночную игру/ваншот, так и пул игр, если мастер создаёт несколько связанных игр или набор слотов.

Scope

  • Спроектировать Discord wizard-flow создания одиночной игры и пула игр.
  • Запускать сценарий через slash-команду или другой принятый Discord entrypoint.
  • В начале сценария дать выбор: создать одну игру или пул игр.
  • Использовать Discord components: buttons, select menus, modals для выбора и ввода параметров.
  • Для одиночной игры разбить создание на шаги: название, описание, дата/время, система/формат, лимит мест, waitlist, клуб/видимость, публикация в витрине и другие текущие обязательные поля.
  • Для пула игр предусмотреть общие параметры пула и параметры отдельных игр/слотов: название пула, описание, список дат/слотов, лимиты мест, общие или индивидуальные настройки видимости.
  • Добавить черновик, предпросмотр, отмену и финальное подтверждение.
  • Учесть Discord-specific ограничения: время жизни interaction, ephemeral messages, права owner/co-GM, доступность сценария в сервере/канале.
  • По возможности переиспользовать общую доменную модель wizard-а с Telegram-реализацией, не дублируя правила валидации.

Acceptance criteria

  • Мастер может создать одиночную игру в Discord через пошаговый интерактивный сценарий.
  • Мастер может создать пул игр/слотов через Discord wizard-flow, если ограничения Discord interactions это позволяют.
  • Сценарий использует нативные Discord components там, где они подходят лучше свободного текста.
  • Черновик не теряется при ошибке валидации конкретного шага.
  • Перед созданием показывается предпросмотр одиночной игры или всего пула и требуется финальное подтверждение.
  • Flow учитывает права Discord owner/co-GM и не позволяет создавать/публиковать игры без нужного доступа.
  • Если часть UX невозможно сделать из-за ограничений Discord interactions, задача должна описать поддерживаемый fallback без ухудшения доменной логики.

Связанные задачи

  • #39 — каталог игр и витрина ваншотов
  • #110 — приватные клубные витрины без публикации в общем каталоге
  • Telegram-аналог: пошаговое создание игры или пула игр в Telegram-боте
## Контекст Если Discord-платформа позволяет реализовать такой же удобный сценарий, нужно добавить пошаговое создание игры или пула игр и в Discord-боте. В Discord можно использовать slash-команды, кнопки, select menus и modals, поэтому UX должен быть адаптирован под возможности Discord, а не просто скопирован из Telegram. Сценарий должен покрывать как одиночную игру/ваншот, так и пул игр, если мастер создаёт несколько связанных игр или набор слотов. ## Scope - Спроектировать Discord wizard-flow создания одиночной игры и пула игр. - Запускать сценарий через slash-команду или другой принятый Discord entrypoint. - В начале сценария дать выбор: создать одну игру или пул игр. - Использовать Discord components: buttons, select menus, modals для выбора и ввода параметров. - Для одиночной игры разбить создание на шаги: название, описание, дата/время, система/формат, лимит мест, waitlist, клуб/видимость, публикация в витрине и другие текущие обязательные поля. - Для пула игр предусмотреть общие параметры пула и параметры отдельных игр/слотов: название пула, описание, список дат/слотов, лимиты мест, общие или индивидуальные настройки видимости. - Добавить черновик, предпросмотр, отмену и финальное подтверждение. - Учесть Discord-specific ограничения: время жизни interaction, ephemeral messages, права owner/co-GM, доступность сценария в сервере/канале. - По возможности переиспользовать общую доменную модель wizard-а с Telegram-реализацией, не дублируя правила валидации. ## Acceptance criteria - Мастер может создать одиночную игру в Discord через пошаговый интерактивный сценарий. - Мастер может создать пул игр/слотов через Discord wizard-flow, если ограничения Discord interactions это позволяют. - Сценарий использует нативные Discord components там, где они подходят лучше свободного текста. - Черновик не теряется при ошибке валидации конкретного шага. - Перед созданием показывается предпросмотр одиночной игры или всего пула и требуется финальное подтверждение. - Flow учитывает права Discord owner/co-GM и не позволяет создавать/публиковать игры без нужного доступа. - Если часть UX невозможно сделать из-за ограничений Discord interactions, задача должна описать поддерживаемый fallback без ухудшения доменной логики. ## Связанные задачи - #39 — каталог игр и витрина ваншотов - #110 — приватные клубные витрины без публикации в общем каталоге - Telegram-аналог: пошаговое создание игры или пула игр в Telegram-боте
Toutsu added this to the Версия 3.0 — Platform & Club Expansion milestone 2026-05-28 19:04:50 +03:00
Toutsu added the type:featurepriority:p2area:discordplatform:discord labels 2026-05-28 19:04:50 +03:00
Toutsu changed title from feat: сделать пошаговое создание игры в Discord-боте через интерактивные компоненты to feat: сделать пошаговое создание игры или пула игр в Discord-боте 2026-05-28 19:05:32 +03:00
Author
Owner

Готово Релиз v3.9.0 опубликован, деплой на прод прошёл.

Что вошло:

  • Платформо-нейтральный рефакторинг GameCreationWizard + IWizardMessenger в GmRelay.Shared (одна стейт-машина для обеих платформ)
  • Discord-адаптер: /newsession-wizard slash-команда, NetCord-based рендер 15 шагов (buttons / StringSelectMenu / modals), 3-retry finalize, in-memory context store, owner/co-GM permission check
  • Миграция V032 (platform колонка в wizard_drafts)
  • Telegram-бот адаптирован под новый контракт — поведение не поменялось, существующие 7 wizard-тестов зелёные
  • Версия 3.8.0 → 3.9.0, NavMenu / compose / deploy.yml синхронизированы

Артефакты:

  • PR #122: #122
  • Release v3.9.0: https://git.codeanddice.ru/Toutsu/GmRelayBot/releases/tag/v3.9.0
  • Merge в main: 415c13b
  • Code review (отдельный агент): D:\Projects\Game\docs eview-report.md — найдено 3 critical runtime-бага (off-by-one в парсерах customId, missing "modal" case в dispatcher, leak ex.Message в Discord), все починены в коммите 85ff3a7

Тесты: 583/585 passed (2 pre-existing skipped), 0 vulnerable packages, build clean, AOT-safe (zero reflection).

Известные ограниченияdocs/review-report.md и в release notes): free-text modal mapping хак, resume:continue re-render вместо true resume, single-draft-per-owner. Всё некритично, оставлено для follow-up.

Готово ✅ Релиз **v3.9.0** опубликован, деплой на прод прошёл. **Что вошло:** - Платформо-нейтральный рефакторинг `GameCreationWizard` + `IWizardMessenger` в `GmRelay.Shared` (одна стейт-машина для обеих платформ) - Discord-адаптер: `/newsession-wizard` slash-команда, NetCord-based рендер 15 шагов (buttons / StringSelectMenu / modals), 3-retry finalize, in-memory context store, owner/co-GM permission check - Миграция V032 (`platform` колонка в `wizard_drafts`) - Telegram-бот адаптирован под новый контракт — поведение не поменялось, существующие 7 wizard-тестов зелёные - Версия 3.8.0 → 3.9.0, NavMenu / compose / deploy.yml синхронизированы **Артефакты:** - PR #122: https://git.codeanddice.ru/Toutsu/GmRelayBot/pulls/122 - Release v3.9.0: https://git.codeanddice.ru/Toutsu/GmRelayBot/releases/tag/v3.9.0 - Merge в main: `415c13b` - Code review (отдельный агент): `D:\Projects\Game\docs eview-report.md` — найдено 3 critical runtime-бага (off-by-one в парсерах customId, missing `"modal"` case в dispatcher, leak `ex.Message` в Discord), все починены в коммите `85ff3a7` **Тесты:** 583/585 passed (2 pre-existing skipped), 0 vulnerable packages, build clean, AOT-safe (zero reflection). **Известные ограничения** (в `docs/review-report.md` и в release notes): free-text modal mapping хак, `resume:continue` re-render вместо true resume, single-draft-per-owner. Всё некритично, оставлено для follow-up.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Toutsu/GmRelayBot#112