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. The intro only shows up the first time.
| Parameter | Type | Description |
|---|---|---|
| solo_team_name | string, optional | Name for your personal solo team. Always optional. Omit it the first time and the team's named after your current display name. Given on a later run, it renames your existing solo team. Omitted then, it's left alone. |
/setup again if you'd like to fix it.
/make-teams random's 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.
/set is a group of one subcommand per setting, not a
single command with a pile of optional parameters: /set channels,
/set team-size, /set betting-timer,
/set wager-channel, /set matchup-channel,
/set elo, /set default-elo,
/set roster-permissions, and /set game
below, plus
/set correct-winner,
/set max-wager, and
/set betting under Betting &
economy. Each requires the Manage Server
permission and takes only the parameters relevant to that one setting. Changing several unrelated
settings at once takes several separate calls instead of one combined one. The one exception is
/set view, which just shows every
current setting in one place and needs no permission since it doesn't change anything.
Sets the voice channel names teams get moved into. Requires the Manage Server permission.
| Parameter | Type | Description |
|---|---|---|
| team1 | string | Name for the first team's voice channel. Creates it if missing. |
| team2 | string | Name for the second team's voice channel. Creates it if missing. |
Team-1/Team-2,
creating them if they don't exist, and remembers them as the server's own from then on.
/make-teams (any subcommand) titles the roster with,
what the matchup graphic labels each side with, and what the win announcement, elo-change line, and a
later /set 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.
Sets how many players make up one side. Requires the Manage Server permission.
| Parameter | Type | Description |
|---|---|---|
| size | integer | Number of players per team. |
Sets how long a betting window stays open. Requires the Manage Server permission.
| Parameter | Type | Description |
|---|---|---|
| seconds | integer | 1–600 seconds a betting window stays open. Defaults to 60 for a server that's never set one. |
Redirects the "betting is open"/"betting is now closed" notices to one specific text channel. Requires the Manage Server permission.
| Parameter | Type | Description |
|---|---|---|
| channel | string, optional | Name of the text channel to direct the betting-open/closed notices to. Creates it if missing. Omit to use the channel this command is run in. |
Redirects every matchup graphic (a game's own, and a tournament match's ready-check/report graphic) and the winner-report message to one specific text channel, no matter where the roster or match actually started. Requires the Manage Server permission.
| Parameter | Type | Description |
|---|---|---|
| channel | string, optional | Name of the text channel to direct matchup graphics and winner-report messages to. Creates it if missing. Omit to use the channel this command is run in. |
Sets a specific player's elo directly to an exact value. Requires the Manage Server permission.
| Parameter | Type | Description |
|---|---|---|
| member | member | Whose elo to set. |
| elo | integer | The exact elo value to set them to. |
Sets what a brand new player in this server starts at. Requires the Manage Server permission.
| Parameter | Type | Description |
|---|---|---|
| elo | integer | Elo a brand new player starts at. Defaults to 1000. Doesn't change existing players' elo. |
Controls who can press the Start / Start (no move) / Random Roles / Balanced Roles buttons on a posted roster. Requires the Manage Server permission.
| Parameter | Type | Description |
|---|---|---|
| strict | boolean | True: only a rostered player or a Manage Server admin can use those buttons. False (the default): anyone who can see the message can. |
Sets which game this server's next roster tracks elo and stats for. Elo, game record, and ranked record are all tracked per game, so switching games never touches another game's numbers. The same goes for a persistent team's tournament win/loss record. Gold balance stays one shared pool across every game. Requires the Manage Server permission.
| Parameter | Type | Description |
|---|---|---|
| game | string, autocomplete | A game this server's used before (autocomplete suggests them), or type a brand new name to start tracking it. "League" is the default. |
use_roles
on /make-teams random is ignored for
any other game.
Shows which game this server is currently tracking. No permission needed. Anyone can check, not just admins.
/set
game only applies to the next roster formed, an admin switching games mid-draft shows up here
as "the current game is X, but the roster in progress is still tracking Y" instead of silently
picking one.
/clear is a group of one subcommand per reset:
/clear teams,
/clear channels, /clear tournament,
/clear elo, /clear economy,
/clear achievements, and /clear card-unlocks
below. Each requires the Manage Server permission and
asks for confirmation before anything actually happens. Combining several resets in one go takes
several separate calls, one per subcommand.
Wipes the current teams and draft state so you can start a fresh session. Any in-progress game is cancelled (bets refunded, everyone moved back) first. Channel names, tournament data, and player elo/economy are untouched. Requires the Manage Server permission.
Does everything /clear teams does, and also forgets the saved team channel names. Requires the Manage Server permission.
Deletes this server's tournament entirely: bracket, registrations, and match history. Also clears the current teams/draft. Registered/persistent teams (/team create) aren't touched. Requires the Manage Server permission.
Resets elo back to this server's default (1000 unless an admin changed it with /set default-elo), every player in the server by default, or just one player if user is given; balance, wins/losses, and gold are untouched. Also clears the current teams/draft (any in-progress game is cancelled and refunded first) once confirmed. Requires the Manage Server permission.
| Parameter | Type | Description |
|---|---|---|
| user | member, optional | Only reset this player's elo instead of everyone's. |
Wipes stats entirely (balance, elo, game record, betting record, and gold wagered/won/lost), every player in the server by default, or just one player if user is given. Also clears the current teams/draft (any in-progress game is cancelled and refunded first) once confirmed. Requires the Manage Server permission.
| Parameter | Type | Description |
|---|---|---|
| user | member, optional | Only reset this player's stats instead of everyone's. |
Resets earned achievements so they go back to locked, every player in the server by default, or just one player if user is given. 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. Also clears the current teams/draft (any in-progress game is cancelled and refunded first) once confirmed. Requires the Manage Server permission.
| Parameter | Type | Description |
|---|---|---|
| user | member, optional | Only reset this player instead of everyone. |
Wipes every trading-card unlock (titles, color schemes, fonts: tier rewards, shop purchases, and achievement titles alike), every player in the server by default, or just one player if user is given. Also resets that player's equipped trading card back to Shockwave's defaults, so it never renders pointed at something no longer unlocked. Also clears the current teams/draft (any in-progress game is cancelled and refunded first) once confirmed. Requires the Manage Server permission.
| Parameter | Type | Description |
|---|---|---|
| user | member, optional | Only reset this player instead of everyone. |
/clear teams,
/clear channels, and /clear tournament post a
plain warning with "Confirm" / "Cancel" buttons before clearing anything.
/clear elo, /clear economy,
/clear achievements, and /clear card-unlocks
clear the current teams/draft right away, but still post their own warning with "Confirm reset" /
"Cancel" buttons before touching any player's elo, economy, achievements, or card unlocks. Either
way, only the member who ran the command can click the buttons, and the prompt expires after 30
seconds with nothing further 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 random or
/make-teams draft. A casual game, either subcommand 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. League-only (see /set game) - ignored, with a note explaining why, for any other game. |
| 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 random. 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. Random Roles and Balanced Roles only show up on a roster
that landed at exactly 5 players a side (regardless of whether use_roles
was set): Random Roles reshuffles each team's own player order (no one changes teams) and re-labels
everyone with a fresh random lane, Balanced Roles keeps both the teams and their order as-is and
assigns lanes to favor each player's liked lane while keeping the two sides close in elo, and either
one edits both team messages in place, turning on lane labels for a roster that never had them even
if it was a plain random split.
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.
ranked:true shows each side's average elo right in the
confirmation message - "Team 1 avg elo X, Team 2 avg elo Y" - so it's clear going in
whether the matchup is close or lopsided, not just after the result posts.
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 buttons on the draft message itself, no separate command needed to pick.
| 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. |
| snake | boolean, optional | Snake draft: pick order reverses every 2 picks (1, 2, 2, 1, 1, 2, …) instead of strictly alternating every pick. |
Setting up a casual game
Get everyone into one voice channel.
Build the roster: /make-teams random for an instant random split, or /make-teams draft for a live captain 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 subcommands 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 random 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. /make-teams draft ranked:true runs the exact same live draft as plain
/make-teams draft. The only difference is the resulting game has elo tracked.
/make-teams random 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 default-elo). Nothing to set up ahead of time otherwise.
Build the roster: /make-teams random ranked:true for an elo-balanced instant split (add use_roles:true with exactly 10 players for lane assignments too), or /make-teams draft ranked:true 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? /set 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 random, /make-teams draft once the draft finishes, /make-teams saved). 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 betting-timer). See Betting & economy below for how that works.
/set channels
gets its default team voice channels created automatically on the very first Start click - if
Shockwave is missing Manage Channels, it says so specifically instead of the button just doing
nothing. Same idea if it can't post the matchup image (missing Attach Files): a plain text notice
takes its place, and the game still starts and betting still opens either way.
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.
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
a winner report removes the original message entirely, while confirming Cancel Game strips its
buttons instead, since either way that game is done. Reported the
wrong result and already confirmed it? /set correct-winner
fixes it after the fact.
The "betting is open"/"now closed" text and the winner-report message are two independent postings:
each goes wherever the game started unless redirected, the open/closed text with
/set wager-channel and the
winner-report message (alongside the matchup graphic itself) with
/set matchup-channel.
/set 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 | string, autocomplete | Which team you think will win. Autocompletes with the current roster's actual team names (not a generic "Team 1"/"Team 2"). |
| match_id | integer, autocomplete, optional | A specific tournament match's id. Autocompletes as "Match #N: TeamA vs TeamB" for every match currently open for betting, so there's no need to separately look one up on the bracket. 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.
Gives some of your gold to another player. Immediate, no confirmation needed from either side.
| Parameter | Type | Description |
|---|---|---|
| member | member | Who to give gold to. Can't be yourself or a bot. |
| amount | integer | How much gold to give. Must not exceed your balance. |
/set max-wager or turned off
by /set betting. There's no risk or outcome to hedge against,
it's just moving gold from one balance to another.
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. |
| game | string, autocomplete, optional | Which game's elo/record to show. Autocompletes from games this server has actually tracked before. Defaults to the current game; rejects one it's never seen. |
game to check back
on it any time. Balance and betting record stay one shared pool across every game.
/stats already shows) to their regular Discord display name
and account-wide avatar. Name and picture always switch together, never just one on its own.
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 identity 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.
ranked:true.
Plain /make-teams random and /make-teams draft 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 browse 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 buy. - Frequent Better. 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. |
/team
list's own cards option uses. List brings you back to the ranked
list. Both stay on the same message.
/daily, bets, or games) don't have a row yet and won't
appear until they do.
order. Resets back to the first
page, since ascending and descending generally show completely different players there.
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 | string, autocomplete, optional | The team that actually won. Autocompletes with the real team names from the game (or match) being corrected, not a generic "Team 1"/"Team 2". 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 elo (tournament matches don't affect it) - just that match's recorded winner, the bracket, and any bet payouts already settled on it. 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. |
Caps how much gold a single /wager team, /wager against, or duel challenge can be. Requires the Manage Server permission.
| Parameter | Type | Description |
|---|---|---|
| amount | integer, optional | Max gold for a single wager. Omit to remove the cap. Bets are then limited only by balance. |
Turns /wager team and /wager against on or off for this server. Requires the Manage Server permission.
| Parameter | Type | Description |
|---|---|---|
| enabled | boolean | True (the default): bets are accepted. False: wagering is rejected outright. |
Turns the one-time join welcome message on or off for this server. Requires the Manage Server permission.
| Parameter | Type | Description |
|---|---|---|
| enabled | boolean | True (the default): post it if Shockwave ever joins this server again. False: don't. |
/setup and /help the moment it's added to a
server. This can't retroactively post or unpost that one. It's here for if the bot is ever removed
and re-added later and you don't want it showing up again.
Shows this server's current settings in one embed: team channels, team size, current game, default starting elo, roster button permissions, betting on/off and its timer and cap, the wager and matchup channel redirects, and the welcome-message toggle.
/set
subcommand only confirms the new value it just changed. This is the one place to see them all
together afterward instead of digging back through old command responses.
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 random or
/make-teams draft 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. A new or changed name is
capped at 90 characters - short of the point it could ever get rejected by Discord's own limits on
the things a team name can end up inside (a voice channel name, an embed title).
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. |
Copies one side of the server's last completed game into a brand new persistent team, with you as captain, instead of building one from scratch.
| Parameter | Type | Description |
|---|---|---|
| team | choice | Team 1 or Team 2: which side of the last game to save. |
| name | string | Name for the new team. Must be unique in this server. |
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,
/team list, …). 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 subcommands.
Offers a persistent team's captaincy to another player already on its roster. The team's captain, or anyone with Manage Server, can start this.
| Parameter | Type | Description |
|---|---|---|
| team | string | Name of the team to transfer. |
| member | member | Who to offer the captaincy to. Must already be on the team's roster. Invite them with /team invite first if they aren't. |
| force | boolean, optional | Manage Server only: transfers immediately, skipping the new captain's own confirmation. |
/team invite. Captaincy only actually
changes hands once they press Accept. Cancel transfer, right next to those buttons, lets the
captain (or a Manage Server admin) retract the offer. Only one offer can be pending per team at a
time. Cancel it first if you want to offer it to someone else. An offer nobody answers expires
after 24 hours, same as /team
invite.
/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 a player from a team's roster who won't (or can't) leave themselves. The team's captain, or anyone with Manage Server, can do this. No confirmation needed.
| Parameter | Type | Description |
|---|---|---|
| team | string | Name of the team. |
| member | member | Who to remove from the roster. |
/team leave, the same
way force above is the captain/admin counterpart to a normal accepted
invite. It's the only way to get someone off a roster who won't (or can't) run
/team leave themselves.
/team leave refuses the captain too. Use
/team transfer to hand off the captaincy first, or
/team delete if the team should just be gone entirely.
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. |
/team list's record and win-rate sorting too.
Browses every team in the server, filtered and sorted however you like, including by win rate, to rank teams, or just your own, with mine:true.
| 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. |
| cards | boolean, optional | Flip through each matching team's full stats card one at a time, instead of a summary list. Defaults to false. |
| mine | boolean, optional | Only show teams you're rostered on (captain or not). Defaults to false. |
| member_1 … member_5 | member, optional | Only show teams that have every given member on their roster together, up to 5, all optional. |
sort:"Win Rate" order:"Descending". Paged with the same First/Prev/Next/Last
buttons as /leaderboard.
member_1, just without needing to. It combines with the member
filters too: mine:true member_1:@someone finds the teams you and they
share.
/team stats has, swapping the currently-shown team's stats card for
its actual trading card. Whichever one you're looking at stays selected as you keep paging: Next/
Prev/First/Last move to the next team's trading card while a trading card is showing, or
the next team's stats card while a stats card is showing.
Loads two persistent teams straight into a casual or ranked game, skipping /make-teams random//make-teams draft's random-split-or-draft entirely: the quickest way to run a scrim between two teams that already exist.
| Parameter | Type | Description |
|---|---|---|
| team1 | string, autocomplete | Name of the first team. |
| team2 | string, autocomplete | 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 random, /make-teams draft, or /make-teams saved 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. Capped at 90 characters. |
| 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 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. |
Undoes a registration, the lightweight fix for registering the wrong team. The team's captain, or anyone with Manage Server, can do this. No confirmation needed.
| Parameter | Type | Description |
|---|---|---|
| team | string | Name of the team to unregister. |
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 print-bracket unless you want to see it again later. A
reroll before /tournament start has ever been run needs no confirmation
and no particular permission, since there's nothing at stake yet. Rerolling over a bracket that
already has real match history (results, and any bets that were never settled) requires the
Manage Server permission and a Confirm/Cancel prompt
before it erases anything.
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).
/tournament
create-bracket hasn't been run yet, this rejects immediately with a message telling you so,
instead of building a misleading empty bracket image.
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, or anyone with Manage Server, can press
it to begin the match - the same admin escape hatch the winner-report buttons have, in case a
captain's gone AFK; the ready check has no timeout, so it would otherwise sit open forever with
no way to force it short of deleting the whole tournament. Once
accepted, that match runs through the exact same cycle a Start-triggered game does:
/wager team 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 betting-timer is multiplied by how many matches are
in the round, and /wager team 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 team 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
/set 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. |