Pre-launch test environment — payments use test credentials and data may be reset before launch.

TournabotDocsProductSign in with Discord
Documentation menu

Docs · Reference

Buttons and commands

People act from Discord panels and the website. Buttons and selects are the primary path in the channels your setup creates; the dashboard holds configuration. Slash commands have been removed from the Discord picker entirely — every action lives on a panel, the dashboard, or the ?name text path.

Buttons first

Every command has a working button, panel control, or dashboard page — that parity is what allowed slash to be removed. If you preferred typing, use ?name anywhere the bot can read messages: it is the same handler the slash path used.

Registration channel

Three messages in the public registration channel — register and profile, rank and leaderboard, then claim or release a seat. Setup posts them from the website; staff do not type them into Discord.

Registration, slotlist, and profile

Registration. Use the buttons below to register a team or view the slotlist. Set your in-game identity with Set profile. Registering accepts the night's published rulebook when one is set. Staff run nights from the dashboard.

Row 1

  • Button: Register team → modal Register a team
    Register a team fields
    FieldRequired
    Night idRequired
    Team nameRequired
    Teammate 2 Discord id (optional)Optional
    Teammate 3 Discord id (optional)Optional
    Teammate 4 Discord id (optional)Optional
  • Button: Register with code → modal Register with team code
    Register with team code fields
    FieldRequired
    Night idRequired
    Team codeRequired
  • Button: View slotlist → modal View slotlist
    View slotlist fields
    FieldRequired
    Night idRequired
  • Button: Set profile → modal Set your profile
    Set your profile fields
    FieldRequired
    IGN (optional)Optional
    Character UID (optional)Optional
    Region (optional)Optional
  • Button: Show profile — Shows your stored profile — no modal.

Row 2

  • Button: My slot → modal View my slot
    View my slot fields
    FieldRequired
  • Button: My schedule — Lists your upcoming nights — the night id is optional. → modal View my schedule
    View my schedule fields
    FieldRequired
  • Button: Check in → modal Check in
    Check in fields
    FieldRequired
    Night id (not needed for schedule)Required
  • Button: Status → modal View my status
    View my status fields
    FieldRequired
  • Button: View standings → modal View standings
    View standings fields
    FieldRequired

Row 3

  • Button: My slot state — Your own seat, the one deadline on it, and the fee state — read-only. → modal View my slot state
    View my slot state fields
    FieldRequired
  • Button: Request transfer — Files a seat transfer for your held seat — recipient must Accept, then staff approve. Night id is the shared participant-modal field documented on Check in. → modal Request a seat transfer
    Request a seat transfer fields
    FieldRequired
    Recipient team idRequired
    Reason (min 3 characters)Required
  • Button: Accept transfer — Recipient team accepts a filed transfer by id — staff still approve. → modal Accept a seat transfer
    Accept a seat transfer fields
    FieldRequired
    Transfer idRequired
  • Button: Edit roster — Captain add/remove on the night’s team — same door as Discord /team roster roster-*. Night id is the shared participant-modal field documented on Check in. → modal Edit roster for this night
    Edit roster for this night fields
    FieldRequired
    Type add or removeRequired
    Member Discord idRequired
    Reason (optional)Optional

Row 4

  • Button: List open nights — Shows advance-bookable nights — no modal.
  • Button: Book ahead → modal Book ahead
    Book ahead fields
    FieldRequired
    Night idRequired
    Team nameRequired

Claim, accept a hold, confirm, and release a seat

Claim, accept a hold, confirm, or release your team’s seat for this open night. When zero or many nights are open: Claim, accept a hold, confirm, or release your team’s seat — enter the event’s public id when asked.

Row 1

  • Button: Claim seat — When exactly one night is open, the button acts for that night with no modal. → modal Claim a seat
    Claim a seat fields
    FieldRequired
    Event public idRequired
  • Button: Accept hold — Converts a timed held seat (lottery / fair-queue / staff reassign) to allocated. → modal Accept a seat hold
    Accept a seat hold fields
    FieldRequired
    Event public idRequired
  • Button: Confirm seat — Confirm-to-keep on an allocated seat — distinct from claim. → modal Confirm a seat
    Confirm a seat fields
    FieldRequired
    Event public idRequired
  • Button: Release seat — Same sole-night shortcut as Claim seat. → modal Release a seat
    Release a seat fields
    FieldRequired
    Event public idRequired

Staff-ops channel

One private channel (hidden from @everyone) carries two panel messages — three Discord action rows each. Seeing the channel is not permission to act: every control still checks your organisation role.

Panel 1 — evidence, events, standings

Buttons only, no body text. Staff only — every action is still checked against your role.

Row 1 — evidence

  • Button: Check extraction status → modal Extraction status
    Extraction status fields
    FieldRequired
    Extraction run idRequired
  • Button: Manual score entry → modal Manual score entry
    Manual score entry fields
    FieldRequired
    Event idRequired
    Match idRequired
    Scoreboard (one team per line)Required

Row 2 — events

  • Button: Check status → modal Check event status
    Check event status fields
    FieldRequired
    Event idRequired
  • Button: Postpone → modal Postpone event
    Postpone event fields
    FieldRequired
    Event idRequired
    New scheduled start (ISO-8601)Required
    ReasonRequired
  • Button: Create event — Replies privately with a one-time link to the dashboard create-event wizard — the form has more than three fields, and a Discord form holds at most three.
  • Button: Move event stage → modal Move event stage
    Move event stage fields
    FieldRequired
    Event idRequired
    Move to stateRequired
    ReasonOptional

Row 3 — standings

  • Button: Show standings → modal Show standings
    Show standings fields
    FieldRequired
    Stage idRequired
    Team lookup (optional)Optional
  • Button: Adjust points — Replies privately with a one-time link to the dashboard standings page, which carries the Adjust points form — the form has more than three fields, and a Discord form holds at most three.

Panel 2 — scrim nights, seed and lobbies

Buttons only, no body text. Staff only — every action is still checked against your role.

Row 1 — registration open/close

  • Button: Open registration → modal Open registration
    Open registration fields
    FieldRequired
    Scrim night idRequired
    Reason (optional; required on reopen)Optional
  • Button: Close registration → modal Close registration
    Close registration fields
    FieldRequired
    Scrim night idRequired
    Reason (optional)Optional
  • Button: Check-in → modal Check-in
    Check-in fields
    FieldRequired
    Scrim night idRequired
    Reason (optional)Optional
  • Button: Go live → modal Go live
    Go live fields
    FieldRequired
    Scrim night idRequired
    Reason (optional)Optional
  • Button: Complete → modal Complete scrim night
    Complete scrim night fields
    FieldRequired
    Scrim night idRequired
    Confirm: why is this night complete?Required

Row 2 — mint and series

  • Button: Mint scrim night → modal Mint scrim night
    Mint scrim night fields
    FieldRequired
    Series idRequired
    Date YYYY-MM-DD (blank = tonight)Optional
    Capacity override (optional)Optional
  • Button: Create series — Replies privately with a one-time link to the dashboard Nights page and its full series form — the form has more than three fields, and a Discord form holds at most three.
  • Button: Cancel night → modal Cancel scrim night
    Cancel scrim night fields
    FieldRequired
    Scrim night idRequired
    Confirm: why is this night cancelled?Required
  • Button: Show night → modal Show scrim night
    Show scrim night fields
    FieldRequired
    Scrim night idRequired
  • Button: List nights → modal List scrim nights
    List scrim nights fields
    FieldRequired
    Series idRequired
    Scope: tonight or upcomingRequired

Row 3 — stage structure

  • Button: Seed stage — Replies privately with a one-time link to the dashboard Events page, where each stage carries its seed form — the form has more than three fields, and a Discord form holds at most three.
  • Button: Split lobbies → modal Split lobbies
    Split lobbies fields
    FieldRequired
    Stage idRequired
    Teams per lobbyRequired
  • Button: Bulk series move → modal Bulk series move
    Bulk series move fields
    FieldRequired
    Series idRequired
    Target stateRequired
    Reason (if cancel/pause/archive/reopen)Optional

Website

Operator configuration belongs on the dashboard, not as Discord buttons. 8 slash families map to 6 dashboard paths:

Slash (while mounted)DashboardWhat it is for
/setup-link/onboardingGuild-connect claim — the onboarding wizard.
/setup-status/server-setupSetup checklist and missing steps (with /setup-apply and /setup-map).
/setup-apply/server-setupApply keyed Create-this steps — same Server setup page.
/setup-map/server-setupAdopt / custom / default mapping for a setup step — same Server setup page.
/event results evidence-submit/resultsUpload result evidence (Discord modals cannot carry attachments).
/event scrim fee-*/events/feesFee flags, grants, and unpaid chase.
/team roster code-*/team-codesMint, lookup, and revoke team codes.
/team roster lock-*/eventsLock or unlock event roster edits.

Bot-commands channel

Setup provisions a bot-commands channel and restricts Use Application Commands to it: guild-wide the permission is denied for @everyone, then allowed back only on that channel. With slash removed from the registry the picker is empty everywhere; the posture stays in place as belt-and-braces, and the channel remains the natural home for typed ?name commands. Panel buttons and modals work in every channel; they never needed the picker.

Every command that used to be slash still answers as ?name — same handler, same permissions, same refusal wording. Examples: ?sticky, ?slot, ?punish.

Slash commands (removed)

Slash commands were removed from Discord's registry once every command had a button, panel, or dashboard surface. The handlers stay mounted: a stale Discord client that still offers a cached command gets a clear "no longer recognised" reply, and ?name covers anyone who prefers typing. There is nothing to relearn — the panels above are the same actions.

If a control refuses, it names the reason rather than failing silently — a missing permission is reported as that permission. See Troubleshooting.