/ban
slashBan a member.
🔒 Requires Ban Members
/ban <member> [reason]
Moderation
Server moderation, automod, roles and tickets.
22 commands
Ban a member.
🔒 Requires Ban Members
/ban <member> [reason]
Kick a member.
🔒 Requires Kick Members
/kick <member> [reason]
Timeout (mute) a member, and optionally clear what they just posted.
🔒 Requires Moderate Members
/mute <member> [duration] [reason] [delete_messages]
For a compromised account, delete_messages does what Discord’s ban dialog offers and timeout does not: pick a window (1 hour up to 7 days) and their messages from it are deleted across every channel the bot can manage. The timeout is applied first, so a bot that is still posting is stopped before the sweep starts. Seven days is the ceiling because Discord refuses to bulk-delete anything older than 14. Channels the bot cannot manage messages in are counted in the reply rather than skipped silently.
Remove a member’s timeout.
🔒 Requires Moderate Members
/unmute <member>
Bulk-delete up to 100 messages.
🔒 Requires Manage Messages
/purge <count>
Set channel slowmode.
🔒 Requires Manage Channels
/mod slowmode <seconds>
Count images posted per user in a channel.
🔒 Requires Manage Messages
/mod imagetally
Manage custom text commands, replies and reactions.
🔒 Requires Manage Messages
/mod cmd [name] [image]
nameoptional
text
Add straight to this !command, creating it if it is new.imageoptional
text
The picture to add. It is hosted on the website, so it never expires.Upload a picture straight from Discord with /mod cmd name:hug image:<drop a file>. Run it with no arguments and you get the panel as before. The picture is stored on the website rather than as the Discord attachment, because Discord attachment links expire after about a day and a command built from one would quietly stop posting anything. An image command can hold one or more direct picture links, or a whole imgchest post (imgchest.com/p/<id>) as a pool. A pool is read live and cached for about 10 minutes, so adding a picture to the post is the whole edit. Single imgur image links still work; imgur albums need an API key imgur no longer hands out, which is why imgchest is the one to use for a pool. A link to a page rather than to an image is resolved when the command is added.
Member warnings (tracked globally across servers).
🔒 Requires Moderate Members
/mod warn add Warn a member./mod warn list List a member’s warnings./mod warn clear Clear a member’s warnings./mod warn history A member’s moderation history here (was /modlogs).Word-filter automoderation.
🔒 Requires Manage Server
/mod automod add/mod automod remove/mod automod list/mod automod clear/mod automod statusRestrict features per channel or category.
🔒 Requires Manage Server
/mod blacklist add/mod blacklist remove/mod blacklist listA block on a channel covers its threads too, so muting a channel really does mute it. Blocking a category has always covered everything inside it.
Reaction-role panels.
🔒 Requires Manage Roles
/modset rrpanel create/modset rrpanel edit/modset rrpanel add/modset rrpanel remove/modset rrpanel delete/modset rrpanel list/modset rrpanel setimageWelcome-message system.
🔒 Requires Manage Server
/modset welcome settitle/modset welcome setmessage/modset welcome setimage/modset welcome addchannel/modset welcome removechannel/modset welcome movechannel/modset welcome clearchannels/modset welcome preview/modset welcome statusThe highlighted channels appear in the order you put them in. addchannel adds one to the end, movechannel takes a channel and a position (1 is first), and status numbers the list so the position is there to read off. Adding a channel that is already highlighted edits its description and leaves it where it is, so use movechannel to shift one. After an AQW verification the footer names the in-game guild the character page proved, so an ally reads Member of Vanaheim rather than the name of your Discord server. It falls back to the server name where there is no proven guild: the I don’t play AQW button, somebody in no guild, and the on-join welcome. /modset welcome preview reads your own verified guild so the preview matches what members actually get.
Support-ticket system.
🔒 Requires Manage Server
/ticket setup/ticket close/ticket add/ticket removeScheduled pings: one-off or repeating announcements.
🔒 Requires Mod role
/modset schedule create Repeats: once, daily, weekly, every 2 weeks or every 4 weeks. Times are 24h with a UTC offset option. Only the chosen role is pinged, never @everyone from the message text. Say when it first fires with either day (a weekday, today or tomorrow) or date for anything further out than next week, written 2026-09-14. label is the short name the panel shows, like Campaign 1. remind sends a heads-up that far ahead, like 1d or 2h./modset schedule panel The bot rewrites it whenever the schedule changes, so leave it up. Times render in each reader’s own timezone, and a paused ping drops off it./modset schedule list /modset schedule pause /modset schedule delete If the bot was offline when a ping was due, it fires once when back and rolls forward, never replaying missed weeks. A repeating ping whose channel breaks pauses itself instead of retrying forever. A reminder only goes out in the window before its ping: if the bot was down for the whole window it is skipped rather than sent after the event, when it would be worse than useless. A lead time longer than the gap between pings is refused, since the reminder would land before the previous one had happened. Dates are ISO only: 14/09/2026 and 09/14/2026 are the same characters meaning two different days, so the ambiguous forms are refused rather than guessed at. A date already past is refused too, since unlike a weekday it has no obvious next one.
The scam trap: post in the armed channel, get removed, recent messages purged.
🔒 Requires Mod role
/modset honeypot set A compromised account spamming a scam posts into every channel it can see, which is exactly what no human does with a channel named do-not-post-here. Anyone posting in the armed channel is removed and their messages from the purge window are deleted from every channel at once. window reads like 30 (minutes), 2h or 1d, up to 7 days; the default action is kick, so a real person whose account was hacked can secure it and rejoin./modset honeypot status /modset honeypot off Mods, bots and the server owner are exempt, as is anyone ranked at or above the bot. The caught account is DMed an explanation first, since most catches are hacked accounts with a real person behind them. Arming the trap posts and pins a loud warning in the channel, and the bot keeps it current if the action or window changes: the trap is for scripts that post everywhere, not for people who can read.
Keep a channel clear: everything posted there from the moment you set it up is deleted a little later. What was there before stays.
🔒 Requires Mod role
/modset autoclean set From the moment the command runs, every message posted in the channel is deleted after delay (default one minute; 30s, 2m, 1h, a bare number of minutes, or 0 for at once, up to a day). Everything posted before that moment is left alone, so a panel or a set of instructions already sitting in the channel is safe. bots decides whether bot messages, the bot’s own replies included, are cleared too (default yes)./modset autoclean off /modset autoclean list A pinned message is never deleted, and the pin is checked at delete time, so pin anything new you want kept. Built for a commands channel with a panel at the top: pin the panel and the commands people run under it sweep themselves away once they have had a moment to read the reply. A sweep every few minutes catches anything a restart forgot. The bot needs Manage Messages and Read Message History in the channel, and refuses at setup time when it lacks them.
Who invited each member, and how many people each person’s links have brought in. Off until a mod switches it on.
/invites me | who <member> | top | on | off | status
Discord names no inviter on a join, so this is worked out rather than read: the bot keeps a picture of the server’s invites and sees which link’s use count moved. A single-use link is deleted by Discord the moment it is used, so it vanishes rather than growing, and that counts too. Two links moving at the same instant names nobody, because guessing between them would publish a confident wrong answer about a person on a leaderboard. Members who joined before it was switched on cannot be attributed: working out who invited somebody means having a picture from just before they arrived. It is off by default because every join costs an API call, and switching it off keeps the history rather than deleting it.
Keep a message at the bottom of a channel: rules under a busy chat, a read-this-first over a help channel, the current event banner.
🔒 Requires Mod role
/modset sticky set The text goes in a box rather than a command option, so it can run to several lines, and it opens pre-filled with what is already there: an existing sticky is edited rather than retyped. delay is how long the channel has to be quiet before it moves (5s, 30s, 2m, a bare number of minutes, or 0, default 5 seconds), and embed decides whether it posts as an embed (default yes, and an embed holds 4,096 characters where a plain message holds 2,000)./modset sticky off /modset sticky list It moves once the channel has been quiet for a moment rather than after every message, so a busy conversation is not interrupted by the sticky jumping about, and a burst of chatter costs one repost rather than one per message. The old copy is deleted after the new one is posted, so a bad minute leaves two copies rather than none. A sticky never pings anybody: the text is yours and the bot posts it over and over, so there is no version of it where an @everyone would be right. The bot needs Send Messages, and Embed Links for an embed sticky, and refuses at setup time when it lacks them.
Which custom emoji and stickers this server actually uses, so the ones to purge when the slots fill are chosen on evidence.
🔒 Requires Mod role
/emoji usage [kind] | purge <kind> <count> [include_used] | reset
Discord keeps no usage statistics, so the bot counts for itself from the day it arrived, and every screen says how long it has counted. Anything younger than two weeks, or added after counting began, is marked new rather than unused and is never offered to a purge. Only this server's own emoji count: another server's emoji pasted by a Nitro member is not evidence about yours. A message counts an emoji once however many times it repeats it, and an integration-managed emoji (Twitch) is never deleted.
Build a rich embed, see it as you build it, and post it. An embed the bot posted can be loaded back and edited in place.
🔒 Requires Mod role
/embed create | post | edit | apply | load | templates
Your draft is kept between commands and across a restart, because composing an announcement is ten minutes of writing. Discord refuses an over-long embed with an error that names nothing, so every limit is checked here first and each one is reported with the field, the bound and your actual number: 256 for a title, 4,096 for a description, 25 fields, 1,024 per field, and 6,000 across all of it, which is the one nothing on screen adds up to. The running total sits under the preview. Colours are hex only (#A855F7): a named colour means something different in every tool, so an unreadable one is reported rather than quietly dropped. The JSON button reads what other embed builders and Discord’s own message JSON produce, and a bad paste leaves your draft alone. Only the bot can edit its own messages, so /embed edit refuses somebody else’s and says why. Mentions inside an embed never ping anybody; the plain line above it does, and only the one role you name.
Restart-announcement system.
🔒 Requires Administrator
/modset restart updatechannel/modset restart githooks/modset restart announce