Game Utility Commands Documentation
Overview
These commands cover the smaller jobs around running a game: opening channels, swapping players, adding teams mid-game, checking the bot's permissions, and picking things at random.
/creategamechannel- Create a game channel that opens to players when you say so/swapplayer- Swap a replacement player into a departing player's channel/addteam- Add a new, empty team (category and chat channels) to a running game/addmonitorchannel- Add a channel to the message edit/delete monitors/testpermissions- Post a config readout and test the bot's permissions/dumpgame- Export the active game as a JSON file/managedgame- Start a managed game, where the bot does the bookkeeping (limited testing)/wheel- Spin an animated wheel to pick one option or one member of a role
Moderator only: every command on this page except
/wheelrequires the server's configured moderator role.
/creategamechannel Command
Create a text channel for the game in two steps: first only moderators and the bot can see it, so you can post rules or a day-start message; then a button opens it to players.
Required Arguments
┌─────────────┬────────┬───────────────────────────────────────┐
│ Argument │ Type │ Description │
├─────────────┼────────┼───────────────────────────────────────┤
│ channelname │ String │ The name of the channel to create │
└─────────────┴────────┴───────────────────────────────────────┘
Optional Arguments
┌─────────────────────┬──────────┬──────────────────────────────────────────────────────┬─────────┐
│ Argument │ Type │ Description │ Default │
├─────────────────────┼──────────┼──────────────────────────────────────────────────────┼─────────┤
│ channelcategory │ Category │ The category to place the channel in │ None │
│ allowghostreactions │ Boolean │ Let dead players add reactions in the channel │ False │
│ spectatorsrole │ Role │ A role that can read the channel but not post │ None │
│ closepreviouschannel│ Channel │ A previous game channel to lock when this one opens │ None │
└─────────────────────┴──────────┴──────────────────────────────────────────────────────┴─────────┘
How It Works
- The channel is created (inside
channelcategoryif given). Only the bot and the moderator role can see it at this stage. - The bot posts a Channel Setup — Pending Player Access embed in the new channel listing the ghost-reaction, spectator and close-previous settings, with two buttons:
- Open Channel to Players — grants access as described below, then deletes the setup embed.
- Cancel — Delete Channel — removes the channel again.
- If message monitoring is active for the game, the new channel is added to the edit and delete monitors automatically (unless its category is already monitored).
When a moderator presses Open Channel to Players:
- The active player role gets view, read history, send, add reactions and external emoji. On the chat server that is the configured chat-server active player role; on the role server it is the game's active players role.
- The dead player role gets view and read history only. With
allowghostreactions:True, dead players can also add reactions and use external emoji, but still cannot post. - The spectators role, if given, gets view and read history only.
- If
closepreviouschannelwas given, the active player role loses Send Messages in that channel and the bot posts a red This channel is now closed embed there pointing at the new channel.
Examples
Day channel inside the game category:
/creategamechannel channelname:day-3 channelcategory:Game
Day channel that closes yesterday's channel and lets ghosts react:
/creategamechannel channelname:day-4 channelcategory:Game closepreviouschannel:#day-3 allowghostreactions:True spectatorsrole:@Spectators
/swapplayer Command
Replace a player who has left the game with a new player, keeping the same private channel, team, and action state.
Role server only: run this in the role server (where the game channels live). The command refuses in the chat server.
Required Arguments
┌───────────────┬─────────┬───────────────────────────────────────────────┐
│ Argument │ Type │ Description │
├───────────────┼─────────┼───────────────────────────────────────────────┤
│ targetchannel │ Channel │ The game channel to swap a player into │
│ newplayer │ User │ The new player to add to the channel │
└───────────────┴─────────┴───────────────────────────────────────────────┘
How It Works
targetchannelmust be a registered player channel in the active game; otherwise the command refuses.- Every player currently assigned to that channel is swapped out: their permission overwrite on the channel is removed, and the new player receives the same permissions (or view, send, read history and pin if the old player had no explicit overwrite).
- The channel is renamed by replacing the old player's name fragment with the new player's display name. If no fragment matches, the rename is skipped with a warning.
- The game record is updated: the new player inherits the old player's team, channels and action state.
- A 🔄 Player Swapped embed is posted to the game log channel, listing the channel, new player, removed players, who made the change, and any warnings.
The command does not change Discord roles. Give the new player the active player role (and remove it from the departing player) yourself.
Example
/swapplayer targetchannel:#🔮-alice newplayer:@Bob
/addteam Command
Add a new, empty team to a running game. Useful when a mid-game mechanic creates a third faction. The team then works with /changeteams.
Required Arguments
┌──────────────────────┬─────────┬────────────────────────────────────────────────────────────────┐
│ Argument │ Type │ Description │
├──────────────────────┼─────────┼────────────────────────────────────────────────────────────────┤
│ teamname │ String │ The name for the new team │
│ teamchat │ Boolean │ Create a team chat channel for the new team │
│ includeextrachannels │ Boolean │ Also create kill-notes, roster and voting-and-wheel channels │
│ │ │ (requires teamchat) │
└──────────────────────┴─────────┴────────────────────────────────────────────────────────────────┘
All three arguments are required; pass False for the channels you do not want.
How It Works
- Requires a running game (
gameReady). Refuses if a team with that name already exists. - Creates a category named
🏴 TEAMNAME, visible only to the bot and the moderator role. - With
teamchat:True, creates💬-teamname-team-chatin the category. Withincludeextrachannels:Trueas well, it also creates📝-teamname-kill-notes,🗒️-teamname-rosterand🎡-teamname-voting-and-wheel. - Saves the category and channels into the game's team lists so
/changeteams player:@X teamname:TeamNamecan move players in.
Example
/addteam teamname:Cultists teamchat:True includeextrachannels:False
/addmonitorchannel Command
Add a channel to the message edit and delete monitors set up when the game started (the Message Monitoring section of the Game Setup page).
Required Arguments
┌──────────┬─────────┬─────────────────────────────────────────────────────────────────┐
│ Argument │ Type │ Description │
├──────────┼─────────┼─────────────────────────────────────────────────────────────────┤
│ channel │ Channel │ Text channel, category, announcement channel, thread, or forum │
└──────────┴─────────┴─────────────────────────────────────────────────────────────────┘
How It Works
- The command only works while a game with message monitoring enabled is running. Otherwise it replies that no such game is active.
- The channel is added to both the edit monitor and the delete monitor. Monitoring a category covers every channel in it.
- If the channel is already monitored, nothing changes.
Example
/addmonitorchannel channel:#town-square
/testpermissions Command
Check that the bot is set up correctly on the server.
Role server only: run this in the role server (for single-server games, that is the only server).
Arguments
This command takes no arguments.
What It Posts
- A 📋 Server Config Readout embed: whether the bot is on the chat server and role server, whether each configured moderator role, active player role and dead player role exists, whether the anonymous vote password is set, and the current game name and its active players role.
- A 🔐 Permission Test Results embed after the bot creates and deletes a few test channels and roles. Failed tests are listed with the error, and all test resources are cleaned up.
Warning: the reply is public in the channel where you run the command, and the readout includes the server's anonymous vote password. Run it in a moderator-only channel.
/dumpgame Command
Export the active classic game as a JSON attachment: players (ids, display names, alive status, team), their private and team channels, and action category state. Built for mirroring a live game onto a test bot; the managed-game dashboard can import the file.
Arguments
This command takes no arguments. The reply is private and the file is named game-dump-<game id>.json.
Spoilers: the file contains every player's team and channel name. Do not post it where players can see it.
/managedgame Command
Start the managed game setup flow, where the bot runs the game's bookkeeping from a rules spec instead of the classic channel-based flow started by /assignroles.
Limited testing: the command is only available to allow-listed users (the bot's developers and trusted config admins) on top of the moderator check. Everyone else gets Managed games are in limited testing and not yet available on this server.
Required Arguments
┌─────────────────┬──────┬───────────────────────────────────────────────┐
│ Argument │ Type │ Description │
├─────────────────┼──────┼───────────────────────────────────────────────┤
│ playerrole │ Role │ A Discord role containing active players │
│ modrole │ Role │ Moderators for the game │
│ deadplayersrole │ Role │ A Discord role for dead players │
└─────────────────┴──────┴───────────────────────────────────────────────┘
How It Works
- A server plays one game at a time. If a classic game or another managed game is active, the command tells you to run
/cleanupgamefirst. - The bot replies with a private setup link. Running the command again while a setup is still in progress resumes the same draft; once a draft has been accepted, the next run starts a new one.
- While a managed game is running,
/dashboardreturns the managed-game dashboard and/cleanupgameends the game and marks it abandoned.
Example
/managedgame playerrole:@Players modrole:@Moderators deadplayersrole:@Dead
/wheel Command
Spin an animated wheel and post a GIF of the result. Anyone can use it; it is not restricted to moderators.
Arguments
Provide exactly one of choices or users.
┌──────────┬────────┬──────────────────────────────────────────────────────────────────┬─────────┐
│ Argument │ Type │ Description │ Default │
├──────────┼────────┼──────────────────────────────────────────────────────────────────┼─────────┤
│ choices │ String │ Comma-separated list of options (2–60) │ – │
│ users │ Role │ Pick between the non-bot members of this role (2–60 members) │ – │
│ for │ String │ What the spin is selecting, e.g. "Tonight's seer"; shown as a │ – │
│ │ │ heading on the result (max 256 characters) │ │
│ style │ Choice │ Animation style (see below) │ default │
└──────────┴────────┴──────────────────────────────────────────────────────────────────┴─────────┘
Styles
default, lightning, bigwheel, penguin, race, elimination, bracket, lottery, ufo, snake.
With more than 30 choices, only the big wheel fits everyone: the bot spins bigwheel instead of the requested style and says so under the result.
Output
The bot posts the GIF and the winner behind a spoiler tag (🎡 The wheel has spoken: ||Alice||), with the for text as a heading when given. Spinning between role members only works in a server; the command has a 10 second cooldown per user.
Examples
Pick a role at random:
/wheel choices:Seer, Doctor, Villager, Wolf for:Tonight's swap
Pick a player from a role, with a different animation:
/wheel users:@Players for:Who gets the gun? style:race