Normative source: docs/overview/SPEC.md (APIs, transitions, persistence, log formats). This page is a compact digest for quick orientation and does not override the spec.
!twgold <CharacterName> in broadcast Twitch chat (case-insensitive command prefix). The EBS ingests this through EventSub and uses subscriber information from the chat payload only (see SPEC).CharacterName stays unique within the active pool; the same viewer can replace their current name with a new enrollment message.message_id. Optional Extension POST /api/payouts/claim remains a dev/rig path with EnrollmentRequestId idempotency and Mgm:DevSkipSubscriberCheck.!twgift <CharacterName> goes to the gift queue (see SPEC §12), while !twgold is used for roulette enrollment and winner consent.nextSpinAt / serverNow from GET /api/roulette/state.Sent, and can re-enroll later.Pending, the flow requires /who <Winner_InGame_Nickname> verification: addon emits [MGM_WHO] JSON into WoWChatLog.txt, Desktop forwards to verify-candidate, and offline candidates resolve to no winner for that cycle (no same-cycle redraw).TwitchUserId. One active payout (Pending / InProgress) per TwitchUserId.!twgold in WoW after receiving the streamer whisper (SPEC §9).[MGM_ACCEPT:UUID] when it receives a matching !twgold whisper response.confirm-acceptance on [MGM_ACCEPT] (this records consent, not Sent).[MGM_CONFIRM:UUID]; Desktop then updates payout to Sent. Helix §11 chat message is attempted after Sent on a best-effort basis. Manual Mark as Sent remains an operator override.Pending → InProgress → Sent |
Failed |
Cancelled, with Expired applied by hourly job after 24h. InProgress → Pending escape hatch is allowed (SPEC §3). |
TwitchUserId — enforcement (limits, concurrency).TwitchDisplayName — UX (Desktop / overlays).CharacterName — in-game recipient; validated in Shared (SPEC §4).Twitch:ExtensionSecret; optional aud = ExtensionClientId. Dev fallback when secret empty (SPEC / Program.cs).X-MGM-ApiKey = Mgm:ApiKey.DDD + CQRS + event sourcing; Marten / PostgreSQL write model; EF Core optional read-side only — see docs/overview/ARCHITECTURE.md.
Desktop targets foreground WoW.exe; process picker is roadmap.