Passa al contenuto principale

Moderation & Security

Advanced security and moderation system with tons of features for keeping your server safe.

Moderazione & Sicurezza
Sistema avanzato di sicurezza e moderazione con tonnellate di funzionalità
This module is storing data in your bot's database.
This module creates 9 top-level Slash-Commands on your server.
This module has 10 configuration files.
This module is being actively used on over 22.100 other servers on SCNX.
This module is included for free in every plan. Learn more about prices.

Features

  • Comprehensive moderation commands: warn, mute, kick, ban, quarantine, channel-mute, and clear.
  • Warn, Mute, Kick, and Ban are also available as right-click context-menu actions on users and messages, and they accept evidence.
  • Support for temporary bans, mutes, and quarantines with automatic expiration, plus editable durations that shorten or extend an active punishment after the fact.
  • Lift punishments in one click straight from the log message or the actions view.
  • Channel lock and unlock commands to restrict messaging in a channel.
  • Server-wide lockdown system that locks all channels at once, with automatic triggers. Optionally send lockdown messages to specific channels only.
  • Smarter invite detection: Discord invite links are resolved before taking action, and invites to your own server are automatically allowed.
  • User reporting system that allows members to report other users and messages with proof images.
  • Moderator notes system to track information about users.
  • View all moderation actions history for any user.
  • Revoke warnings to remove previous warns.
  • Auto-moderation for invite links, scam links, and blacklisted words, each with an optional delete-only action that removes the message without punishing the member.
  • Automated punishments based on warning count (e.g., auto-ban after X warns).
  • A fully configurable, per-type anti-spam system - message rate, duplicate content, mentions, mass mentions, attachment/image spam, link spam, newline/character floods, sticker/emoji spam, channel spread, and text abuse - each with its own toggle, threshold, timeframe, and action.
  • New-member restrictions that hold back attachments and links until a member has been on the server long enough.
  • Anti-Join-Raid system detecting mass joins.
  • Join Gate to block suspicious accounts based on account age and profile picture.
  • Anti-Grief system to quarantine moderators who abuse their permissions.
  • Verification system requiring new members to complete an image captcha, a word or math challenge, a one-click button, or a manual moderator review.
  • Custom moderation levels you define yourself, each granting an explicit set of capabilities.
  • Customizable and public logs: edit the embed for every log message type, and optionally mirror actions to a separate public channel.
  • Native Discord moderation import that records bans, kicks, and timeouts done with Discord's own tools into the bot's database and log channel.
  • Optional custom case titles, editable reasons, and involved-user tagging on cases.
  • Automatic warn expiration after a configurable period.
  • Customizable messages for every moderation action.
  • Optional nickname changes on mute or quarantine.
  • All actions are logged to a configurable log channel.
  • Multi-image evidence on moderation actions is archived to your server's file library, so old case logs stay viewable after Discord's CDN URLs expire.

Setup

  1. Enable the module on your server.
  2. Open the Configuration and set the Log-Channel where moderation actions will be logged.
  3. Set up your moderation levels in the Moderation Levels configuration. Create one level per staff tier, list the roles that belong to it, and tick exactly the capabilities those roles should have (warn, mute, kick, ban, quarantine, and more). If you are upgrading from an older version, your existing Moderator-Level 1-4 roles are migrated into equivalent levels automatically on startup, so your team keeps working without any change.
  4. All moderators also need to be able to execute the /moderate command. Configure this in your Discord server settings (Server Settings > Integrations).
  5. If you want to use quarantine, set the Quarantine-Role in the configuration. This role should have restricted permissions, and the bot's role should be placed above it in the role hierarchy.
  6. Make sure the bot has the following permissions: Manage Roles, Kick Members, Ban Members, Moderate Members, Manage Channels, Manage Messages, View Channel, Send Messages, and Embed Links. To record native Discord moderation, the bot additionally needs View Audit Log.
  7. Optionally configure the additional systems (Anti-Spam, New-member restrictions, Anti-Join-Raid, Join Gate, Anti-Grief, Verification, Lockdown, and Log Messages) in their respective configuration files.

Usage

Moderation commands

Moderators use the /moderate command with various subcommands to perform actions. Each action is logged in the configured log channel. Users receive a DM notification when a moderation action is taken against them (if their DMs are open).

Every action can optionally tag involved users. When custom case titles are enabled, a short title field is added to the warn, mute, ban, kick, quarantine, and channel-mute commands and becomes required.

Warn

Warns a user. The warning is recorded and can trigger automatic actions if automod thresholds are configured. Requires the Warn members capability.

Mute

Mutes a user using Discord's built-in timeout feature. A duration is required (maximum 28 days). If no duration is set by the moderator, the configured default mute duration is used. Requires the Mute members capability.

Kick

Kicks a user from the server. The user can rejoin using an invite link. Requires the Kick members capability.

Ban

Bans a user from the server. Optionally specify a duration for a temporary ban and the number of days of messages to delete. Works even if the user is not currently on the server. Requires the Ban members capability.

Quarantine

Quarantines a user by assigning them the quarantine role and optionally removing all their other roles (roles are saved and restored on unquarantine). Optionally specify a duration for automatic removal. Requires the Quarantine members capability.

If Strip new roles from quarantined users is enabled (see Configuration), the bot also removes any role that gets added to the user while they are quarantined - including reaction roles, self-roles picked from Discord's Channels & Roles tab, and roles assigned by other bots. Managed roles like server boosts and integration-managed roles are left in place.

Channel-mute

Mutes a user in the current channel only by modifying the channel's permission overwrites. This prevents the user from sending messages in that specific channel. Requires the Channel-mute members capability.

Clear

Deletes a specified number of recent messages from the current channel (default: 5). Requires the Clear messages capability.

Lock and Unlock

Locks or unlocks the current channel, preventing or allowing the @everyone role from sending messages. A reason can be provided when locking. Requires the Lock channels capability.

Context-menu actions

Warn, Mute, Kick, and Ban are also available as right-click actions. Right-click a user (or a message, then choose Apps) and pick Warn, Mute, Kick, or Ban. A modal opens for the reason and, when custom case titles are enabled, the title. Every context-menu action includes an optional evidence field where you can upload up to ten proof images in one go. There are also Report User and Report Message actions for members, and a Mod History action that shows a user's past cases.

Lift punishment

When Lift-punishment buttons are enabled (see Configuration), moderation log messages and the actions view show a Lift punishment button that reverses a mute, ban, quarantine, or warn in one click. You are prompted for a reason, and the action is undone. The button is permission-gated: only staff whose moderation level allows that action type can lift it.

Edit duration

Use /moderate edit-duration, or the Edit duration button and modal in the actions view (shown when Lift-punishment buttons are enabled), to shorten or extend an active temporary mute, ban, or quarantine after it was applied. The affected user is notified of the change by DM (see the Duration Changed Message in Messages).

Edit reason

An Edit reason button appears under each log message and in the actions view - it shares the Lift-punishment buttons toggle (see Configuration). /moderate edit-reason does the same from the command line. The reason is rewritten in place, and the change is recorded as a case event for accountability.

Involved users

A case can reference more than one person - the member who reported it, a second account caught up in the same incident, or a witness. When Allow linking involved users is enabled, add them with the involved option on an action, the /moderate involve command, or the user picker in the actions view. Involved users are reference-only: they are never punished or notified, and they surface through the %involved% log placeholder, so you decide whether they show in your internal log, a public one, or both.

Reporting

Any user can report another user with /report, or right-click a user or message and use Report User / Report Message. A report includes the reason, optional proof images (up to ten in the context-menu flows), and an encrypted snapshot of the current messages in the channel. Reports are sent to the configured report channel (or the log channel if no report channel is set). Configured roles are pinged when a report is received. Members whose moderation level is marked Immune to reports cannot be reported.

Notes

Moderators can create, view, edit, and delete notes about users. Notes are useful for tracking information about users across moderation actions. All moderators with access to the /moderate command can manage notes.

Actions history

Moderators can view all past moderation actions taken against a user, including warns, mutes, kicks, bans, and quarantines. The view is where the per-case buttons live: lift a punishment, edit its duration or reason, add proof, and link involved users - each shown when its feature is enabled.

Evidence archival

Evidence is no longer limited to a single screenshot. You can attach up to ten proof images to a moderation action - both when you act (via the proof option or the context-menu upload field) and afterward, when Allow adding more proof images is enabled, via the Add proof button under each log message or the /moderate add-proof command. Images are archived to your server's file library, the case log links to those permanent URLs instead of Discord's expiring CDN URLs, and the log message updates itself in place, showing everything together as a gallery. Reports carry evidence too.

Stored proof files count against your server's file-storage quota. To opt out, enable Disable attachment archival in the bot's General Configuration; with archival disabled, evidence links revert to Discord's URLs and will eventually expire.

Lockdown

The lockdown system allows you to lock all channels in the server at once. This can be triggered manually by moderators or automatically when security systems (anti-join-raid, join-gate, or anti-spam) are triggered. The lockdown system must be enabled in the Lockdown Configuration first.

When a lockdown is activated, the bot saves the current permission state of all channels, then revokes send-message permissions for the @everyone role. When the lockdown is lifted, the original permissions are restored. An optional auto-lift timer can automatically end the lockdown after a specified number of minutes. Members whose moderation level has Speak during lockdown or Immune to lockdown set are left able to talk.

You can optionally configure specific channels where lockdown and lift messages are sent instead of sending them in every affected channel. Permissions are still changed in all channels regardless of this setting.

Native Discord moderation import

With Import native moderation actions enabled (see Configuration), bans, unbans, kicks, and timeouts carried out with Discord's own built-in tools are recorded into the bot's moderation database and log channel, so your history and infraction counts stay complete no matter how an action was taken. You can enable it per action type (bans/unbans, kicks, timeouts), and optionally DM the affected user. This applies to live actions only (while the bot is running) and requires the bot to have the View Audit Log permission.

Commands

Understand the documentation
In these docs, name:<Type> is an option of a slash-command with name name and the type Type. Options that not required, are described as [name:<Type>]. If the action of a command is vastly different between required and not-required options, we might list them separately.
Examples
  • /moderate ban user:<Member>: This command (/moderate ban) has an required option with the name "user" that only accepts one member as a value.
  • /moderate ban victim:<Member> reason:<Text>: This command (/moderate ban) has an required option with the name "victim" that only accepts one member as a value and another required option with the name "reason" that accepts any text as an value.
  • /moderate ban victim:<Member> reason:<Text> [proof:<Attachment>]: This command (/moderate ban) has an required option with the name "victim" that only accepts one member as a value, another required option with the name "reason" that accepts any text as an value and a not-required option with the name "proof" which allows one attachment as its value.
CommandDescription
/moderate warn user:<User> [reason:<Text>] [proof:<Attachment>] [involved:<User>]Warns a user.
/moderate mute user:<User> duration:<Duration> [reason:<Text>] [proof:<Attachment>] [involved:<User>]Mutes (times out) a user for the specified duration.
/moderate unmute user:<User> [reason:<Text>]Unmutes a user.
/moderate kick user:<User> [reason:<Text>] [proof:<Attachment>] [involved:<User>]Kicks a user from the server.
/moderate ban user:<User> [reason:<Text>] [proof:<Attachment>] [duration:<Duration>] [days:<Number>] [involved:<User>]Bans a user. Optionally set a duration for a temporary ban and the number of days of messages to delete.
/moderate unban id:<UserID> [reason:<Text>]Unbans a user by their user ID. Supports autocomplete.
/moderate quarantine user:<User> [reason:<Text>] [duration:<Duration>] [involved:<User>]Quarantines a user by assigning the quarantine role.
/moderate unquarantine user:<User> [reason:<Text>]Removes a user from quarantine and restores their previous roles.
/moderate channel-mute user:<User> [reason:<Text>] [proof:<Attachment>] [involved:<User>]Mutes a user in the current channel only.
/moderate remove-channel-mute user:<User> [reason:<Text>]Removes a channel mute from a user.
/moderate clear [amount:<Number>]Deletes recent messages in the current channel (default: 5).
/moderate lock [reason:<Text>]Locks the current channel.
/moderate unlockUnlocks the current channel.
/moderate lockdown enable:<Boolean> [reason:<Text>]Activates or lifts the server-wide lockdown (only available if lockdown system is enabled).
/moderate notes view user:<User>View all notes for a user.
/moderate notes create user:<User> notes:<Text>Create a new note for a user.
/moderate notes edit user:<User> note-id:<Number> notes:<Text>Edit an existing note.
/moderate notes delete user:<User> note-id:<Number>Delete a note.
/moderate actions user:<User>View all past moderation actions for a user, with the per-case buttons.
/moderate revoke-warn warn-id:<ID> [reason:<Text>]Revoke a warning by its ID. Supports autocomplete.
/moderate edit-duration id:<ID> duration:<Duration> [reason:<Text>]Shorten or extend an active temporary mute, ban, or quarantine. Supports autocomplete.
/moderate edit-reason id:<ID> reason:<Text>Rewrite the reason of an existing case. Supports autocomplete.
/moderate add-proof id:<ID> photo:<Attachment> [photo2:<Attachment>] [photo3:<Attachment>]Attach extra proof images to an existing case. Supports autocomplete.
/moderate involve id:<ID> user:<User> [remove:<Boolean>]Link (or, with remove, unlink) an involved user to a case. Supports autocomplete.
/report user:<User> reason:<Text> [proof:<Attachment>]Report a user to the moderation team.

Notes:

  • Whether reason and proof are required depends on the Force moderators to set a reason and Force moderators to upload proof configuration options.
  • When Require a custom case title is enabled, an additional required title:<Text> option appears on warn, mute, ban, kick, quarantine, and channel-mute (and their right-click modals). When the feature is off, no title option is added at all.
  • The edit-duration, edit-reason, add-proof, and involve subcommands act on an existing case by its ID and only work when their matching opt-in toggle is enabled.

Configuration

Configuration

In this configuration file, you set up the core moderation settings. Open it in your dashboard.

Moderator permissions no longer live here - they are defined in the separate Moderation Levels configuration. The old Moderator-Level 1-4 role fields are migrated into equivalent levels automatically on startup and are hidden afterward.

FieldDescription
Log-ChannelChannel where moderation actions are logged.
Quarantine-RoleRole assigned to quarantined users. All other roles are removed (and saved for restoration).
Report-ChannelChannel where user reports are sent. Falls back to the log channel if not set.
Remove all roles on quarantineIf enabled, all roles are removed from a user when they are quarantined. Roles are saved and restored on unquarantine.
Strip new roles from quarantined usersIf enabled, any role added to a quarantined user (via Discord's Channels & Roles tab, reaction roles, or another bot) is automatically removed again. Managed roles such as server boosts and integration roles are kept untouched. Off by default.
Prevent manual quarantine role removalIf enabled, the bot re-applies the quarantine role when staff strip it manually instead of using /moderate unquarantine, and posts an alert in the log channel. With it off, the previous behavior is preserved: removing the role manually still implicitly unquarantines the user. Off by default.
Roles to ping on reportsRoles that are pinged in the log/report channel when a user submits a report.
Force moderators to set a reasonIf enabled, moderators must provide a reason for their actions.
Force moderators to upload proofIf enabled (and "Force reason" is also enabled), moderators must upload proof for their actions.
Action on inviteAction taken when a user posts a Discord invite link. Options: none, delete only (remove the message without punishing), warn, mute, kick, quarantine, or ban.
Allowed invite guild IDsServer IDs whose invite links are allowed and will not trigger moderation. Invites to your own server are always allowed automatically.
Action on Scam-LinkAction taken when a user posts a suspected scam link. Same options as invites, including delete only.
Level of Scam-Link-DetectionWhich SCNX-maintained list to match against. "confirmed" only filters verified scam and phishing domains; "suspicious" additionally applies heuristics that may flag not-yet-confirmed domains.
Whitelisted channels for invite-banChannels or categories where invite blocking is disabled.
Whitelisted roles for invite-banRoles that are allowed to bypass invite blocking.
Blacklisted wordsWords that are blocked in messages.
Action on blacklisted WordAction taken when a user posts a blacklisted word. Same options as invites, including delete only.
Default Mute-DurationDefault mute duration when none is specified. Also used for automod actions. Maximum 28 days.
Change nicknames on Mute- / QuarantineIf enabled, users will be renamed when muted or quarantined. The mute / quarantine prefix is applied through the central nickname manager, so it is added once (re-muting never produces [Muted] [Muted] X) and unmuting / unquarantining preserves any role prefix or active streak suffix.
New nickname on muteNickname template when a user is muted. Supports %nickname% (original nickname).
Nickname during quarantineNickname template when a user is quarantined. Supports %nickname% (original nickname).
AutomodDefine automatic actions (mute, kick, ban, quarantine) based on warning count. Format: key = number of warns, value = action (optionally with duration, e.g., "ban:7d").
Should warns be deleted automatically?If enabled, warns are automatically removed after the configured expiration period.
Time after which warns will be automatically removedDuration after which warns expire (e.g., "3 months", "1y", "2w").
Import native moderation actionsIf enabled, bans, unbans, kicks, and timeouts done with Discord's native tools are recorded into the moderation database and log channel. Requires the bot to have View Audit Log, otherwise it stays inactive.
Import native bans and unbansRecord bans and unbans performed with Discord's native tools.
Import native kicksRecord kicks performed with Discord's native tools.
Import native timeoutsRecord timeouts and timeout removals performed with Discord's native tools.
DM users on imported actionsAttempt to DM affected users about an imported action (usually impossible after kicks/bans).
Lift-punishment buttonsShow one-click Lift punishment buttons on moderation log messages and in the actions view. Clicking asks for an optional reason.
Allow adding more proof imagesLet moderators attach extra proof images to an existing case with the Add proof button or /moderate add-proof; the log message updates in place.
Allow linking involved usersLet moderators link extra involved users to a case; they are shown via the %involved% template placeholder.
Require a custom case titleAdd a required short title field to each moderation action (e.g. "Insulting several users"). The title becomes the log embed's heading via %title%, and the case number moves to the footer.

Moderation Levels

In this configuration file, you define your custom moderation levels. Open it in your dashboard.

Each level is an entry that lists the roles it applies to and the capabilities those roles are granted. Create as many named levels as you like - for example a Trial Mod level with only warn and mute, and a dedicated anti-raid level with nothing but lockdown control. A member gets the combined capabilities of every level whose roles they hold. If you are upgrading, your old Moderator-Level 1-4 setup is migrated into equivalent levels automatically and keeps working exactly as before.

FieldDescription
Level nameA name for this moderation level, shown only in the dashboard for your own reference.
RolesMembers holding any of these roles are granted this level's capabilities.
Warn membersAllows warning members and managing warning notes.
Mute membersAllows muting and unmuting members.
Lock channelsAllows locking and unlocking channels.
Channel-mute membersAllows channel-muting members and removing channel mutes.
Kick membersAllows kicking members from the server.
Clear messagesAllows bulk-clearing messages from channels.
Quarantine membersAllows quarantining and unquarantining members.
Ban membersAllows banning and unbanning members.
Bypass automodMembers of this level are exempt from anti-spam and message-protection filters.
Immune to reportsMembers of this level cannot be reported by other users.
Speak during lockdownMembers of this level keep the ability to send messages when a lock-all is issued.
Immune to lockdownMembers of this level are fully exempt from server lockdowns, including channel permission overwrites.

Anti-Spam

In this configuration file, you set up the anti-spam system. Open it in your dashboard.

Anti-spam is split into individual detectors that you enable, tune, and act on separately. There is a set of shared settings and a default action, and then each detector can override the timeframe, action, and auto-delete behavior, and use its own notification message.

Shared settings

FieldDescription
Enabled?Enable or disable the whole anti-spam system.
Timeframe (in seconds)Default time window in which messages are tracked for spam detection. Each detector can override this.
ActionDefault action taken when a detector trips (warn, mute, kick, quarantine, or ban). Detectors set to "inherit" use this.
Automatically delete detected spam messagesGlobal default: also delete the messages that triggered a detection. Auto-delete cleans up the entire offending burst across every channel it landed in. Each detector can override this.
Send Chat-MessageIf enabled, the bot posts a notification in the channel when a detector trips.
MessageThe notification message. Supports %userid%, %reason%, %type% (detector label), %count%, %threshold%, %timeframe%, and %action%.
Whitelisted ChannelsChannels where anti-spam is disabled.
Whitelisted rolesRoles that are exempt from anti-spam detection.

Per-detector fields

Every detector shares the same set of options, on top of its own threshold field(s):

FieldDescription
Enable ... detectionTurn this specific detector on or off.
Timeframe override (in seconds)Detection window for this detector; leave empty to use the global timeframe.
ActionAction for this detector; "Inherit default action" uses the global action, "No action" only deletes.
Action duration (only mute/ban)Duration for a mute or ban (e.g. 1h, 7d); leave empty for the default duration.
Automatically delete spam messagesOverride the global auto-delete default for this detector (inherit / on / off).
Notification overrideA chat notification just for this detector; leave empty to fall back to the global Message.

The detectors and their threshold fields are:

DetectorThreshold field(s)
Message RateMaximal count of messages in timeframe
Duplicate ContentMaximal count of duplicated messages in timeframe
User MentionsMaximal count of pings in timeframe (also counts replies)
Mass MentionsMaximal count of mass-pings in timeframe (@everyone, @here, role pings)
Attachment / Image SpamMax messages with attachments in timeframe
Link SpamMax messages with links in timeframe
Newline / Character FloodMax newlines per message and Max characters per message (a single message crossing either limit trips it)
Sticker / Emoji SpamMax sticker/emoji messages in timeframe and Custom emojis that count as spammy
Channel SpreadMax distinct channels in timeframe (the same user posting across many channels)
Text AbuseOffending messages before action, plus per-check toggles: Detect caps spam (with minimum letters and uppercase percentage), Detect repeated characters (max run length), Detect zalgo / unicode abuse (combining-character percentage), and Detect spoiler spam (max blocks per message).

New-member restrictions

These settings live in the Anti-Spam configuration under the New-Member Restrictions category. They require a minimum time on the server before new members may post attachments and/or links - a simple wall against throwaway accounts that join and immediately paste a scam link. Messages that break the rule are deleted with an optional notice, and repeat offenders can be escalated to a moderation action.

FieldDescription
Enable new-member restrictionsTurn the new-member restrictions on or off.
Attachment restriction ageMembers younger than this (e.g. 1d) cannot post attachments; leave empty to allow attachments.
Link restriction ageMembers younger than this (e.g. 12h) cannot post links; leave empty to allow links.
Notify on violationSend a short, auto-removed notice in the channel when a restricted message is deleted.
Notice messageThe notice text. Supports %userid%, %type% (attachments or links), %required%, %count%, and %threshold%.
Violations before actionNumber of violations within the timeframe that escalate to a moderation action; 0 never escalates.
Violation timeframe (in seconds)Window over which violations are counted toward the threshold.
ActionAction for repeat violations; "inherit" uses the global anti-spam action.
Action duration (only mute/ban)Duration for a mute or ban; leave empty for the default duration.

Log Messages

In this configuration file, you customize the case-log messages posted to your moderation log channel and, optionally, a public log channel. Open it in your dashboard.

Each action type has its own editable embed template, opened with the full embed editor: Mute, Unmute, Quarantine, Unquarantine, Kick, Ban, Warn, Channel-mute, Channel-unmute, Unwarn, and Unban log message. The embed color is always set automatically (yellow for temporary, green for reversals, red for base actions) and overrides any color in the template; the expiry, proof, and channel fields are appended automatically when they apply.

Templates support these placeholders:

PlaceholderMeaning
%title%Custom case title, or the localized "Case #N" when none is set.
%case%The case (action) ID number.
%victim% / %victimId% / %victimAvatar%Name, user ID, and avatar of the affected member.
%moderator% / %moderatorId% / %moderatorAvatar%Name, user ID, and avatar of the acting moderator.
%action%Action label (tmp- prefixed for temporary actions).
%reason%Reason for the action.
%date%Formatted timestamp of when the action was taken.
%expires% / %expiresAt%Formatted expiry, or a live countdown timestamp; empty when the action does not expire.
%duration%Human-readable length of a temporary action, or empty.
%channelName% / %channelMention%Name / mention of the related channel, or empty.
%involved%Mentions of the extra users linked to this case, or empty when none.

Public logs

Optionally mirror actions to a second, public channel with a separate, differently-worded message per action type - keep the detailed internal log private while sharing a friendlier notice with your community.

FieldDescription
Public log channelChannel where public moderation logs are sent; leave empty to disable public logging.
Enable public loggingMaster switch for the public log; when off, no public logs are sent regardless of per-type settings.
Include proof in public logsWhen on, proof attachments are also shown in the public log (off by default so evidence is not exposed publicly).
Public log: mutes / unmutes / bans / unbans / kicks / quarantinesPer-action toggles for whether that action type is also logged publicly.
Public ... log messageThe editable embed template used in the public channel for each enabled action type. Uses the same placeholders as above; automatic fields are never added to public messages.

Anti-Join-Raid

In this configuration file, you set up the anti-join-raid system. Open it in your dashboard.

FieldDescription
Enabled?Enable or disable the anti-join-raid system.
Timeframe (in minutes)Time window in which joins are tracked.
Maximal count of new usersNumber of joins allowed in the timeframe before triggering the system.
ActionAction to take against users who trigger the system (mute, kick, quarantine, ban, or give-role).
RoleRole assigned to users when the action is "give-role".
Remove other rolesIf enabled (and action is "give-role"), other roles are removed from the user after a short delay.

Join Gate

In this configuration file, you set up the join gate. Open it in your dashboard.

FieldDescription
Enabled?Enable or disable the join gate.
Filter all usersIf enabled, actions are taken against all new users regardless of criteria.
ActionAction to take when a user fails the join gate (mute, kick, quarantine, ban, or give-role).
RoleRole assigned to users when the action is "give-role".
Remove other rolesIf enabled (and action is "give-role"), other roles are removed from the user.
Minimum account ageMinimum account age in days required to pass the join gate.
Require profile pictureIf enabled, users must have a profile picture set to pass the join gate.
Ignore botsIf enabled, bots are allowed to pass the join gate without restrictions.

Anti-Grief

In this configuration file, you set up the anti-grief system to prevent moderator abuse. Open it in your dashboard.

This feature automatically quarantines moderators who exceed configured limits for moderation actions within a timeframe. For this to work correctly, place your bot's role above all other roles and ensure the quarantine role is directly below it.

FieldDescription
Enabled?Enable or disable the anti-grief system.
Timeframe (in hours)Time window in which moderation actions are counted.
Maximal amount of warns in the timeframeMaximum warns a moderator can issue before being quarantined.
Maximal amount of mutes in the timeframeMaximum mutes a moderator can issue before being quarantined.
Maximal amount of kicks in the timeframeMaximum kicks a moderator can issue before being quarantined.
Maximal amount of bans in the timeframeMaximum bans a moderator can issue before being quarantined.

Verification

In this configuration file, you set up the verification system for new members. Open it in your dashboard.

Verification types

TypeDescription
Image Captcha (default)Users click a "Verify Me" button in the verification channel. An ephemeral message with a distorted captcha image is shown. They click "Enter Solution" to open a dialog where they type the answer.
Image Captcha (DM, legacy)The original DM-based captcha flow. The bot sends a captcha image via DM and the user replies there. The verification channel doubles as a fallback for users with DMs disabled.
WordUsers click "Verify Me" and a dialog opens with a word they must retype. Difficulty controls word length and obscurity.
MathUsers click "Verify Me" and a dialog opens with an arithmetic problem to solve. Difficulty controls operand size and the operators used.
ManualWhen a member joins, they receive a DM explaining what happens next, and your staff instantly get an approval request with Approve / Deny buttons in the verification log channel - no waiting for the member to click anything first.
ButtonUsers click "Verify Me" and are instantly verified. No challenge, no retries, no cooldowns - useful when you only want a one-click opt-in.

Configuration

FieldDescription
Enabled?Enable or disable the verification system.
Role for users with pending verificationRole assigned to users before they complete verification.
Role for users that passed verificationRole assigned to users after successful verification.
Verification Log ChannelChannel where verification actions are logged and where manual approval requests appear.
Type of verificationHow new members verify. One of Image Captcha (in-channel image), Image Captcha (DM) (legacy, sent via DM), Word (retype a shown word), Math (solve an arithmetic problem), Manual (a moderator approves each member), or Button (one click, no challenge).
Challenge difficultyDifficulty of the verification challenge: easy, medium, or hard. Applies to Image Captcha, Image Captcha (DM), Word, and Math. Ignored for Manual and Button.
Action on failure of verificationAction taken when a user exhausts all verification attempts: kick, quarantine, ban, or mute (timeout).
Verification ChannelChannel where the "Verify Me" button is displayed. For the legacy DM type, serves as a fallback for users with DMs disabled.
Maximum verification attemptsHow many attempts a user gets before the failure action is applied. Applies to Image Captcha, Image Captcha (DM), Word, and Math. Default: 3.
Cooldown between retriesHow long a user must wait between verification attempts (e.g., 5m, 10m). Default: 5m.
Punishment durationDuration for mute or quarantine punishment (e.g., 1h, 1d). Only applies when action on fail is mute or quarantine. Default: 1h.
Cooldown messageMessage shown while a user is in the retry cooldown.
Captcha-MessageMessage shown with the captcha image.
Manual-Verification-MessageMessage sent to users awaiting manual verification.
Captcha failed-MessageMessage shown when a user fails verification.
Captcha completed-MessageMessage shown when a user successfully completes verification.
Verification-Channel-Info-MessageIntroduction message displayed in the verification channel.

Retry system

When using Image Captcha, Image Captcha (DM), Word, or Math verification, users get multiple attempts to verify. After each failed attempt, they must wait for the configured cooldown before trying again. Once all attempts are exhausted, the configured failure action (kick, ban, mute, or quarantine) is applied.

Manual verification has no retry counter (moderators re-review the request instead), and Button verification has nothing to fail.

The retry counter persists across bot restarts. If a user leaves and rejoins the server, their previous attempt count is preserved. A pending manual request is cancelled when a member leaves, and the matching approve/deny log message is disarmed, so a rejoining member is not locked out by a stale request.

Lockdown

In this configuration file, you set up the server-wide lockdown system. Open it in your dashboard.

FieldDescription
Enable lockdown system?Enables the /moderate lockdown command and automatic lockdown triggers.
Lockdown log channelChannel for detailed lockdown log entries. Falls back to the moderation log channel if not set.
Send message in affected channels?If enabled, a message is sent in affected channels when lockdown is activated or lifted.
Channels for lockdown messagesSpecific text channels where lockdown and lift messages are sent. Leave empty to send messages in all affected channels. Permissions are still changed in all channels regardless of this setting.
Lockdown activation messageMessage sent in affected channels when lockdown is activated. Supports %reason% and %user%.
Lockdown lifted messageMessage sent in affected channels when lockdown is lifted. Supports %user%.
Auto-lift lockdown after (minutes, 0 = manual only)Automatically lift the lockdown after the specified number of minutes. Set to 0 for manual-only.
Auto-lockdown on join raid?Automatically activate lockdown when the anti-join-raid system is triggered.
Auto-lockdown on join-gate violations?Automatically activate lockdown when the join-gate system is triggered.
Auto-lockdown on spam detection?Automatically activate lockdown when the anti-spam system is triggered.

Messages

In this configuration file, you can customize all messages sent by the module. Open it in your dashboard.

FieldDescription
No PermissionsMessage shown when a moderator lacks the required capability. Supports %required_level%.
User Not FoundMessage shown when a provided user ID is invalid.
Missing ReasonMessage shown when a reason is required but not provided.
Target Is a ModeratorMessage shown when a moderator tries to act on another moderator.
Report SubmittedConfirmation sent to users after submitting a report. Supports %user% and %mURL%.
Mute MessageDM sent to muted users. Supports %user% and %reason%.
Channel Mute MessageDM sent to channel-muted users. Supports %user%, %reason%, and %channel%.
Channel Unmute MessageDM sent when a channel mute is removed. Supports %user%, %reason%, and %channel%.
Temporary Mute MessageDM sent to temporarily muted users. Supports %user%, %reason%, and %date%.
Quarantine MessageDM sent to quarantined users. Supports %user% and %reason%.
Temporary Quarantine MessageDM sent to temporarily quarantined users. Supports %user%, %reason%, and %date%.
Unquarantine MessageDM sent when quarantine is removed. Supports %user% and %reason%.
Unmute MessageDM sent to unmuted users. Supports %user% and %reason%.
Kick MessageDM sent to kicked users. Supports %user% and %reason%.
Ban MessageDM sent to banned users. Supports %user% and %reason%.
Temporary Ban MessageDM sent to temporarily banned users. Supports %user%, %reason%, and %date%.
Warn MessageDM sent to warned users. Supports %user% and %reason%.
Duration Changed MessageDM sent when a moderator edits how long a temporary punishment lasts. Supports %user%, %reason%, and %date% (the new expiry).
Channel Lock MessageMessage sent in a channel when it is locked. Supports %user% and %reason%.
Channel Unlock MessageMessage sent in a channel when it is unlocked. Supports %user%.

Troubleshooting

  • The bot says the moderator does not have permissions: Make sure the moderator's role is assigned to a moderation level that grants the action's capability. A level that only has "Warn members" cannot mute, kick, or ban.
  • The quarantine command does not work: Ensure the quarantine role is configured and that the bot's role is above the quarantine role in the role hierarchy. The bot needs "Manage Roles" permission.
  • Bans/kicks fail: The bot needs "Ban Members" and "Kick Members" permissions. The bot's highest role must also be above the target user's highest role.
  • Anti-spam is not detecting spam: Verify that anti-spam is enabled overall, that the specific detector you expect (for example Link Spam or Text Abuse) is turned on, and that the channel is not whitelisted. Also check that the user's role is not whitelisted or granted "Bypass automod".
  • Invite/scam link detection is not working: Ensure the "Action on invite" or "Action on Scam-Link" is set to something other than "none". Check that the channel is not whitelisted.
  • Verification DMs fail: Some users have DMs disabled. If you set up a "Restart Verification-Channel", users can retry their verification after enabling DMs.
  • Lockdown command is not available: The lockdown system must be enabled in the Lockdown Configuration before the /moderate lockdown command appears.
  • Native Discord actions are not being logged: Enable "Import native moderation actions" (and the per-type toggles), and make sure the bot has the "View Audit Log" permission. Only live actions are recorded.
  • Anti-grief quarantined a moderator: This is the intended behavior when a moderator exceeds the configured limits. Review and adjust the limits if needed. Note that anti-grief only counts actions performed through the moderation module; abuse committed with Discord's own tools does not trip it, even though those actions can be recorded via native moderation import.

Stored data

The following data is being stored for moderation actions:

  • The user ID of the victim and the moderator
  • The type of action (warn, mute, kick, ban, quarantine, etc.)
  • The reason and, when enabled, the custom case title
  • Any linked involved-user IDs (reference-only)
  • Proof image references archived to the file library
  • Case events such as reason edits and duration changes
  • Additional data (such as saved roles for quarantine)
  • The expiration date (for temporary actions)
  • Metadata about the entry (date when created and last updated)

The following data is stored for user notes:

  • The user ID
  • All notes (including note content, author ID, and timestamps)
  • Metadata about the entry (date when created and last updated)

The following data is stored for lockdown state:

  • Whether the lockdown is active
  • The reason and who triggered it
  • Whether it was automatic
  • A backup of channel permissions for restoration
  • Metadata about the entry (date when created and last updated)

To remove all data stored by this module, purge the module database.

Need more help?
Can't find what you're looking for? Our team is happy to help.