Skip to content

Moderation ​

Keep a record against members: warnings (which the member can see) and notes (internal, mod-only), and act on them with the action commands (/timeout, /kick, /ban, and friends). Records persist until you delete them or the bot leaves the server.

The Moderation records & commands feature is off by default. Turn it on from the Features page, then expand its row to set the permissions and options below.

Warnings vs notes ​

  • Warnings are visible to the warned member. They can list their own warnings (but never anyone else's, and never notes).
  • Notes are internal. Only moderators you authorise (and the owner) can see them, and the noted member never sees their own notes.

Setting permissions ​

On the Features page, open the Moderation records & commands settings. You nominate roles for each power separately. Leaving a list empty means only the server owner can use that power. Each list is independent: giving a role one power (say, kick) never grants it any other (say, ban). The gates apply to the matching commands in Discord (and, for the record gates, the dashboard).

Warnings & notes:

PermissionLets a role...
Add a warning or noteIssue warnings and notes (/warn, /note).
View others' records and look up casesList warnings for any member, view notes, and /case lookup.
Delete a warning or noteDelete warnings and notes.

Action commands (one list per command, so you can grant only what each role needs):

PermissionCommands it unlocks
Ban/ban, /unban
Temporary ban/tempban
Kick/kick
Timeout/timeout, /untimeout
Grant or remove roles/role, /temprole
Change nicknames/nick
Bulk-delete messages/purge
Channel controls/slowmode, /lock, /unlock
Edit a case's reason/case reason

Assignable roles ​

Under Assignable roles, you can restrict which roles /role and /temprole are allowed to grant or remove. Leave it empty to allow any role the bot's own role sits above (the default). Pick one or more roles to limit the role commands to only those, so a moderator with the role power still can't hand out admin or mod roles. This limit applies to everyone using the commands, including the owner; the owner can always change roles directly in Discord.

Notify the member when warned ​

The Notify the member when warned switch (off by default) controls what happens when a warning is added:

  • From the dashboard, the member is sent a direct message with the warning.
  • Via the /warn command, the member is tagged in the channel where the command was run instead.

With the switch on, a Warning DM message editor appears. Leave it blank for the built-in wording, or write your own with the rich-text editor. The warned member is {user.mention}; {mod.name} / {mod.mention} is the moderator and {mod.reason} is the warning text (see placeholders).

Notes never notify the member.

Managing records on the dashboard ​

Open Moderation in the sidebar (it appears only when the feature is on).

  1. Search for a member by name or Discord ID (this works even for members who have left, so their history stays reachable).
  2. Their warnings and notes are listed with who added each and when.
  3. The server owner can add a record (choose Warning or Note, up to 1500 characters) or delete one. (On the dashboard, adding and deleting are owner-only; your nominated mod roles use the slash commands in Discord.)

Exporting records ​

The Moderation page has Export CSV and Export JSON buttons that dump every warning and note in the server (not just one member). The export runs in the background, so you don't have to wait on the page: you'll get a notification (the bell in the top bar) when it's ready, and clicking that notification downloads the file. Each export stays available for 24 hours, then it's removed.

Why some cells start with an apostrophe

Spreadsheet apps like Excel and Google Sheets treat a cell that starts with =, +, - or @ as a formula and may run it. Since names and record text are written by members, the export puts a ' in front of any such value. Your spreadsheet hides that apostrophe and simply shows the text as it was written.

The export covers the whole server and includes notes, so it is available to the server owner and to a delegated manager. Each row carries the record id, kind (warning or note), the target and author (id and resolved name), the text, and the time it was created.

Slash commands ​

The role gates above apply to these commands.

CommandWho can use itWhat it does
/warn add <user> <text>Add permission (or owner)Warn a member.
/warn list <user>View permission for others; anyone for themselvesList a member's warnings.
/warn delete <user> <number>Delete permission (or owner)Delete a warning by its number from the list.
/note add <user> <text>Add permission (or owner)Add an internal note.
/note list <user>View permission (or owner)List a member's notes.
/note delete <user> <number>Delete permission (or owner)Delete a note by its number.
/warningsAnyoneView your own warnings (private reply).

Warning and note text is limited to 1500 characters. Replies are private (ephemeral) so they do not clutter the channel.

Action commands ​

A member holding the matching permission (or the owner) can moderate directly from Discord. Each command has its own gate (see Setting permissions). All replies are private.

CommandWhat it does
/timeout <user> <duration> [reason]Time out a member. Durations like 30m, 1h, 2d, or 1h30m (a bare number means minutes; max 28 days).
/untimeout <user>Clear an active timeout.
/kick <user> [reason]Kick a member from the server.
/ban <user> [reason] [delete_days]Ban a user. delete_days (0 to 7) also deletes their recent messages.
/tempban <user> <duration> [reason] [delete_days]Ban a user for a set time; the bot lifts the ban automatically when it expires. Durations like 1h, 7d, or 1h30m (1 minute to 365 days).
/unban <user>Remove a ban.
/nick <user> [name]Change a member's nickname. Leave the name out to reset it.
/role add <user> <role>Grant a role to a member.
/role remove <user> <role>Remove a role from a member.
/temprole <user> <role> <duration> [reason]Grant a role for a set time; the bot removes it automatically when it expires. Same duration formats as /tempban.

/role and /temprole only touch roles allowed by the Assignable roles list when you have configured one.

And channel actions, behind the Channel controls gate:

CommandWhat it does
/purge <count> [user] [contains] [bots]Delete up to 100 recent messages from the current channel, optionally only from one member, only messages containing some text, or only bot messages. Pinned messages are always kept, and Discord cannot bulk-delete messages older than 14 days.
/slowmode <seconds> [channel]Set how often members may send a message (0 turns slowmode off, max 6 hours). Defaults to the current channel.
/lock [channel] [reason]Stop members from sending messages in a channel. Members with channel-specific permission and administrators can still talk.
/unlock [channel]Undo a lock. The bot keeps its own access when it locks a channel, so unlocking always works.

Timeouts, kicks, bans (including temp bans), and unbans automatically add a note to the member's moderation record, attributed to the moderator who ran the command, with the reason included. Nickname, role, and channel changes are recorded in the server's audit log but do not create notes.

Temporary actions ​

/tempban and /temprole are timed versions of /ban and /role add: you give a duration, and the bot reverses the action itself when it expires. The reversal is durable, so it still happens on time even if the bot restarts or is redeployed in the meantime.

  • Both log a numbered mod-log case when applied, and a second case when the bot reverses them automatically.
  • If you manually undo the action early (unbanning with /unban or straight through Discord, or removing the role with /role remove), the pending automatic reversal is cancelled, so nothing fires later.
  • A member can have only one temp ban running at a time, and only one timer per role; issue the command again only after the first has expired or been cancelled.
  • Durations run from 1 minute to 365 days. (Plain /timeout is still the right tool for short mutes; Discord expires those itself.)

Invited the bot before these commands existed?

/ban and /unban need the Ban Members permission, which is part of the standard invite but was added when these commands shipped. If the bot joined your server before that, use Update permissions on the Servers page to re-grant the current set.

Role hierarchy still applies

Discord only lets the bot act on members and roles below its own highest role. If an action fails with a permissions message, drag SnowstormBot's role above the target member's roles (or the role you are assigning) in Server Settings → Roles.

Moderators can only act on people below them ​

Discord has a simple rule for its own moderation tools: you can only kick, ban or time out someone whose highest role is lower than yours. SnowstormBot follows the same rule for its commands, so giving someone a moderator role never lets them act on staff above them.

In practice this means:

  • /ban, /tempban, /unban, /kick, /timeout, /untimeout, /nick, /warn add, /note add, /role and /temprole only work on members whose highest role is below yours. A member at the same level as you is off limits too.
  • /role and /temprole also only let you give or take away roles that sit below your own highest role. So a moderator can't hand out the admin role.
  • Nobody except the owner can use these commands on the server owner.
  • The server owner can act on anyone (still limited by the bot's own role, see the tip above).
  • Banning or unbanning someone who isn't in the server works as usual, because they have no roles to compare.

If the bot can't work out the role order at that moment (this can happen for a few seconds right after it restarts), it does nothing and asks you to try again, rather than guessing.

Mod-log and case numbers ​

Every moderation action can be logged to a dedicated channel with a sequential case number, so appeals and audits are easy to follow.

On the Features page, open the Moderation records & commands settings and pick a Mod-log channel. Once set, every action (a warning, note, timeout, kick, ban, unban, nickname or role change, purge, slowmode, lock, or unlock) posts a numbered embed there showing the case number, the action, the affected member or channel, the moderator, and the reason. Leave it on (none) to disable the mod-log; actions still work, they just are not posted.

Warnings and notes added from the dashboard are logged here too. They also fire your automations the same way /warn and /note do, so a "Warning added" or "Note added" log post names you as the moderator.

CommandWho can use itWhat it does
/case lookup <number>View permission (or owner)Show a case by its number (private reply).
/case reason <number> <reason>Edit-case permission (or owner)Set or change a case's reason. The mod-log entry is updated in place.

Warning escalation ​

Let the bot act automatically once a member collects enough warnings in a window, so repeat offenders are handled without a moderator having to watch the count.

On the Features page, open the Moderation records & commands settings and add one or more escalation rules. Each rule is "N warnings within H hours → an action":

ActionWhat happens
Log an alert onlyRecords an alert (and posts a mod-log case if a channel is set). The member is not actioned.
Time outTimes the member out for the duration you set.
KickKicks the member.
BanBans the member (no message delete).

How rules behave:

  • A rule fires once, exactly when its threshold is reached. With a "3 warnings" rule, the 3rd warning triggers it; a 4th does nothing unless you also have a higher rule (for example "5 warnings → ban").
  • The window is a rolling count: only warnings added within the last H hours count, so old warnings naturally drop off.
  • The action is taken by the bot, so the same role hierarchy rules apply, and it lands in the mod-log as its own numbered case.
  • Escalation runs whether the warning was added with /warn or from the dashboard.

Notify the member ​

Turn on DM the member when an escalation times them out to send a timed-out member a direct message explaining why. This applies to timeouts only: a kicked or banned member has left the server and can't be messaged, and an alert-only rule doesn't act on them.

Logging bans ​

While the feature is on, every ban is recorded as a note on the banned member, whoever issued it: bans via /ban are attributed to the moderator who ran the command, and bans issued directly through Discord are attributed to the moderator named in the server's audit log (or marked unknown when the bot can't read it).

To additionally announce bans in a channel, turn on the Member banned (and Member unbanned) default automation. It posts to a channel you choose, including the ban reason when the bot can read it from the audit log.

Server lockdown ​

/lockdown is the server-wide version of /lock, behind the same Channel controls gate. It is built to be safe to use during a raid and easy to undo: the bot remembers each channel's exact state before the lockdown and restores it precisely when you lift it, even if the bot restarts in between.

CommandWhat it does
/lockdown slow [seconds] [reason]Apply slowmode to every text channel (default 30s, max 6 hours).
/lockdown full [reason]Stop members from posting in every text channel: messages, threads, TTS, and voice messages are all blocked.
/lockdown disableLift the active lockdown and restore every channel to exactly how it was before.

You can switch between slow and full at any time while a lockdown is active; disable always restores the original state, no matter how many times you switched.

Roles a full lockdown silences. A full lockdown always silences @everyone. If you use a "verified" or booster role that has permission to post, add it under Anti-raid & lockdown → roles a full lockdown also silences in the Moderation settings, otherwise those members could keep posting during a lockdown. A role you trust (say "member for 30 days") can be left off so it keeps talking.

A few things that make it safe:

  • Per-channel override. During a full lockdown, /unlock on a single channel opens it and exempts it from the lockdown (so disable won't re-lock it); /lock on it re-attaches it.
  • Admin changes are respected. If you change a channel's permissions by hand while a lockdown is active, disable leaves your change alone instead of overwriting it.
  • New channels are covered. A channel created during a full lockdown is locked automatically, so a raid can't slip into a fresh channel.
  • Commands pause. During a full lockdown, SnowstormBot's non-moderation and custom commands are unavailable to regular members (moderation commands keep working, and anyone with Manage Server or Administrator is unaffected).

Each lockdown and lift is logged as a mod-log case.

Anti-raid detection ​

Spot a sudden flood of joins and respond automatically. On the Features page, open the Moderation records & commands settings and turn on Enable join-rate raid detection under Anti-raid & lockdown.

Set how many joins within how many seconds counts as a raid, then choose the response:

ResponseWhat happens
Alert me onlyPosts an alert in your server's logs channel. No automatic action.
Slowmode + alertApplies slowmode to your text channels, then alerts you.
Full lockdown + alertTriggers a full /lockdown, then alerts you.

Whatever you pick, the bot always alerts you (pinging you in the logs channel) when a spike trips, with a note of what it did. After it fires once, there's a short cool-down so a single wave doesn't trigger it on every join. If it engaged a lockdown, lift it with /lockdown disable once the raid is over.

Tagging members and channels ​

In the Warning DM message box you can type @ to tag a member, or # to link a channel, the same way as on Send a message. Because this message is a direct message, only members and channels are offered (role tags don't work in a DM) and there are no Ping switches, since a DM only reaches the one person anyway.