# Command reference Every slash command the bot registers. Options marked with `*` are required. "Needs" is what the handler checks, not just what Discord shows in its menu. Commands that need a server cannot be used in DMs. This page is written by hand from the command definitions in `internal/commands/*/public`. If you change a command, update it here and in `/help` (`internal/commands/help/help.go`). The [Features](features.md) page explains the behaviour behind them. - [Fun](#fun) - [Help](#help) - [Leveling](#leveling) - [Music](#music) - [Meeting rooms](#meeting-rooms) - [Moderation](#moderation) - [Timezone and scheduling](#timezone-and-scheduling) - [Projects](#projects) - [Server setup (`/config`)](#server-setup-config) - [Tickets](#tickets) - [Security](#security) - [Beta](#beta) ## Fun Anyone can use these. `/rps`, `/rpsstats` and `/rpsleaderboard` work in servers only. | Command | Options | What it does | | --- | --- | --- | | `/ping` | | Replies "Pong!" | | `/joke` | `type` | A random joke, optionally of a type | | `/coinflip` | | Heads or tails | | `/dice` | `expr`* | Rolls a dice expression: `d20`, `2d20+1`, `2#d20+1` | | `/rps` | `hand`* | Rock paper scissors against the bot | | `/rpsstats` | | Your rock-paper-scissors record | | `/rpsleaderboard` | | The server's leaderboard | ## Help | Command | What it does | | --- | --- | | `/help` | DMs you a command reference, or shows it to you in the channel if DMs are off | ## Leveling | Command | Options | Needs | What it does | | --- | --- | --- | --- | | `/slvl toggle` | | Manage Server | Turns leveling on or off | | `/slvl set` | `user`*, `level`* | Manage Server, leveling on | Sets a member's level | | `/slvl set-channel` | `channel`* | Manage Server, leveling on | Where level-up messages go | | `/slvl set-message` | `message`* | Manage Server, leveling on | The level-up message. Variables: `{user}`, `{level}` | | `/slvl set-reward` | `level`*, `role`* | Manage Server, leveling on | Role granted at a level | | `/slvl remove-reward` | `level`* | Manage Server, leveling on | Removes a level's role reward | | `/slvl status` | | Manage Server | Shows the leveling settings | | `/rank` | `user` | Leveling on | A rank card for you or another member | | `/leaderboard` | | Leveling on | Top 10 in the server | | `/rewards` | | Leveling on | The role rewards | ## Music | Command | Options | Needs | What it does | | --- | --- | --- | --- | | `/play` | `query`* | **DJ** role | Plays a song by name or URL | | `/queue` | | **DJ** role | Shows the queue | | `/volume` | `value`* (0 to 150) | **DJ** role | Sets the volume | | `/music toggle` | | Manage Server | Turns music on or off in this server | | `/music skip` | | **DJ** role | Skips the current song | | `/music pause`, `/music resume` | | **DJ** role | Pauses or resumes | | `/music stop` | | **DJ** role | Stops and clears the queue | | `/music repeat` | `mode`* (off, song, queue) | **DJ** role | Repeats the song, the queue, or nothing | | `/music remove` | `position`* (its number in `/queue`) | **DJ** role | Removes a queued song | | `/music move` | `from`*, `to`* | **DJ** role | Moves a queued song | Requires Lavalink. See [Getting started](getting-started.md#optional-music-with-lavalink). ## Meeting rooms Every subcommand needs **Manage Server** and works in servers only. | Command | Options | What it does | | --- | --- | --- | | `/meeting add-lobby` | `channel`* (voice) | Makes a voice channel a lobby (up to 10 per server) | | `/meeting remove-lobby` | `channel`* (voice) | Stops using it as a lobby | | `/meeting lobbies` | | Lists the lobbies | | `/meeting lock` | | Locks the room you are in | | `/meeting lock-private` | | Locks it and hides it | | `/meeting unlock` | | Unlocks it | | `/meeting invite` | `user`* | Lets a user into a locked room | | `/meeting uninvite` | `user`* | Removes that access | ## Moderation Each subcommand checks the Discord permission in its "Needs" column. | Command | Options | Needs | What it does | | --- | --- | --- | --- | | `/moderation purge` | `amount`* (1 to 100) | Manage Messages | Deletes recent messages in the channel | | `/moderation timeout` | `user`*, `duration`* (`10m`, `1h`, `2h30m`, up to 28d), `reason` | Moderate Members | Times a member out | | `/moderation untimeout` | `user`*, `reason` | Moderate Members | Removes a timeout | | `/moderation kick` | `user`*, `reason` | Kick Members | Kicks a member | | `/moderation ban` | `user`*, `delete_days` (0 to 7), `reason` | Ban Members | Bans a member | | `/moderation unban` | `user_id`*, `reason` | Ban Members | Unbans by ID | | `/moderation slowmode` | `channel`*, `seconds`* (0 to 21600) | Manage Channels | Sets slowmode, 0 turns it off | | `/moderation bans` | | Ban Members | Lists banned users, with their IDs | | `/moderation timeouts` | | Moderate Members | Lists members who are timed out now | ## Timezone and scheduling Anyone can use these. | Command | Options | What it does | | --- | --- | --- | | `/timezone set` | `zone`* (IANA name, such as `Europe/Lisbon`) | Saves your timezone | | `/timezone show` | | Shows it | | `/schedule create` | | Opens a form (date, time, description) to request a session with a member | | `/schedule list` | | Your upcoming sessions | | `/schedule reschedule` | `id`* (from `/schedule list`), `datetime`* (UTC, `2006-01-02 15:04`) | Proposes a new time | ## Projects | Command | Needs | What it does | | --- | --- | --- | | `/projects list` | | Active projects with creators and helpers | | `/projects create` | Manage Server | Opens a form to create a project | | `/projects add-helper` | Manage Server | Adds a helper to a project | | `/projects close` | Manage Server | Closes a project | ## Server setup (`/config`) Every subcommand needs **Manage Server**. | Command | Options | What it does | | --- | --- | --- | | `/config setwelcomechannel` | `channel`* | Where welcome messages go | | `/config setwelcomemessage` | `message`* | Welcome template. `{user}` is a mention, `{server}` the server name | | `/config setwelcomedm` | `message`* | The welcome DM template | | `/config setwelcomegif` | `url`* | Image or GIF for the welcome embed | | `/config setdefaultrole` | `role`* | Role given on join | | `/config setlogchannel` | `channel`* | Where logs go | | `/config enablelogging` | | Turns logging on | | `/config disablelogging` | | Turns it off | | `/config view` | | Shows the welcome, default role, logging and Twitch settings | | `/config clear` | `setting`* (welcome-channel, welcome-message, welcome-dm, welcome-gif, default-role, log-channel) | Clears one | | `/config toggletwitch` | `enabled`* | Turns Twitch live notifications on or off | | `/config streamers` | | Lists the watched streamers | | `/config beta-features` | `enabled` | Lets testers use beta features here. Only the **server owner** can change it. Leave out `enabled` to see the state | | `/config addstreamer` | `username`* | Adds a Twitch streamer to watch | | `/config removestreamer` | `username`* | Removes one | | `/config settwitchnotificationchannel` | `channel`* | Where live alerts go | ## Tickets | Command | Options | Needs | What it does | | --- | --- | --- | --- | | `/tickets setup` | `channel`*, `log-channel`, `staff-role` | Manage Server | Where tickets open and where closed ones are logged. `staff-role` creates a Support category if there are none yet | | `/tickets category add` | `name`*, `staff-role`, `emoji`, `description` | Manage Server | Adds a category to the panel's dropdown | | `/tickets category remove` | `name`* | Manage Server | Removes a category | | `/tickets category list` | | Manage Server | Lists categories | | `/tickets category edit` | `name`*, `new-name`, `staff-role`, `clear-staff-role`, `emoji`, `description` | Manage Server | Changes a category (`-` removes the emoji or description) | | `/tickets panel` | | Manage Server | Posts the panel, or updates it after changing categories | | `/tickets settings` | `enabled`, `panel-title`, `panel-description`, `max-open` | Manage Server | Shows the settings, or changes the ones you give | | `/tickets list` | `status` (open or closed) | Manage Server | Lists recent tickets | | `/ticket add` | `user`* | The opener or staff | Adds someone to the ticket | | `/ticket remove` | `user`* | Staff | Removes someone | | `/ticket claim` | | Staff | Takes the ticket | | `/ticket close` | `reason` | The opener or staff | Closes it and posts a transcript | ## Security All of these are hidden from members without Manage Server (and `/lockdown` from those without Manage Channels), but **hiding is not the check**. The handlers check again, and some need the **server owner or someone on the trusted list** whatever Discord permissions a person has. In this table "Manage Server" also lets Administrators and trusted members through. | Command | Options | Needs | What it does | | --- | --- | --- | --- | | `/security status` | | Manage Server | What is on, and who is trusted | | `/security toggle` | `feature`* (Join Gate, Raid mode, Anti-nuke, Heat), `on`* | Manage Server to turn on; owner or trusted to turn off | Turns a protection on or off | | `/security alerts` | `channel`*, `role` | Owner or trusted | Alert channel and the role to ping | | `/security quarantine-role` | `role` | Owner or trusted | Role given to quarantined members (empty for none) | | `/security trust add` | `user` or `role` | Owner only | Exempts a user or role from anti-nuke | | `/security trust remove` | `user` or `role` | Owner only | Removes that exemption | | `/security quarantined` | | Manage Server | Lists quarantined members | | `/security release` | `user`* | Owner or trusted | Releases a member and gives their roles back | | `/security end-raid` | | Owner or trusted | Ends raid mode now | | `/security settings` | | Manage Server | Shows every setting | | `/security history` | | Manage Server | Shows the latest security events | | `/security joingate check` | `check`* (no-avatar, new-account, invite-in-name, blocked-names, unverified-bot, unauthorized-bot), `action`* | Owner or trusted | What happens when a check catches a new member | | `/security joingate account-age` | `days`* (1 to 365) | Owner or trusted | How old an account must be | | `/security words add`, `remove` | `list`* (username or chat), `word`* | Owner or trusted | Blocked words for new members' names (Join Gate) or messages (heat) | | `/security words list` | `list`* | Manage Server | Shows a list | | `/security raid` | `join-count`, `join-seconds`, `action`, `pause-invites`, `quiet-minutes` | Owner or trusted | Tunes raid mode | | `/security antinuke set` | `window-seconds`, `lock-server`, `auto-restore` | Owner or trusted | Tunes anti-nuke | | `/security antinuke limit` | `action`*, `count`* (0 to 100) | Owner or trusted | How many times someone may do an action in the window (0: never) | | `/security heat` | `strictness`, `action`, `timeout-minutes`, `escalate`, `panic-members`, `mention-lockdown` | Owner or trusted | Tunes the spam heat system | | `/security alert-dms` | `on`* | Owner or trusted | DM critical alerts to the owner and trusted users | | `/security snapshot` | | Manage Server | Saves roles and channels | | `/security restore` | | Owner or trusted | Recreates deleted roles and channels from the latest snapshot | | `/lockdown channel` | `channel` (default: this one) | Manage Channels | Locks a channel | | `/lockdown server` | | Manage Channels | Locks every channel | | `/lockdown joins` | `action`* (Kick or Ban) | Manage Channels | Kicks or bans new members until unlocked | | `/unlock channel` | `channel` | Owner or trusted | Unlocks a channel | | `/unlock server` | | Owner or trusted | Unlocks every channel | | `/unlock joins` | | Owner or trusted | Lets people join again | ## Beta | Command | Needs | What it does | | --- | --- | --- | | `/beta status` | The bot's owner, **in a DM with the bot** | Shows how beta access is set up | | `/beta set` | The bot's owner, in a DM | `server-id`* and `role-id`*: chooses the beta server and the Beta Tester role | | `/beta off` | The bot's owner, in a DM | Turns beta features off for everyone | | `/beta servers` | The bot's owner, in a DM | Lists the servers that opted in | | `/beta remove-server` | The bot's owner, in a DM | `server-id`*: takes a server out of the beta | `/beta` is registered globally but only works in a direct message with the bot, so it is in no server's menu. A server opts itself in with `/config beta-features` (its owner). Other beta commands appear only in the beta server and in servers that opted in, and only testers can run them. See [Beta features](beta-features.md).