moderation
Enforcer
Policy-driven, hands-off moderation: the bot flags possible violations from a server policy and a moderator decides — everything is bookkept in a read-only ledger and the database. Moderators never DM or confront the suspect directly; the bot mediates every action.
Disabled by default (opt-in)Requires the MessageContent privileged intent
Policy-driven moderation where staff never have to confront a player directly.
Why gaming communities love it
- The bot flags the message, shows the moderator the exact context, and the moderator just picks Warn, Timeout, Kick or Ban — the bot does the talking to the player.
- Every flag and every decision lands in a read-only ledger channel, so a competitive community can show sponsors and players a transparent, tamper-evident moderation record.
- Built for servers that run tournaments or paid coaching, where a single unfair-looking mod interaction can blow up in public — Enforcer keeps the process consistent and documented.
- Optional AI risk scoring is clearly labelled assistive-only; it never decides or acts on its own.
Full command reference
| Command | Description | Who can use it | Example |
|---|---|---|---|
/enforcer setup | Set up (or repair) the ledger channel, flag-queue channel, and mute role. | Everyone | /enforcer setup [ledger_channel:#general] [ledger_visibility:"ledger_visibility"] [flag_channel:#general] [mute_role:@Moderators] [capture_context:true] [repair:true] |
/enforcer status | Show Enforcer setup status, health, and configuration. | Everyone | /enforcer status |
/enforcer policy create | Create a policy with one matcher (add more from the dashboard). | Everyone | /enforcer policy create name:"name" description:"description" severity:"severity" matcher_type:"matcher_type" matcher_value:"matcher_value" [case_sensitive:true] [whole_word:true] [suggested_action:"suggested_action"] [scope_channel:#general] [exempt_role:@Moderators] |
/enforcer policy list | List every policy. | Everyone | /enforcer policy list |
/enforcer policy view | View a policy in detail. | Everyone | /enforcer policy view policy:"policy" |
/enforcer policy edit | Edit a policy. | Everyone | /enforcer policy edit policy:"policy" [name:"name"] [description:"description"] [severity:"severity"] [suggested_action:"suggested_action"] [matcher_type:"matcher_type"] [matcher_value:"matcher_value"] |
/enforcer policy delete | Delete a policy. | Everyone | /enforcer policy delete policy:"policy" |
/enforcer policy toggle | Enable/disable a policy. | Everyone | /enforcer policy toggle policy:"policy" |
/enforcer policy test | Test sample text against policies without flagging anyone. | Everyone | /enforcer policy test text:"text" [policy:"policy"] |
/enforcer policy import | Import a starter policy pack. | Everyone | /enforcer policy import pack:"pack" |
/enforcer flag | Manually flag a user for non-message behaviour (no message to point at). | Everyone | /enforcer flag user:@user reason:"spamming links" [policy:"policy"] |
/enforcer search | Search the ledger. | Everyone | /enforcer search [user:@user] [kind:"kind"] [decision:"decision"] [policy:"policy"] [since:"since"] |
/enforcer record | View a ledger record in detail. | Everyone | /enforcer record number:10 |
/enforcer history | Summarize a user's Enforcer history. | Everyone | /enforcer history user:@user |
/enforcer export | Export ledger records as CSV. | Everyone | /enforcer export [since:"since"] |
/enforcer appeal | Appeal an Enforcer record (member-facing). | Everyone | /enforcer appeal record:10 |
/enforcer mute | Mute a user with the configured mute role, through the standard decision pipeline. | Everyone | /enforcer mute user:@user [duration:1h] [reason:"spamming links"] |
/enforcer unmute | Remove the mute role from a user. | Everyone | /enforcer unmute user:@user [reason:"spamming links"] |
/Flag for reviewMessage context menu | Helper+ | /Flag for review |