Frequently asked questions
Everything that doesn't fit neatly into a command reference, including how to run Shockwave for games that aren't League of Legends.
General
What does Shockwave actually do?
It looks at who's sitting in a voice channel, splits them into two teams (random, drafted, or elo-balanced), optionally hands out lane roles, moves everyone into their team's voice channel with a Start button, and tracks the result, including an optional betting economy and a ranked elo ladder. Everything runs through Discord slash commands and buttons; nobody has to leave the app.
Are Shockwave's images AI generated?
No, every image Shockwave posts (trading cards, team cards, tournament brackets, matchup graphics) is made programmatically with Pillow, a Python image-creation library. Layouts, colors, and text are drawn by code, not generated by an AI model.
Do I need to be a server admin to use it?
No, for most commands. Anyone in the voice channel can build teams, start a game, wager, or
check /stats. Adding the bot to a server requires the
Manage Server permission (that's a Discord requirement
for any bot invite, not something Shockwave adds), and one command,
/report-correct-winner, which fixes a misreported result, is
restricted to members with Manage Server so it can't
be abused to rewrite outcomes after the fact.
Is the gold economy real money?
No, it's an entirely in-server, made-up currency with no cash value or exchange. Everyone
gets 1000 free gold once a day with /daily, and it exists purely to
add stakes to /wagering on games.
Does my elo or balance carry over between servers?
No, every stat Shockwave tracks (elo, gold balance, win/loss record, betting history) is scoped per-server. Playing ranked games in one Discord server has no effect on your numbers in another.
What happens if the bot restarts mid-game?
Team rosters, betting state, and the original voice channel are all persisted to disk as they happen, not held only in memory, so a restart doesn't wipe an in-progress game. The one exception is an open betting countdown's exact timer, which restarts fresh (betting just stays open until the game is reported or cancelled instead of auto-closing); if that matters, the Cancel Game button on the report message cleanly ends the round and refunds any bets placed so far.
Can teams be uneven, or bigger/smaller than 5v5?
Yes. /set's optional size sets the expected size for display purposes,
but team formation itself just splits whoever's in the voice channel down the middle; odd
numbers land one extra player on a side. Lane roles (use_roles on
/make-teams, rerollable afterward with the roster's Reroll button) are
the one feature that specifically needs exactly 5-a-side, since there are five named lanes to hand
out.
Using Shockwave for games other than League
Almost everything about Shockwave is game-agnostic: team formation, moving voice channels, betting, and ranked elo don't know or care what you're actually playing. There's exactly one League-specific feature, and it's opt-in.
What's actually League-specific?
Only lane roles: Top / Jungle / Mid / Bottom / Support, assigned by
use_roles on /make-teams or reshuffled with
the roster's own Reroll button. Everything else - random or drafted team splits, moving voice
channels, the betting economy, ranked elo and matchmaking - has nothing to do with League and works
identically for any team-based game played by a voice-channel-sized group.
How do I set it up for another game?
Exactly the same as League, minus the roles: run /set with team1/team2
once, then use /make-teams or /captains,
with ranked:true if you want it tracked, and without
use_roles turned on. You get two balanced (or drafted) teams, moved
into voice channels, with betting and elo working exactly as documented. This works for Valorant
5-stacks, Rocket League 3v3s, a chess club splitting into two draft brackets, or any other group
that needs to be divided into sides and moved somewhere.
Can I get lane-style roles for a different game?
Not out of the box. The five roles are hardcoded to League's lanes. If your game has its own fixed positions (an FPS's entry/support/anchor, for example) and you're comfortable editing Python, the role list lives in a small, self-contained spot in the codebase; swapping the five names is the whole change. See the self-hosting guide if you're running your own instance and want to make that kind of tweak.
Does ranked elo make sense for a non-League game?
Yes, the elo system is a standard win/loss rating (the same math chess ratings use), not
anything League-flavored. ranked:true on /make-teams
or /captains balances teams by current elo and
adjusts it after a reported result regardless of what game you're actually playing.
Just for fun
Why is it called "Shockwave"?
It's a League of Legends reference: Orianna's ultimate, Command: Shockwave, pulls everyone caught in it together into one place. That's more or less exactly what the bot does to a voice channel full of people: gather everyone up and move them where they need to be. The name stuck as the project's namesake.