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.

Moderator only: every command on this page except /wheel requires 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

  1. The channel is created (inside channelcategory if given). Only the bot and the moderator role can see it at this stage.
  2. 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.
  3. 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:

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

  1. targetchannel must be a registered player channel in the active game; otherwise the command refuses.
  2. 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).
  3. 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.
  4. The game record is updated: the new player inherits the old player's team, channels and action state.
  5. 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

  1. Requires a running game (gameReady). Refuses if a team with that name already exists.
  2. Creates a category named 🏴 TEAMNAME, visible only to the bot and the moderator role.
  3. With teamchat:True, creates 💬-teamname-team-chat in the category. With includeextrachannels:True as well, it also creates 📝-teamname-kill-notes, 🗒️-teamname-roster and 🎡-teamname-voting-and-wheel.
  4. Saves the category and channels into the game's team lists so /changeteams player:@X teamname:TeamName can 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

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

  1. 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.
  2. 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

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