Commands
Every slash command Shockwave registers, grouped by what part of the night it handles. Parameters marked optional have a default and can be left out.
Getting started
The first command a new player runs.
Introduces Shockwave, creates your personal solo team, and walks you through picking which lane roles you like and dislike playing (for future role-aware team balancing) - press a role to pick it, then press Confirm. Safe to run again any time to update either.
| Parameter | Type | Description |
|---|---|---|
| solo_team_name | string, optional | Name for your personal solo team. Required the first time you run /setup; optional after that (renames your existing solo team if given, left alone if omitted). |
/setup again if you'd like to fix it.
/make-teams' use_roles checks for: everyone
currently in the voice channel has to have completed /setup at least
once, or role-based teams won't form.
Team setup
Run these once per server, or whenever you want to reset a session.
One admin command for every server-tunable setting: team voice channels and size, the betting window length, the wager-postings channel, a direct elo correction, and the starting elo new players get. Give any combination of these in the same call. Requires the Manage Server permission.
| Parameter | Type | Description |
|---|---|---|
| team1 | string, optional | Name for the first team's voice channel. Creates it if missing. Give together with team2. |
| team2 | string, optional | Name for the second team's voice channel. Creates it if missing. Give together with team1. |
| size | integer, optional | Number of players per team. |
| betting_timer | integer, optional | 1–600 seconds a betting window stays open. Defaults to 60 for a server that's never set one. |
| wager_channel | string, optional | Name of the text channel to direct all wager/betting postings to. Creates it if missing. |
| member | member, optional | Whose elo to set directly, to an exact value. Give together with elo. |
| elo | integer, optional | The exact elo value to set member to. Give together with member. |
| default_elo | integer, optional | The elo a brand new player in this server starts at. Defaults to 1000. Doesn't change anyone's existing elo. |
Team-1/Team-2,
creating them if they don't exist, and remembers them as the server's own from then on.
/make-teams//captains title the roster with,
what the matchup graphic labels each side with, and what the win announcement, elo-change line, and a
later /report-correct-winner correction all say too - instead of the
generic "Team 1"/"Team 2" a server that's never named its channels falls back to.
Wipes the current teams and draft state so you can start a fresh session. Channel names, tournament data, and player elo/economy are kept unless you explicitly clear them too. Requires the Manage Server permission.
| Parameter | Type | Description |
|---|---|---|
| clear_channels | boolean, optional | Also forget the saved team channel names. |
| clear_tournament | boolean, optional | Deletes this server's tournament entirely: bracket, registrations, and match history. Runs immediately, no confirmation. Registered/persistent teams (/team-create) aren't touched. |
| clear_elo | boolean, optional | Resets every player's elo back to this server's default (1000 unless an admin changed it with /set's default_elo); balance, wins/losses, and gold are untouched. Server-wide, so it asks for confirmation before it runs (see below). |
| clear_economy | boolean, optional | Wipes every member's stats for this server entirely: balance, elo, game record, betting record, and gold wagered/won/lost. Also server-wide and confirmation-gated; if both this and clear_elo are set, this one wins since it already includes an elo reset. |
| clear_achievements | boolean, optional | Resets earned achievements so they go back to locked, every player in the server by default, or just one player if user is also set. A player who still qualifies (e.g. their win count is still past the threshold) simply earns it back the next time something checks; this doesn't touch elo, balance, game record, or any other unlocks. Confirmation-gated; can be combined with clear_elo, clear_economy, or clear_card_unlocks in the same run (the elo/economy flags always stay server-wide regardless of user). |
| clear_card_unlocks | boolean, optional | Wipes every trading-card unlock (titles, color schemes, fonts: tier rewards, special grants, shop purchases, and achievement titles alike), every player in the server by default, or just one player if user is also set. Also resets that player's equipped trading card back to Shockwave's defaults, so it never renders pointed at something no longer unlocked. Confirmation-gated; combinable with the other flags the same way clear_achievements is. |
| user | member, optional | Only usable together with clear_achievements and/or clear_card_unlocks; narrows either to just this one player instead of everyone. Setting it without either of those is rejected outright. |
clear_elo/
clear_economy/clear_achievements/
clear_card_unlocks below, it
doesn't ask for confirmation first: it deletes the tournament the moment the command runs.
clear_achievements/clear_card_unlocks
is narrowed with user), none of them run immediately. Shockwave posts
a warning with "Confirm reset" / "Cancel" buttons, and only the member who ran
/clear can click them. The prompt expires after 30 seconds with nothing
changed if it's ignored.
Team formation
Two tracks: casual games just organize a roster, ranked games also balance and track elo.
ranked:true on /make-teams or
/captains. A casual game, either command with
ranked left off, never
touches anyone's elo, win or lose. Pick the track when you build the roster; everything downstream
(starting via ▶️, betting, reporting the winner or cancelling with 🛑)
works identically either way.
Casual
Organizes a roster for the night. Betting still works; elo never moves.
Randomly splits everyone in your voice channel into two even teams and posts the roster. Optionally assigns a lane to each player. Doesn't move anyone; press Start on the roster once you're happy with the teams to move everyone and open betting.
| Parameter | Type | Description |
|---|---|---|
| use_roles | boolean, optional | Also hand out lane roles (Top / Jungle / Mid / Bottom / Support); needs exactly 5 players per side (10 for ranked, split 5-and-5). Combined with ranked, roles are chosen to favor each player's liked lane and to keep the two sides close in elo - see Ranked below. |
| ranked | boolean, optional | Form roughly elo-balanced teams instead of a random split, and track elo for this game once a winner is reported. See Ranked below. |
/make-teams. Start
(no move) does everything Start does - matchup graphic, betting window - except the move, for a group
that's already elsewhere and doesn't want Shockwave touching anyone's voice channel. Reroll only shows
up when use_roles actually applied (exactly 5 players a side); pressing it
reshuffles who has which role and edits both team messages in place.
use_roles requires everyone in voice to have run
/setup first. If anyone hasn't, the command
stops and mentions who's still missing instead of forming plain (role-less) teams anyway. Same
requirement whether the game ends up casual or ranked.
Starts a live captain draft. Name two captains, or let Shockwave pick two at random from the voice channel. Everyone else lands in a pool the captains pick from with /choose.
| Parameter | Type | Description |
|---|---|---|
| captain_1 | member, optional | First captain. Required unless use_random is set. |
| captain_2 | member, optional | Second captain. Required unless use_random is set. |
| use_random | boolean, optional | Pick two captains at random from the voice channel instead. |
| ranked | boolean, optional | Track elo for the resulting game once a winner is reported. See Ranked below. |
Captains only. Picks one player from the pool onto your team, then passes the turn to the other captain. Works the same whether the draft was started with /captains or /captains ranked:true.
| Parameter | Type | Description |
|---|---|---|
| member | member, optional | The player to pick. Required unless use_random is set. |
| use_random | boolean, optional | Pick a random remaining player instead of naming one. |
Setting up a casual game
Get everyone into one voice channel.
Build the roster: /make-teams for an instant random split, or /captains + /choose for a live draft.
Press Start on the posted roster to move everyone into their team channels and open betting.
Press the winning team's own button to report it, then press Confirm on the prompt that follows. Bets pay out and Game Record updates; elo is untouched.
Ranked
Same commands as casual, with ranked:true set, not a separate command.
Splits your voice channel into two roughly elo-balanced teams instead of a fully random/draft split,
and tracks elo once a winner is reported.
/make-teams ranked:true).
Each player's elo gets a random nudge; teams are then drafted strongest-to-weakest in a snake pattern
(side A, side B, side B, side A, …) so team sizes stay even and the top players don't all land on one
side. /captains ranked:true runs the exact same live draft as plain
/captains; the only difference is the resulting game has elo tracked.
/make-teams ranked:true use_roles:true, 10 players only - 5 a side).
Each of the five lanes gets filled from whoever's marked it as a liked role in
/setup first, then from anyone with no stated
preference, and only from someone who disliked it if there's truly nobody else left for that lane.
Playing off-role quietly costs a player some of their elo for balancing purposes only (more if it's a
lane they said they dislike, not just one they didn't pick) - real elo never changes from this. On top
of that, Shockwave tries swapping pairs of players' lanes to see if it nets a closer overall matchup,
keeping whichever combination balances the two sides best.
There's one case where a disliked lane does touch real elo: winning on it. A player who wins a ranked game while playing a role they marked disliked gets their own elo gain boosted by 50% on top of the normal team-average swing - a reward for pulling off a win on a less-wanted assignment. Losing on a disliked role gets no such bonus.
Setting up a ranked game
Get everyone into one voice channel. New players start at 1000 elo automatically (an admin can change that server-wide with /set's default_elo); nothing to set up ahead of time otherwise.
Build the roster: /make-teams ranked:true for an elo-balanced instant split (add use_roles:true with exactly 10 players for lane assignments too), or /captains ranked:true + /choose for a live draft that's still marked ranked.
Press Start on the posted roster to move everyone into their team channels and open betting, identical to the casual flow.
Press the winning team's own button to report it, then press Confirm on the prompt that follows. Bets pay out, Game Record updates, and elo shifts for every rostered player: more for beating a stronger team, less for beating a weaker one.
Reported the wrong result? /report-correct-winner undoes the wrong elo/payouts and re-applies them correctly. Admin-only.
Voice channel ops
Moving people around without dragging them by hand.
Not a slash command: a Start button Shockwave attaches to every posted team roster (/make-teams, /captains once the draft finishes, /team-use). Pressing it moves the current rosters into their team channels and kicks off the game; anyone can press it, not just whoever ran the original command. Remembers the channel everyone started in, so the Cancel Game button on the report message (see below) knows where to send them back. Also opens a betting window on the match and posts the winner-report message immediately (60-second betting window by default; see /set's betting_timer). See Betting & economy below for how that works.
DMs a one-time invite link to your voice channel, to one member, or to everyone holding a given role. Give one or the other, not both.
| Parameter | Type | Description |
|---|---|---|
| member | member, optional | A specific member to invite. |
| role | role, optional | Invite every member of this role instead. |
| message | string, optional | Replaces the default invite text. Either way, the DM is signed "Sent by" you. |
Betting & economy
Every server member has a gold balance. Bet it on who wins the current game.
betting_timer)
and immediately posts the winner-report message, with each
team's own button (labeled with the team's actual name, or the
generic "Team 1"/"Team 2" a server that's never named its channels falls back to) plus a Cancel Game
button: it doesn't wait for the betting window to close, since a real game doesn't wait for a countdown
to finish before anyone knows who won. The bot stays fully responsive to every other command the whole
time. Pressing a team's button posts a Confirm/Cancel prompt rather than recording the result
immediately - pressing Confirm is what actually pays out bets, updates everyone's game record (and elo
too, for ranked:true games), and moves both teams back to the original
channel. Cancel Game works the same way now: it posts its own Confirm/Cancel prompt rather than
cancelling on the spot, since refunding bets and moving everyone back shouldn't hinge on one accidental
click either. Either prompt's Cancel (or letting it time out) puts the original message's buttons back
to pressable, in case the wrong team got picked or Cancel Game was pressed by mistake; confirming
either one strips the original message's buttons for good, since that game is done. Reported the
wrong result and already confirmed it? /report-correct-winner
fixes it after the fact.
Postings go wherever the game started unless an admin redirects them with /set's wager_channel.
/report-correct-winner doesn't pay it out twice or
take it back; it correctly flips who gets the win amount and who gets the loss amount, same as
everything else the correction re-derives.
Bets gold on one team winning the current game, or, with match_id, on one specific match in a simultaneous-mode tournament round. Only works while betting is open, only one bet per player per game/match, and you can't bet on a game or match you're actually playing in.
| Parameter | Type | Description |
|---|---|---|
| amount | integer | How much gold to wager. Must not exceed your balance. |
| team | choice | Team 1 or Team 2: whoever you think wins. |
| match_id | integer, optional | A specific tournament match's id (shown as Match #N); omit to bet on the current casual/ranked game or sequential tournament match instead. See /tournament-start's simultaneous-mode note. |
match_id settles independently: a match resolving pays out only that
match's own bettors, without waiting on any other concurrent match.
Challenges another player to a heads-up gold wager, completely separate from the team-game betting above; no active game required.
| Parameter | Type | Description |
|---|---|---|
| member | member | Who to challenge. Can't be yourself or a bot. |
| amount | integer | How much gold each side stakes. Must not exceed your balance. |
Claims 1000 free gold. Once per calendar day, per player.
The full picture for one player: elo (shown with a League-style rank), actual in-game win/loss record (combined, and broken out separately for ranked and casual games), betting record, balance, net gold won or lost overall, and their liked/disliked roles from /setup, all in one embed. Shows their Discord avatar as the embed thumbnail.
| Parameter | Type | Description |
|---|---|---|
| member | member, optional | Whose stats to look up. Defaults to you. |
/stats already shows) to their regular, account-wide Discord
avatar; press again to switch back. Same button either direction, and anyone can click it, not
just the player it's about. Works on the plain embed and on the trading card below (Card):
it re-renders the whole card image with the other avatar rather than disappearing once you're
looking at the card.
trading_cards) and default to Shockwave's own palette (a deep purple
background) and a plain "Rookie" title until something changes them.
default_elo. Elo only changes for
games formed with ranked:true;
plain /make-teams and /captains games
update the Game Record above but never touch elo. When it does update, the size of the change is
based on the average rating on each side: beating a higher-rated team gains more than beating a
lower-rated one.
4W - 1L (80.0%)), then Balance/Net Gold/Gold Wagered. A player with
no games in one of those categories yet shows 0W - 0L and
N/A.
| Elo | Rank | Divisions |
|---|---|---|
| 0 – 249 | ⚙️ Iron | IV – I |
| 250 – 499 | 🥉 Bronze | IV – I |
| 500 – 749 | 🥈 Silver | IV – I |
| 750 – 999 | 🥇 Gold | IV – I |
| 1000 – 1249 | 🔷 Platinum | IV – I |
| 1250 – 1499 | 💎 Diamond | IV – I |
| 1500 – 1749 | 🟣 Master | N/A |
| 1750 – 1999 | 🔴 Grandmaster | N/A |
| 2000+ | 👑 Challenger | N/A |
Equips any combination of your unlocked trading-card title, color scheme, and/or font in one call (see /stats' Card button), and shows the resulting card. Every field you give is checked against what you've actually unlocked before anything is applied; if one fails, none of them are equipped.
| Parameter | Type | Description |
|---|---|---|
| title | string, autocomplete, optional | Which title to equip. Autocomplete only offers titles you've actually unlocked: "Rookie" (the default, always available) plus anything you've earned. |
| color_scheme | string, autocomplete, optional | Which color scheme to equip. Autocomplete only offers schemes you've actually unlocked: "Default" (Shockwave's own palette, always available) plus anything you've earned. |
| font_style | string, autocomplete, optional | Which font to equip. Autocomplete only offers fonts you've purchased: "Default" (Shockwave's own Chakra Petch/IBM Plex Sans pairing, always available) plus anything from /shop. |
Shows every option for one customization type in a single gallery image, regardless of what you've personally unlocked yet - the "what are my options" companion to /card-set and /team-set.
| Parameter | Type | Description |
|---|---|---|
| type | choice | Logos, Card Titles, Color Schemes, or Fonts. |
/team-set logo: or /card-set color_scheme:,
not just a gallery. Fonts get shown in their own real typeface rather than just named. Generated once
and cached, so this loads instantly after the first time anyone runs it.
Lists every trading-card title, color scheme, and font purchasable with gold, grouped by category, with your current balance and a ✅ next to anything you already own.
/team-set's built-in crests cover, so a team already using one of
those logos has a matching player-card scheme to go with it.
/shop can click them.
Purchases a trading-card cosmetic with gold, permanently unlocking it the same way reaching an elo tier does.
| Parameter | Type | Description |
|---|---|---|
| item | string, autocomplete | Which item to buy; autocomplete only offers items you don't already own, labeled with their price. |
/card-set.
Lists every trading-card achievement with its description and a ✅/🔒 marker for whether you've earned it. No permission gate; anyone can check their own progress.
/card-set:
- First Blood - win a game.
- Veteran ladder (four tiers, each its own distinct title, not just "Veteran II"): Veteran (10 career wins) → Elite (50) → Battle-Hardened (150) → Immortal (500).
- On Fire ladder (three tiers): On Fire (5-game win streak) → Unstoppable (10) → Untouchable (20).
- High Roller - win a single bet of 5000+ gold.
- Jackpot - win a single bet paying out 3x+ your wager, any size.
- Giant Slayer - a big single-match elo swing.
- Team Player - rostered on 3+ persistent teams at once.
- The Captain - actually captain one.
- Big Spender - own 3+ items bought from
/shop. - Frequent Bettor - place 25+ total bets, win or lose.
- Iron Will - rack up 20+ game losses without quitting.
- Tournament Champion - win a tournament.
- Onboarded - run
/setupfor the first time.
/daily hands out free gold every day, so "save up N gold" would just
reward showing up. Unlocking one posts a notification in the channel where it happened. Running
/achievements also retroactively unlocks anything you already qualify
for but haven't been credited with yet.
Ranks every player in the server who has stats to show. Leave both options out for an overview sorted by elo, showing the raw elo number alongside the ranked win/loss record; pick a specific stat to rank by just that instead.
| Parameter | Type | Description |
|---|---|---|
| filter | choice, optional | Elo, Balance, Game Wins, Game Losses, Game Win Rate, Ranked Wins, Ranked Losses, Ranked Win Rate, Casual Wins, Casual Losses, Casual Win Rate, Bet Wins, Bet Losses, Bet Win Rate, Net Gold, or Gold Wagered. Omit for the elo-sorted overview. |
| order | choice, optional | Descending (highest first) or Ascending (lowest first). Defaults to Descending. |
/daily, bets, or games) don't have a row yet and won't
appear until they do.
Fixes a misreported winner for the most recently resolved game - undoes the wrong payouts, win/loss records, and elo changes, then re-applies all of it for the correct team - or invalidates the game entirely. Requires the Manage Server permission.
| Parameter | Type | Description |
|---|---|---|
| team | choice, optional | The team that actually won. Give this or invalidate, not both. |
| invalidate | boolean, optional | Undo the last game entirely instead of picking a winner: refunds every bet to its exact pre-bet amount, and undoes elo, game/ranked records, and win/loss gold. Nothing is re-applied for either team, and there's no result left behind for a further correction to work from. |
| match_id | integer, optional | Correct a specific tournament match instead of the last game; see the note there. Doesn't touch payouts/elo, only that match's recorded winner and the bracket. Winners-bracket matches only for now; a losers-bracket or Grand Finals match_id is refused with an explanatory message. invalidate isn't supported here yet. |
Tournaments & teams
A separate system from the casual/ranked games above: persistent, named teams a player can captain, and a bracket built from whichever of those teams register for the server's tournament.
Persistent teams
Distinct from the temporary team1/team2 a /make-teams or
/captains game produces; these stick around across sessions and are
what tournament registration works against. Every team-name field below autocompletes as you type,
scoped to your own teams - the ones you captain for an action that requires it, any you're rostered
on otherwise - the same way /card-set only ever suggests titles/schemes/
fonts you've actually unlocked. Team names are case-insensitive: typing "red" finds a team named
"Red", and it can't be taken again as "RED" by someone else - the one exception is renaming a team to
a different capitalization of its own current name, which is still allowed.
Creates a persistent team with you as its captain; team ids are assigned automatically.
| Parameter | Type | Description |
|---|---|---|
| name | string | Team name. Must be unique in this server. |
| team_size | integer | How many players the team is looking for in total. |
| captain | member, optional | Make this member the captain instead of you. |
Sets a team's voice channel and/or logo, any combination in one call. The team's captain, or anyone with Manage Server, can do this.
| Parameter | Type | Description |
|---|---|---|
| team | string | Name of the team. |
| voice_channel | voice channel, optional | Existing channel to use. Can't be combined with new_voice_channel. |
| new_voice_channel | boolean, optional | Create a brand new voice channel named after the team instead of naming an existing one. |
| logo | string, autocomplete, optional | Which built-in Clash-themed logo to use; autocompletes as you type from the full built-in set. |
voice_channel
is already set for a different team, Shockwave posts a warning with "Yes, use it anyway" / "No"
buttons instead of silently reassigning it. "No" doesn't retry anything; just run the command again
with a different channel. Any logo given in the same call is still
applied even while that confirmation is pending.
/team-stats,
/my-teams, …); logo here is for picking a
specific one instead of leaving it to chance.
Renames a persistent team. The team's captain, or anyone with Manage Server, can do this.
| Parameter | Type | Description |
|---|---|---|
| team | string | Current name of the team. |
| new_name | string | New name. Must be unique in this server, same rule /team-create enforces. |
/team-set for that separately if you want them to match.
Permanently deletes a persistent team - its roster, record, and any pending invites go with it. The team's captain, or anyone with Manage Server, can do this.
| Parameter | Type | Description |
|---|---|---|
| team | string | Name of the team to delete. |
/clear
uses for its own destructive flags.
Hands off a persistent team's captaincy to another player already on its roster. The team's captain, or anyone with Manage Server, can do this.
| Parameter | Type | Description |
|---|---|---|
| team | string | Name of the team to transfer. |
| member | member | Who to make the new captain. Must already be on the team's roster - invite them with /team-invite first if they aren't. |
/team-leave afterward.
Invites up to 5 members at once to a team, in a single shared message. The team's captain, or anyone with Manage Server, can do this.
| Parameter | Type | Description |
|---|---|---|
| team | string | Name of the team. |
| member_1 | member | Who to invite. |
| member_2 … member_5 | member, optional | Up to 4 more members to invite in the same message. |
| force | boolean, optional | Manage Server only: adds everyone straight to the roster, skipping their own confirmation. |
Removes you from a persistent team's roster. No permission needed - anyone rostered can do this to themselves.
| Parameter | Type | Description |
|---|---|---|
| team | string | Name of the team to leave. |
/team-transfer the captaincy to
someone else on the roster, then leave normally, or /team-delete the
team if it shouldn't exist at all anymore.
Shows a team's captain, roster, voice channel, win/loss record, and logo (if it has one) as a thumbnail.
| Parameter | Type | Description |
|---|---|---|
| team | string | Name of the team. |
Lists every team you (or another player) are a rostered player on (captain or not) in this server, and lets you flip through each one's full /team-stats-style card.
| Parameter | Type | Description |
|---|---|---|
| member | member, optional | Whose teams to look up. Defaults to you. |
/leaderboard; clicking a button edits the message in place so you can
immediately press the next one.
Browses every team in the server, filtered and sorted however you like - including by win rate, to rank teams.
| Parameter | Type | Description |
|---|---|---|
| search | string, optional | Only show teams whose name contains this. |
| recruiting_only | boolean, optional | Only show teams still short of their target roster size. |
| sort | choice, optional | Name, Wins, Losses, Win Rate, or Roster Size. Defaults to Name. |
| order | choice, optional | Ascending or Descending. Defaults to Ascending. |
sort:"Win Rate" order:"Descending". Paged with the same First/Prev/Next/Last
buttons as /leaderboard//my-teams.
Loads two persistent teams straight into a casual or ranked game, skipping /make-teams//captains's random-split-or-draft entirely: the quickest way to run a scrim between two teams that already exist.
| Parameter | Type | Description |
|---|---|---|
| team1 | string | Name of the first team. |
| team2 | string | Name of the second team. Must be different from team1. |
| ranked | boolean, optional | Track elo for this game. Defaults to casual. |
Re-posts the exact same two teams from whichever of /make-teams, /captains, or /team-use ran last, instead of drawing a fresh random split or captains draft. No parameters - it just runs the last game back.
Tournaments
A server has at most one tournament at a time. Build the shell, register teams into it, then build the bracket; re-running the bracket step rerolls it from whoever's currently registered.
Creates an empty tournament shell for this server: a name, a team size, and a bracket size. A server can only have one tournament at a time.
| Parameter | Type | Description |
|---|---|---|
| name | string | Tournament name. |
| teamsize | integer | Number of players on each registered team. |
| numteams | integer | How many teams the bracket holds. At least 2. |
| double_elim | boolean, optional | Double elimination instead of single. Defaults to single. |
/clear's clear_elo/clear_economy.
Only the member who ran the command can click them, and the prompt expires after 30 seconds
untouched if ignored.
Registers one of your teams for the server's tournament. The team's captain, or anyone with Manage Server, can do this.
| Parameter | Type | Description |
|---|---|---|
| team | string | Name of the team to register. |
Builds the tournament bracket from whichever teams are currently registered, seeded in random order.
| Parameter | Type | Description |
|---|---|---|
| elimination_type | choice | Single or double elimination. |
| losers_bracket_timing | choice | Double elimination only. When the losers bracket plays: after the whole winners bracket finishes (default), or interleaved as each round unlocks it. |
/tournament-create-bracket again replaces whatever bracket already existed,
reshuffled from the currently-registered teams. If the team count isn't a power of two, the
leftover slots are byes. The bracket is printed automatically right after; no need to also run
/tournament-print-bracket unless you want to see it again later.
losers_bracket_timing: Interleaved instead pauses the
winners bracket after each of its rounds to let any losers-bracket round that round just
unlocked play out first, so both brackets make progress side by side instead of one sitting
idle until the other finishes.
Posts the current bracket as an actual image: every round's matchups connected with lines, the same layout you'd sketch on a whiteboard, plus a short status line naming the current champion (or TBD).
TBD (or BYE for
a permanently empty seed) until the match feeding them actually resolves, but the bracket lines
themselves already show every possible matchup for every round, not just the next one.
Starts playing the current round of the bracket. Byes auto-advance immediately; everything else becomes a match.
| Parameter | Type | Description |
|---|---|---|
| mode | choice | Sequential or Simultaneous, see below. Applies to the whole tournament run, not just this round. |
Match #N: A
vs B" with a Ready button. Either team's captain can press it to begin the match. Once
accepted, that match runs through the exact same cycle a Start-triggered game does:
/wager opens, the usual Team 1/Team 2 winner report resolves it, payouts and
elo apply normally. As soon as it resolves, the bracket updates in chat and the next match's ready
check goes out; the round doesn't advance until every match in it is done, even if two other
teams are both sitting there ready to go.
Match #N: A
vs B" report at once, with Team 1/Team 2 buttons like any normal winner report: no ready check.
Betting opens once for the whole round, covering every match in it at the same time: the base
duration from /set's betting_timer is multiplied by how many matches are
in the round, and /wager takes a match_id
to say which one you're betting on; you can bet on more than one concurrently-open match. Each
match settles its own bets independently the moment it resolves, without waiting on the rest of the
round. The bracket updates in chat as each match comes in.
🏁 Round N has ended!" with a fresh copy of
the bracket, then immediately kicks off the next round, or, once the bracket has nothing left to
play, announces the champion. None of this blocks the bot: everything runs off button presses rather
than a waiting loop, so /wager and every other command keep working
normally for other games in progress while a tournament round plays out.
Match #N in its
messages; pass it as match_id to
/report-correct-winner
to fix a wrong result, as long as the next round hasn't started yet. (Currently only supported
for winners-bracket matches; see the note there.)
mode); no need to run
/tournament-start again. Once the losers bracket also has a champion,
Shockwave posts Grand Finals: the winners-bracket champion (undefeated) against the losers-bracket
champion (one loss). If the winners-bracket champion wins, the tournament's over. If the losers-
bracket champion wins instead, both sides now have exactly one loss, so a second, decider match
settles it; whoever wins that one is champion regardless of which bracket they came from.
Utility
Rolls a random number between 1 and a number you give it. Handy for deciding who gets first pick.
| Parameter | Type | Description |
|---|---|---|
| num | integer | Top of the range. Must be greater than 1. |
Run with no arguments for a link to this page. Pass a command name (with or without the leading slash) for a short usage line and description without leaving Discord.
| Parameter | Type | Description |
|---|---|---|
| command | string, optional | Name of the command to look up, e.g. wager. Omit for the full site link. |