Skip to content
AzraDocs
Pricing Dashboard
Moderation & access

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.

8 sections23 min readOpen the dashboard
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#

CommandPermission actionDescription
/warn <user> <reason> [duration] [silent] [note] [evidence] [category]warnWarn 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>warningsA member's warnings (expired ones shown struck through) plus where they stand on the escalation ladder.
/kick <user> <reason> [silent] [dm_message] [note] [evidence]kickKick a member from the server. They can rejoin via invite.
/ban <user> <reason> [delete_messages] [silent] [dm_message] [note] [evidence]banBan a user from the server, optionally purging their recent messages.
/unban <user_id> <reason>unbanLift a ban so the user can rejoin.
/tempban <user> <duration> <reason> [delete_messages] [silent] [note] [evidence]tempbanTemporarily ban a user — auto-unbanned when the duration expires. Survives bot restarts.
/timeout add <user> <duration> <reason> [silent] [note] [evidence]timeoutTimeout a member for any duration up to Discord's 28-day maximum — type it, e.g. 45m or 1h30m.
/timeout remove <user> <reason>timeoutRemove an active timeout before it expires.
/temprole add <user> <role> <duration> <reason> [silent] [note]temproleTemporarily add a role — auto-removed on expiry.
/temprole remove <user> <role> <duration> <reason> [silent] [note]temproleTemporarily remove a role — auto-restored on expiry.
/purge <amount> [user] [filter] [contains] [has_attachments] [include_pinned]purgeBulk-delete messages in this channel, with optional filters.
/nickname <user> [nickname] [reason]nicknameChange 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.

CommandPermission actionDescription
/mute <user> [reason]voice_muteServer-mute a member in voice channels.
/unmute <user> [reason]voice_unmuteRemove a member's voice server-mute.
/deafen <user> [reason]voice_deafenServer-deafen a member in voice channels.
/undeafen <user> [reason]voice_undeafenRemove a member's voice server-deafen.
/move <user> <channel> [reason]voice_moveMove a member to another voice channel.
/disconnect <user> [reason]voice_disconnectDisconnect a member from their voice channel.

/channel — channel actions#

CommandPermission actionDescription
/channel lock [channel] [reason]lockPrevent @everyone from sending messages in a channel.
/channel unlock [channel] [reason]unlockRestore @everyone sending permissions in a locked channel.
/channel lockdown lock [reason] [category]lockdownLock all text channels at once — or just one category.
/channel lockdown unlock [reason] [category]lockdownUnlock all text channels locked by a previous lockdown.

/role · /slowmode — roles and pacing#

CommandPermission actionDescription
/role add <user> <role> [reason]role_addGive a member a role. It stays until somebody removes it.
/role remove <user> <role> [reason]role_removeTake a role off a member.
/slowmode set <duration> [channel]slowmodeEnable slowmode — e.g. 10s, 1m, 1h30m (max 6 hours).
/slowmode remove [channel]slowmodeDisable slowmode in a channel.

/pin · /unpin · /thread — message housekeeping#

CommandPermission actionDescription
/pin <message_id_or_link>pinPin a message — by its ID or message link. Also !pin (reply to the message, or pass its ID / link).
/unpin <message_id_or_link>unpinRemove the pin from a message. Also !unpin.
/thread [message] [name] [channel_id] [private]threadStart 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]threadDelete the targeted thread — the one you are in, the one you replied in, or the one a message ID belongs to.

/massmod — bulk actions#

CommandPermission actionDescription
/massmod ban <reason> [delete_messages]massmodBan up to 10 members via a user picker.
/massmod kick <reason> [role]massmodKick members — pick specific users, or everyone with a role.
/massmod timeout <duration> <reason> [role]massmodTimeout members — pick specific users, or everyone with a role.
/massmod role <action> <role> [reason]massmodAdd 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.

CommandPermission actionDescription
/punish softban <user> <reason>softbanBan and immediately unban — removes the member and purges their recent messages, without leaving a standing ban.
/punish tempkick <user> <duration> <reason>tempkickKick, then remove them again on every rejoin until the duration expires.
/punish jail <user> <reason> [duration]jailStrip 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>unjailRelease from jail and put the stored roles back.
/punish quarantine <user> <reason>jailAdd 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>unjailRemove the quarantine role.
/punish blacklist <user> <reason>blacklistBar a user permanently — every time they join they are removed again, by kick or by ban (your choice in settings).
/punish unblacklist <user>unblacklistLift a blacklist (and the ban it left behind, if it used ban mode).
/punish lock <user> <reason>lock_userStop 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_userLift a user lock.

/case — the moderation record#

CommandPermission actionDescription
/case view <number>case_viewOne case in full — reason, moderator, duration, evidence, whether the DM landed, and every internal note.
/case history <user>case_viewA member's whole moderation record.
/case list [user] [active]case_viewThe server's recent cases, optionally only the punishments still in force.
/case note <number> <note>case_noteAdd an internal note. Staff only — never shown to the member.
/case reason <number> <reason>case_editCorrect a stated reason. The edit is itself recorded on the case.
/case undo <number> [reason]case_undoReverse a punishment — unban, unjail, remove a timeout, lift a blacklist. The reversal gets its own case.
/case escalation <user>escalation_previewPreview 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.

OptionWhat it does
reasonThe reason recorded on the case and sent to the member. Type to search your saved reasons — or ignore the suggestions and write your own.
silentTake the action with no DM and no public response. It is still logged and still filed as a case.
dm_messageReplace the default DM wording for this one action.
evidenceAttach a screenshot or file. It is stored on the case, shown in the log and linked in the member's DM.
noteAn internal note filed with the case. Staff only — the member never sees it.
categoryWhich moderation category this counts under (spam, toxicity, advertising…). Categories can have their own warning counters and their own escalation ladders.
durationOn 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 week

Combine: 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#

FieldNotes
Case numberPer-server and sequential. Quoted in the member's DM so an appeal can reference it.
Action & categoryWhat was done, and which counter it belongs to.
ModeratorAttribution — also written into Discord's own audit log, so it survives even if you never set up a log channel.
ReasonCorrectable later with /case reason; the correction is recorded.
EvidenceAttachments kept with the case and linked in the log and the member's DM.
Internal notesAppended by any staff member. Never shown to the member.
ExpiryOn temporary actions. Azra performs the reversal itself and closes the case.
Sourcemanual, escalation, automod or dashboard — so you can tell at a glance what the bot did on its own.
ReversalWho 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:

DestinationUsed for
In this server — a channel you pickWarnings, 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 linkKicks, 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:

WarningsPunishment
1DM warning
2Timeout (1 hour)
3Quarantine (or Jail, if you prefer)
4Kick
5Ban

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.

PunishmentNotes
Warning · Temporary WarningRecords a warning; a temporary one stops counting when it expires.
Send DM WarningMessage the member a formal warning and nothing else — the gentlest rung.
Voice Mute · TimeoutTimeouts take a duration, up to Discord's 28-day maximum.
Quarantine · Jail · Temporary JailUse the shared roles configured on the Auto Moderation page.
Lock UserStops them talking anywhere without touching their roles.
Require VerificationSends them back through the captcha gate.
Assign Role · Remove RoleAny role Azra can manage. Optionally temporary.
Kick · Temporary Ban · Permanent BanThe top rungs.
Notify Staff · Log Only · Custom ActionRecord 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#

EventTriggered 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 actionsLock, unlock, slowmode, purge, lockdown, nickname, voice actions, temp-role changes
AutomodEvery automod violation (links, words, AI, mentions)
Anti-SpamAnti-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.

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.

FilterDefaultEnforced by
Profanity / Sexual Content / Slurs presetsOffDiscord AutoMod (keyword presets)
Blocked words (custom + default list)Server default listDiscord AutoMod (keyword rules)
Block links + allowed domainsOffDiscord AutoMod (keyword rule)
Block Discord invitesOffDiscord AutoMod (keyword rule)
Max mentions (default 5) + raid protectionOffDiscord AutoMod (mention spam)
AI moderationOffAzra (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:

ControlWhat it does
Enable / DisableTurn any single rule on or off.
ModeEnforce (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.
PunishmentsPick 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 durationHow 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.
ThresholdsPer-rule counts, windows, percentages, limits and word/pattern lists.
ExceptionsExempt 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.
CooldownDon't re-punish the same member for the same rule within N seconds.
EscalationRepeat offenders get harsher punishment tiers automatically (e.g. warn on the 1st hit, timeout on the 3rd within 30 days, ban on the 5th).
ScheduleMake a rule active only on chosen days / time windows.
Custom messageThe DM / block reason the offender sees.
StatisticsPer-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.

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.