Moderation
Full moderation suite with persistent audit logs, temp-bans, temp-roles, per-event mod log routing, Discord-native auto-mod, and the enterprise Auto Moderation engine — 180+ individually configurable protection rules.
On this page
Commands Reference#
All moderation commands require the moderation feature to be active on your plan. It is on by default during the Basic trial.
Each moderation action is its own top-level slash command — /warn, /kick, /ban — with no group or prefix in front of it. Add-and-remove pairs (/role, /timeout, /temprole) stay one command with two subcommands. The Permission action column is the capability name used by the permission system — that is what actually decides who may run a command, and it is what you grant or deny per role on the dashboard.
/warn · /kick · /ban — member actions#
| Command | Permission action | Description |
|---|---|---|
/warn <user> <reason> [duration] [silent] [note] [evidence] [category] | warn | Warn a member and open a case. Give a duration to make it a temporary warning that stops counting toward escalation when it expires. |
/warnings <user> | warnings | A member's warnings (expired ones shown struck through) plus where they stand on the escalation ladder. |
/kick <user> <reason> [silent] [dm_message] [note] [evidence] | kick | Kick a member from the server. They can rejoin via invite. |
/ban <user> <reason> [delete_messages] [silent] [dm_message] [note] [evidence] | ban | Ban a user from the server, optionally purging their recent messages. |
/unban <user_id> <reason> | unban | Lift a ban so the user can rejoin. |
/tempban <user> <duration> <reason> [delete_messages] [silent] [note] [evidence] | tempban | Temporarily ban a user — auto-unbanned when the duration expires. Survives bot restarts. |
/timeout add <user> <duration> <reason> [silent] [note] [evidence] | timeout | Timeout a member for any duration up to Discord's 28-day maximum — type it, e.g. 45m or 1h30m. |
/timeout remove <user> <reason> | timeout | Remove an active timeout before it expires. |
/temprole add <user> <role> <duration> <reason> [silent] [note] | temprole | Temporarily add a role — auto-removed on expiry. |
/temprole remove <user> <role> <duration> <reason> [silent] [note] | temprole | Temporarily remove a role — auto-restored on expiry. |
/purge <amount> [user] [filter] [contains] [has_attachments] [include_pinned] | purge | Bulk-delete messages in this channel, with optional filters. |
/nickname <user> [nickname] [reason] | nickname | Change or reset a member's nickname. Omit nickname to reset it. |
Voice actions — one command each#
Six unrelated actions rather than one /voice group, so each sits in Discord's picker under its own name and carries its own permission.
| Command | Permission action | Description |
|---|---|---|
/mute <user> [reason] | voice_mute | Server-mute a member in voice channels. |
/unmute <user> [reason] | voice_unmute | Remove a member's voice server-mute. |
/deafen <user> [reason] | voice_deafen | Server-deafen a member in voice channels. |
/undeafen <user> [reason] | voice_undeafen | Remove a member's voice server-deafen. |
/move <user> <channel> [reason] | voice_move | Move a member to another voice channel. |
/disconnect <user> [reason] | voice_disconnect | Disconnect a member from their voice channel. |
/channel — channel actions#
| Command | Permission action | Description |
|---|---|---|
/channel lock [channel] [reason] | lock | Prevent @everyone from sending messages in a channel. |
/channel unlock [channel] [reason] | unlock | Restore @everyone sending permissions in a locked channel. |
/channel lockdown lock [reason] [category] | lockdown | Lock all text channels at once — or just one category. |
/channel lockdown unlock [reason] [category] | lockdown | Unlock all text channels locked by a previous lockdown. |
/role · /slowmode — roles and pacing#
| Command | Permission action | Description |
|---|---|---|
/role add <user> <role> [reason] | role_add | Give a member a role. It stays until somebody removes it. |
/role remove <user> <role> [reason] | role_remove | Take a role off a member. |
/slowmode set <duration> [channel] | slowmode | Enable slowmode — e.g. 10s, 1m, 1h30m (max 6 hours). |
/slowmode remove [channel] | slowmode | Disable slowmode in a channel. |
/pin · /unpin · /thread — message housekeeping#
| Command | Permission action | Description |
|---|---|---|
/pin <message_id_or_link> | pin | Pin a message — by its ID or message link. Also !pin (reply to the message, or pass its ID / link). |
/unpin <message_id_or_link> | unpin | Remove the pin from a message. Also !unpin. |
/thread [message] [name] [channel_id] [private] | thread | Start a thread from a message — by ID, link, or the message you replied to. The name defaults to the message text. Returns the thread link. |
/thread close:true [message] [channel_id] | thread | Delete the targeted thread — the one you are in, the one you replied in, or the one a message ID belongs to. |
/massmod — bulk actions#
| Command | Permission action | Description |
|---|---|---|
/massmod ban <reason> [delete_messages] | massmod | Ban up to 10 members via a user picker. |
/massmod kick <reason> [role] | massmod | Kick members — pick specific users, or everyone with a role. |
/massmod timeout <duration> <reason> [role] | massmod | Timeout members — pick specific users, or everyone with a role. |
/massmod role <action> <role> [reason] | massmod | Add or remove a role from up to 10 members via a user picker. |
/punish — jail, blacklist and other member actions#
Actions Discord has no verb of its own for. Every one opens a case, DMs the member (with your appeal link) and can be reversed later.
| Command | Permission action | Description |
|---|---|---|
/punish softban <user> <reason> | softban | Ban and immediately unban — removes the member and purges their recent messages, without leaving a standing ban. |
/punish tempkick <user> <duration> <reason> | tempkick | Kick, then remove them again on every rejoin until the duration expires. |
/punish jail <user> <reason> [duration] | jail | Strip every role Azra can manage and assign the jail role. The removed roles are stored and restored on release. With a duration the release is automatic. |
/punish unjail <user> | unjail | Release from jail and put the stored roles back. |
/punish quarantine <user> <reason> | jail | Add the quarantine role and leave their other roles alone. Full containment — no messages and no voice anywhere — the difference from jail is only that their own roles are kept. |
/punish unquarantine <user> | unjail | Remove the quarantine role. |
/punish blacklist <user> <reason> | blacklist | Bar a user permanently — every time they join they are removed again, by kick or by ban (your choice in settings). |
/punish unblacklist <user> | unblacklist | Lift a blacklist (and the ban it left behind, if it used ban mode). |
/punish lock <user> <reason> | lock_user | Stop one member talking, reacting or speaking anywhere, without touching their roles. Useful where a timeout is too blunt and a jail too heavy. |
/punish unlock <user> | unlock_user | Lift a user lock. |
/case — the moderation record#
| Command | Permission action | Description |
|---|---|---|
/case view <number> | case_view | One case in full — reason, moderator, duration, evidence, whether the DM landed, and every internal note. |
/case history <user> | case_view | A member's whole moderation record. |
/case list [user] [active] | case_view | The server's recent cases, optionally only the punishments still in force. |
/case note <number> <note> | case_note | Add an internal note. Staff only — never shown to the member. |
/case reason <number> <reason> | case_edit | Correct a stated reason. The edit is itself recorded on the case. |
/case undo <number> [reason] | case_undo | Reverse a punishment — unban, unjail, remove a timeout, lift a blacklist. The reversal gets its own case. |
/case escalation <user> | escalation_preview | Preview the next automatic punishment for a member before you warn them again. |
Options every action shares#
These are properties of the moderation system, not of individual commands — so every action supports them, and any action added later gets them automatically.
| Option | What it does |
|---|---|
reason | The reason recorded on the case and sent to the member. Type to search your saved reasons — or ignore the suggestions and write your own. |
silent | Take the action with no DM and no public response. It is still logged and still filed as a case. |
dm_message | Replace the default DM wording for this one action. |
evidence | Attach a screenshot or file. It is stored on the case, shown in the log and linked in the member's DM. |
note | An internal note filed with the case. Staff only — the member never sees it. |
category | Which moderation category this counts under (spam, toxicity, advertising…). Categories can have their own warning counters and their own escalation ladders. |
duration | On any temporary action. Written by hand, so you are never boxed into preset lengths. |
Context Menu Quick Actions#
Right-click any user in your server — Apps menu — for one-click mod actions:
Quick BanInstantly ban from the user profile context menu. Logged to mod actions.Quick KickInstantly kick. No confirmation — use with care.Quick TimeoutApply a standard timeout directly from the context menu.Duration Format#
Tempban and temprole use a flexible human-readable duration format:
30s → 30 seconds |
15m → 15 minutes |
2h → 2 hours |
3d → 3 days |
1w → 1 weekCombine:
2h30m · 1d12h · 3d6h30m
Scheduled punishments (tempban expiry, temprole expiry) are persisted to the database and recovered automatically when the bot restarts.
Cases#
Every moderation action — yours, the escalation ladder's, and Auto-Moderation's — files one numbered case.
A case is the whole record of an action: who did it, to whom, why, the DM that was sent, the evidence attached, when it expires, whether it was reversed, and every internal note staff added afterwards. Case numbers are per-server and sequential, so “see case #42” means the same thing to everyone on your team.
The log is built to be read at a glance. One header row — Case 2 | Ban | azul.roster
beside the member's own avatar — then a single three-column grid: User, Moderator
and Reason side by side, and the muted ID: … at the bottom. The left border says
which kind of case it is: red for a damaging action, gold for the restore that
lifts one (an unban or an un-blacklist), and the general moderation orange for everything else. A temporary action
adds its duration and expiry, automation adds where it came from, the DM outcome appears only when it was
not routine (a silent action, or DMs that were closed), and
evidence rides along — while the category, the channel the command was typed in and the surface it came from are
deliberately not on it: they describe the conversation, not the case.
What a case carries#
| Field | Notes |
|---|---|
| Case number | Per-server and sequential. Quoted in the member's DM so an appeal can reference it. |
| Action & category | What was done, and which counter it belongs to. |
| Moderator | Attribution — also written into Discord's own audit log, so it survives even if you never set up a log channel. |
| Reason | Correctable later with /case reason; the correction is recorded. |
| Evidence | Attachments kept with the case and linked in the log and the member's DM. |
| Internal notes | Appended by any staff member. Never shown to the member. |
| Expiry | On temporary actions. Azra performs the reversal itself and closes the case. |
| Source | manual, escalation, automod or dashboard — so you can tell at a glance what the bot did on its own. |
| Reversal | Who reversed it, when and why. The reversal is filed as its own case. |
Appeals#
Every punishment DM carries an Appeal this decision button alongside the member's case number. You set where it goes in Dashboard → Punishments & Cases → Settings, and there are two destinations because a punished member is not always still in your server:
| Destination | Used for |
|---|---|
| In this server — a channel you pick | Warnings, timeouts, jail, quarantine, user locks, role punishments. The member is still here, so the button drops them straight into your ticket panel or appeals channel. |
| Outside Discord — an https link | Kicks, bans, softbans, tempkicks and blacklists. They have been removed, so a channel here would open onto something they can no longer read. Point this at a form, a second Discord server, a website — anything reachable from outside. |
Set either, or both. If you only set the link, it is used everywhere; if you only pick a channel, removed members simply get no button rather than a dead one.
You do not have to leave the page to make that channel: the picker creates one in place (New), and its Create channel button opens the same creator as a dialog with the access panel shown up front — an appeals channel is usually read-only for everyone but staff.
Automatic Punishment Escalation#
Warnings add up, and a ladder decides what happens at each rung. Fully customisable — or leave it alone and use the built-in one.
The default ladder#
Every server starts here, with nothing to configure. One step is added per warning, and each step is harsher than the last:
| Warnings | Punishment |
|---|---|
| 1 | DM warning |
| 2 | Timeout (1 hour) |
| 3 | Quarantine (or Jail, if you prefer) |
| 4 | Kick |
| 5 | Ban |
The moment you edit it, it becomes your ladder — Azra's future changes to the built-in one stop affecting your server. Order is the whole idea: drag the steps up or down to change what happens next, and every step keeps its own warning count.
The quarantine step needs no setup — if the server has no quarantine role, Azra creates and configures one the first time it is used (see Restriction roles on the Escalation tab).
Building your own#
From Dashboard → Punishments & Cases → Escalation you can create as many ladders as you need, each with unlimited levels, and:
- Different ladders for different categories — a spam ladder that times members out, a toxicity ladder that bans.
- Different ladders for different roles — a stricter one for unverified members, a gentler one for boosters.
- Different ladders for specific channels or whole categories — stricter rules in support channels than in off-topic.
- Drag-and-drop reordering of levels, plus duplicate, import and export so a ladder you like can be reused across servers.
- Priority, for when you deliberately want one ladder to beat another.
When more than one ladder could apply, the most specific wins: a category-matched ladder beats a general one, a role-scoped ladder beats a server-wide one, and your own priority setting breaks any remaining tie.
What a level can do#
Each rung sets a warning threshold and a punishment, and can carry its own DM to the member, its own public notice in the channel, and its own note for staff in the log. Leave a message blank and Azra writes one — naming the action and the reason.
| Punishment | Notes |
|---|---|
| Warning · Temporary Warning | Records a warning; a temporary one stops counting when it expires. |
| Send DM Warning | Message the member a formal warning and nothing else — the gentlest rung. |
| Voice Mute · Timeout | Timeouts take a duration, up to Discord's 28-day maximum. |
| Quarantine · Jail · Temporary Jail | Use the shared roles configured on the Auto Moderation page. |
| Lock User | Stops them talking anywhere without touching their roles. |
| Require Verification | Sends them back through the captcha gate. |
| Assign Role · Remove Role | Any role Azra can manage. Optionally temporary. |
| Kick · Temporary Ban · Permanent Ban | The top rungs. |
| Notify Staff · Log Only · Custom Action | Record or alert without punishing. Custom Action posts an instruction for a human to carry out. |
How the counting works#
- A rung fires once. Warning 4 does not re-run the rung at 3 — and a member who jumps from 1 to 4 warnings still gets the rung at 3 rather than skipping it.
- Warnings can expire after a number of days you choose. An expired warning stays in the member's history but stops counting.
- The counter can reset after a configurable quiet period.
- Counters can be per-category, so three spam warnings never push someone over a toxicity ladder.
- Automatic downgrade (off by default) reverses a still-standing escalation punishment once expiries drop the count back below its rung.
- Roles can be exempt from automatic escalation entirely, and escalation can be switched off per category or server-wide.
Who is told what#
Every action Azra takes sends three messages, and each one can be turned off on the Settings tab:
- Staff get a case log in the channel configured for that event — naming the action, the member,
the moderator or automation behind it, the reason and the case number. If nothing is configured, or the channel
it points at has been deleted, Azra creates the right log channel itself
(
#moderation-logs,#automod-logs,#security-logs) and records the route, so an action is never invisible. See Moderation Logging. - The member gets a DM with what was done and why, their case number, the duration and your appeal button — plus what happens next: "If this happens again: Timeout — at 2 warnings", read from the ladder that governs them. Turn it off with DM the member when action is taken.
- The channel where it happened gets a short public notice naming the action and the reason, so the people who saw the behaviour also see it handled. A level with its own public message uses that text instead. Turn it off with Post a public notice when a member is actioned.
Moderation Logging#
Every action is posted to Discord as a rich embed via a webhook styled with your Branding. Mod logging now lives on the central Logging page alongside every other module's logs.
Open Dashboard → Logging, enable logging, and pick a default channel (or a dedicated channel per event). You no longer paste webhook URLs — pick a channel and the bot creates and manages the webhook for you. Moderation events you can route individually:
Events you can route#
| Event | Triggered By |
|---|---|
| Warn | /warn command |
| Kick | /kick, /massmod kick, quick kick context menu |
| Ban | /ban, /tempban, /massmod ban, quick ban, anti-nuke bans |
| Unban | /unban, expired tempban auto-unban |
| Timeout | /timeout add, /massmod timeout, quick timeout |
| Other actions | Lock, unlock, slowmode, purge, lockdown, nickname, voice actions, temp-role changes |
| Automod | Every automod violation (links, words, AI, mentions) |
| Anti-Spam | Anti-spam triggers |
One channel per event#
Actions taken outside Azra#
Auto-Moderation#
Powered by Discord's built-in AutoMod. When you enable a filter, Azra creates the matching AutoModeration rule in your server — so it keeps working even when Azra is briefly offline, applies to edited messages too, and blocks offending messages the instant they're posted.
Word Presets#
One-click Profanity, Sexual Content and Slurs filters backed by Discord's own continuously-updated, multi-language lists.
Blocked Words#
Your server's custom words (and Azra's shipped default list) are pushed into Discord keyword rules — add anything specific to your community below.
Link Filter#
Block messages containing links, with an Allowed Domains whitelist for the sites you want to permit.
Invite Filter#
Block Discord server invites — discord.gg/…, discord.com/invite/… and common variants. Discord normalises many obfuscation attempts automatically.
Mention Spam#
Block messages that ping more than your configured limit, plus optional raid protection for coordinated mention raids.
What runs where#
Everything Discord's AutoMod can enforce is handled natively; the check it can't do stays inside Azra.
| Filter | Default | Enforced by |
|---|---|---|
| Profanity / Sexual Content / Slurs presets | Off | Discord AutoMod (keyword presets) |
| Blocked words (custom + default list) | Server default list | Discord AutoMod (keyword rules) |
| Block links + allowed domains | Off | Discord AutoMod (keyword rule) |
| Block Discord invites | Off | Discord AutoMod (keyword rule) |
| Max mentions (default 5) + raid protection | Off | Discord AutoMod (mention spam) |
| AI moderation | Off | Azra (OpenAI — requires an API key) |
Auto Moderation Engine#
An enterprise-grade layer that sits on top of the native filters above. It adds every protection Discord's AutoMod can't express — anti-raid, anti-nuke, voice/thread/reaction abuse, username & profile scanning, attachment and image checks, and much more — with 182 rules across 23 categories, each individually configurable.
Every rule, individually configurable#
Each rule exposes the same complete control set:
| Control | What it does |
|---|---|
| Enable / Disable | Turn any single rule on or off. |
| Mode | Enforce (detect + punish + log), Test (detect + log, tagged TEST, but never punish — a dry run against live traffic), Simulate (count silently, no log, no punishment — to size a threshold before going live), or Log only. |
| Punishments | Pick any combination — they run in a safe order (content removal → member action → notification): Ignore, Log only, Delete, Block, Warn, Temp-warn, Timeout, Quarantine role, Jail, Remove dangerous roles, Require re-verification, Kick, Soft ban, Ban, Lock channel, Lock server, DM user, Notify staff, Custom webhook. |
| Timeout duration | How long a timeout lasts, in minutes, per rule. Defaults to 5 / 10 / 15 / 30 minutes by severity (low → critical), so a formatting rule never times somebody out as long as a scam rule — and you can override it on any rule's card. |
| Thresholds | Per-rule counts, windows, percentages, limits and word/pattern lists. |
| Exceptions | Exempt roles, users, channels, categories, threads, bots, webhooks, admins and moderators — or restrict a rule to only certain channels/roles. Plus account-age and membership-age gates. |
| Cooldown | Don't re-punish the same member for the same rule within N seconds. |
| Escalation | Repeat offenders get harsher punishment tiers automatically (e.g. warn on the 1st hit, timeout on the 3rd within 30 days, ban on the 5th). |
| Schedule | Make a rule active only on chosen days / time windows. |
| Custom message | The DM / block reason the offender sees. |
| Statistics | Per-rule detection & punishment counts over the last 30 days, shown on the page. |
First offence vs repeat offenders#
A punishment answers behaviour, so a rule only reaches for it once the behaviour has shown itself to be a pattern. On a rule's first hit against a member, a simple rule (low or medium severity) warns them — the message is still deleted or blocked, the violation is still logged, and the member gets a DM — and the punishment you configured lands on the third break of that same rule within 7 days. A serious rule (high or critical) — scams, phishing, slurs, threats, anti-nuke, raid — is punished straight away, because waiting for a second scam link is the wrong trade.
How long that punishment lasts is severity's business too: a timeout defaults to 5 minutes on a low-severity rule, 10 on medium, 15 on high and 30 on critical — and every rule's card has its own Timeout duration box when you want a different number.
The rule catalogue#
Rules are grouped into 23 categories. Filters marked Native are pushed onto Discord's own AutoMod where possible (and always run inside Azra too); the rest are enforced by Azra.
Keyword Filters Native#
Bad words, profanity, slurs, hate speech, threats, scam/phishing/crypto terms, advertising, invites, URLs, domain & IP blocklists, email/phone, custom/wildcard/regex patterns, required phrases and whitelists.
Spam Detection Native#
Message, duplicate, rapid, character, emoji, sticker, GIF, attachment, image, video, link, invite, mention, role-mention, @everyone/@here, thread, poll, embed and reaction spam.
Text Abuse#
Excessive caps, invisible characters, Unicode/homoglyph abuse, Zalgo text, repeated characters, excessive punctuation, line-break, markdown and code-block spam.
Link Protection#
Discord & external invites, scam, phishing, malware, URL shorteners, IP grabbers, trackers, adult, torrent, crypto-scam, fake-login and fake-Nitro links.
Image Moderation Optional#
NSFW detection, QR & scam-QR decoding, OCR text scanning, offensive/advertisement/AI-scam imagery. Needs an OpenAI key or the optional QR/OCR packages.
Attachment Protection#
Executables, scripts, dangerous / password-protected archives, oversized files and an allow-list mode for unsupported types.
Anti Raid#
Join-flood, invite-join, alt / new / recently-created account, bot-raid, username-pattern, avatarless and scripted-cadence detection — with optional server lockdown.
Anti Nuke#
Mass bans/kicks/timeouts, role & channel & category create/delete/update, webhook, emoji, sticker, invite, integration and bot-invite floods, and server-setting changes.
Username / Nickname#
Offensive, fake-staff, fake-bot, scam, advertising, Unicode-abuse and invisible-character names — with optional auto-rename.
Profile Protection Optional#
Offensive / NSFW / scam avatars and banners (needs image classification).
Voice Protection#
Join/leave/switch, camera, screen-share, soundboard, mute and deaf toggle spam.
Threads · Reactions · Invites · Polls#
Thread create/rename/archive spam, reaction flooding, invite-creation policy (external / permanent / temporary / vanity) and poll spam.
Webhooks · Bots · Roles · Channels#
Unauthorized webhook management, dangerous/suspicious bot adds, dangerous-permission & Administrator role grants, mass role assignment, and channel rename/topic/overwrite abuse.
Emoji/Sticker & Server#
Mass emoji/sticker creation and unauthorized updates; server name, icon, banner, vanity, community, verification and safety-setting changes.
Shared settings#
A few settings are shared by every rule that uses them, set once at the top of the page: the Quarantine and Jail roles, the Staff role pinged by Notify staff, an optional alert webhook for the Custom webhook action, and the default DM message.
Anti-Spam#
Uses Discord's native Spam filter, which automatically detects and blocks spammy, repeated and mass-posted content on Discord's side — no thresholds to tune.
Turn it on from Dashboard → Moderation → Anti-Spam — a single switch. When enabled, Azra adds Discord's Spam-content AutoMod rule to your server (it needs the Manage Server permission, same as Auto-Moderation). Blocked spam is recorded to your logs like any other moderation action.
Mass Moderation#
Take action on multiple users at once — ideal for raid cleanup after an attack.
massmod banBan up to 10 members, chosen with a user picker. Optionally deletes their recent messages.massmod kickKick specific members via the picker — or pass role to kick everyone holding that role.massmod timeoutTimeout members for a shared duration, via the picker or by role.massmod roleAdd or remove a role from up to 10 members at once.Every target is confirmed before anything runs, and each action is logged individually to your mod log.