Add organizer roles and grouped tournament editing #2

Merged
n-popescu merged 1 commit from codex/tournament-edit-controls into main 2026-10-21 17:47:32 +00:00
n-popescu commented 2026-10-21 17:47:15 +00:00 (Migrated from github.com)

Organizers can now be selected as multiple user mentions/IDs or one trusted role when creating a tournament. Role members are fully paginated, bots are excluded, and a stable roster of up to 32 humans is saved; refreshing/replacing it preserves availability and refuses to remove anyone still assigned to a booked/live match. Role lookup uses REST rather than an incomplete gateway cache and fails closed without Server Members Intent.

/tournament-admin modify groups all existing controls alongside settings, roster replacement, registration reopening and an editable-details view. Settings edits are transactional and protect booked times, played results and locked brackets. Existing top-level controls remain compatible shortcuts.

modify delay (also available as a top-level shortcut) takes only the match ID, minutes and a reason. It safely infers the tournament within the current guild, rejects conflicting/out-of-window/started matches, records the change and notifies players plus the organizer.

Validation: go test ./..., go test -race ./..., go vet ./..., build, and git diff --check. Added isolated tests for role pagination/permissions, grouped dispatch, registration reopening, protected roster changes, transactional settings, conflict rejection and match-ID-only delay. A read-only production check confirmed HTTP 200 for member listing after the operator enabled the required intent. No test tournament or real member messages were created.

The tournament guide and command help cover the complete workflow and operational limits.

Organizers can now be selected as multiple user mentions/IDs or one trusted role when creating a tournament. Role members are fully paginated, bots are excluded, and a stable roster of up to 32 humans is saved; refreshing/replacing it preserves availability and refuses to remove anyone still assigned to a booked/live match. Role lookup uses REST rather than an incomplete gateway cache and fails closed without Server Members Intent. `/tournament-admin modify` groups all existing controls alongside settings, roster replacement, registration reopening and an editable-details view. Settings edits are transactional and protect booked times, played results and locked brackets. Existing top-level controls remain compatible shortcuts. `modify delay` (also available as a top-level shortcut) takes only the match ID, minutes and a reason. It safely infers the tournament within the current guild, rejects conflicting/out-of-window/started matches, records the change and notifies players plus the organizer. Validation: `go test ./...`, `go test -race ./...`, `go vet ./...`, build, and `git diff --check`. Added isolated tests for role pagination/permissions, grouped dispatch, registration reopening, protected roster changes, transactional settings, conflict rejection and match-ID-only delay. A read-only production check confirmed HTTP 200 for member listing after the operator enabled the required intent. No test tournament or real member messages were created. The tournament guide and command help cover the complete workflow and operational limits.
Sign in to join this conversation.
No description provided.