Moderation
Every action creates a case, DMs the user if you let it, and logs itself.

#Cases
Bans, kicks, mutes, warns and their undos all create one, with a short ID. /case view <id>
pulls it up, /history <user> shows every case on one person, /unwarn <id> removes a
warning.
Reply to a message with m!ban and that message is captured as proof - text, author,
attachments. /setproof attaches it after the fact.
/reason and /caseupdate edit a case. Both keep the original, so it reads as edited
rather than rewritten.
#Punish settings
| Setting | What it does |
|---|---|
| DM on punish / unpunish | Tell the user what happened, and when it is lifted |
| Force reason | Refuse the command with no reason given |
| Use role hierarchy | Staff can only act on people below them |
| Allow multiple mutes | Whether a second mute on a muted user is allowed |
| Extend timeouts | A new mute extends the existing one instead of replacing it |
| Confirm on recent case | Ask before punishing someone just punished |
| Cache deleted messages | Keep deleted messages so proof survives |
| Purge pinned messages | Whether /purge takes pins. Off by default |
#Immune roles
Roles moderation cannot touch, globally or per action - so staff can be ban-immune but still muteable. Checked before anything happens, so an immune user is refused rather than half-punished.
#What the user is told
Under Privacy: Show proof and Show author. Turning the author off keeps individual staff out of an argument with a banned member.
The DM is a template. Put your appeal link in it.
#Predefined reasons
An alias that expands. Set raid to mean the full sentence and m!ban @user raid records
all of it.
#Warn thresholds
A warn count triggers an action: three warns becomes a mute, five a ban. The escalation creates its own case, so the record shows both.
#Channel locking
/lock denies Send Messages for @everyone here. /lockall does it server-wide.
Ignored roles keep talking through a lock. Channels to lock limits what /lockall
touches - empty means every text channel the bot can see.
Unlocking restores what was actually there before, rather than guessing.
#User reports
Members report someone to a channel staff watch. /report-blacklist blocks a member from
reporting when the feature is being misused.
#Commands
| Command | What it does | Also | Who |
|---|---|---|---|
/ban <user> [reason] |
Ban a user from the server | m!ban |
Staff |
/unban <user> [reason] |
Unban a user | m!unban |
Staff |
/kick <user> [reason] |
Kick a user from the server | m!kick |
Staff |
/mute <user> <duration> |
Timeout (mute) a user | m!mute |
Staff |
/unmute <user> [reason] |
Remove timeout from a user | m!unmute |
Staff |
/warn <user> <reason> |
Warn a user | m!warn |
Staff |
/unwarn <case id> |
Remove a warning by case ID or user | m!unwarn |
Staff |
/purge <amount> [user] |
Delete messages from a channel | m!purge |
Staff |
/timeban <user> <duration> |
Ban accounts created in a time window | m!timeban |
Staff |
/timemute <user> <duration> |
Mute accounts created in a time window | m!timemute |
Staff |
/timewarn <user> <duration> |
Warn accounts created in a time window | m!timewarn |
Staff |
/timekick <user> <duration> |
Kick accounts created in a time window | m!timekick |
Staff |
/softban <user> [reason] |
Ban and unban to clear their messages | m!softban |
Staff |
/restrict <user> [duration] |
Jail a user and strip their roles | m!restrict |
Staff |
/unrestrict <user> |
Lift a restrict and restore roles | m!unrestrict |
Staff |
/lock |
Lock the current channel | m!lock |
Staff |
/unlock |
Unlock the current channel | m!unlock |
Staff |
/lockall |
Lock all text channels in the server | m!lockall |
Staff |
/unlockall |
Unlock all text channels in the server | m!unlockall |
Staff |
/slowmode <seconds> |
Set slowmode in this channel | m!slowmode |
Staff |
/case |
View moderation cases | m!case |
Staff |
m!cases <user> |
List every case on a user | - | Staff |
/history |
View a user's full moderation history | m!history |
Staff |
/reason |
Edit the reason on a case | m!reason |
Staff |
/caseupdate |
Change a case reason or duration | m!caseupdate |
Staff |
/setproof |
Attach proof to a moderation case | m!setproof |
Staff |
/note |
Add a private staff note | m!note |
Staff |
/usernotes |
View notes on a user | m!usernotes |
Staff |
/massban |
Ban multiple users at once | m!massban |
Staff |
/masskick |
Kick multiple users at once | m!masskick |
Staff |
/massmute |
Mute several users at once | m!massmute |
Staff |
/masswarn |
Warn multiple users at once | m!masswarn |
Staff |
/nameban |
Ban usernames matching a pattern | m!nameban |
Staff |
/namekick |
Kick usernames matching a pattern | m!namekick |
Staff |
/namemute |
Mute usernames matching a pattern | m!namemute |
Staff |
/namewarn |
Warn usernames matching a pattern | m!namewarn |
Staff |
/report |
Report a user to moderators | m!report |
Everyone |
/report-blacklist |
Block a user from reporting | m!report-blacklist |
Staff |
/reply-to-appeal |
Reply to an open appeal | - | Staff |