AutoMod Actions
What delete, warn, mute, strike, and ban actually do when any AutoMod rule fires. The canonical reference for every action_config field.
Open AutoMod →Actions are what the bot does when a rule fires. The trigger decides whether to act; the action decides what happens. Every AutoMod rule pairs exactly one trigger with exactly one action.
What is this?
The umbrella reference for the five things AutoMod can do when a rule matches: delete, warn, mute, strike, or ban. Each one is documented here with what it does to the message, what it does to the user, and which action_configfields shape the behavior.
Why you might want it
Read this when you're deciding what should actually happen the moment a rule fires. Delete is right for low-stakes content; warn or strike give the user a paper trail; mute or ban remove them from the conversation. Pick the right action for the right severity and the rule stops being scary.
What this is for
Picking the right thing for the bot to do the instant a rule matches. Five actions, from the lightweight delete (free tier) up to a Pro-tier ban that also kicks the user out of Discord.
Before you start
- ·You already have an AutoMod rule (or are creating one). See AutoMod Rules for the full builder.
- ·For
warn,mute,strike, orban: your guild is on Pro. - ·For
mute: the bot has Moderate Members and the bot's role is above the target user's top role. - ·For
ban: the bot has Ban Members and the bot's role is above the target user's top role.
5-minute setup
- 1Decide the severity floor: low (delete), medium-with-record (warn or strike), short cooldown (mute), kick out (ban).
- 2In the rule builder, pick exactly one action card.
- 3Set severity, duration, or
discord_banflag depending on the action. - 4If you want the user DMed before the action lands, flip the rule's
dm_on_triggertoggle on. - 5Save in Log Only first, watch the Event Log for a day, then flip to Live.
Common failure modes
- "This action requires Pro" on saveFree tier only allows
delete. Switch the action todeleteor upgrade. Rules saved while Pro that later lose Pro degrade gracefully todeleteat execution time. - Mute or ban silently fails on a specific userThat user's top role is above the bot's role, or they have Administrator (Discord refuses to timeout admins). Move the bot's role above the target's role in Server Settings → Roles. The Event Log records
error_code = "mute_failed"on this shape. - The user never sees the rule reasonDiscord's native timeout and ban banners don't carry the Arkanis reason. Turn the rule's
dm_on_triggerflag on so Arkanis DMs them before the action lands with the rule name and reason.
action_config fields, and tier badges) is the rest of this page.There are five actions available: delete, warn, mute, strike, and ban. Only delete is available on the free tier. The other four require Arkanis Pro. Pro-only actions are enforced by both the web UI and the API — they can't be created by any client on a free-tier server. Existing rules that were saved while a guild was on Pro and later lost the subscription gracefully degrade to delete at execution time — the message is still removed, but no enforcement record is created.
When a rule is set to Log Only, the bot evaluates the rule and records an entry in the Event Log but does not execute the action. Flip a rule to Live to enforce.
"DM on trigger" — per-rule DM control
Every AutoMod rule carries a dm_on_trigger boolean (defaults to off). This flag lets you tune whether the user receives a direct message when the rule fires, independent of the server's global Enforcement → DM notifications toggle.
delete,mute,ban: when on, the bot DMs the user before the action lands with the rule name andreason_text. Native Discord timeout/ban banners don't carry the Arkanis reason, so this is the only way the user sees it. When off, no pre-action DM is sent.warn,strike: the rule flag overrides the globaldm_notifications_enabledenforcement setting. When on, the user is always DMed with the warning/strike embed. When off, no DM is sent from the AutoMod path — even if the global flag is on.- If the user has DMs closed, the failure is logged at debug level and the action proceeds normally.
delete — Delete the message
The bot calls Discord's message.delete() on the triggering message, then posts a short channel notice tagging the author and sends them a DM with the reason and (where the trigger captured one) the flagged content. The channel notice is styled as an auto-deleting embed that Discord removes after 15 seconds.
When to use it
- Content should be removed but you do not want to escalate to a sanction record (warning, strike, or ban).
- Free-tier servers. It is the only action available without a Pro subscription.
Side effects
- Posts a grey “Message Removed” embed in the channel that auto-deletes after 15 seconds.
- DMs the author with the reason text, the flagged content (if captured), and the channel name.
- When the rule has
dm_on_triggeron, Arkanis also sends a pre-action DM with the rule name and reason before the deletion. See "DM on trigger". - Writes an entry to the Event Log with
action_taken = "delete". - Does not create a Warning, Strike, or Ban record. Does not count toward auto-strike or auto-ban thresholds.
Discord constraints
- The bot needs Manage Messages in the channel where the rule fires.
- Discord does not allow bulk-deleting messages older than 14 days — but AutoMod only acts on fresh messages, so this rarely matters.
- If the deletion fails (permissions, race with another bot, message already gone) the rule still logs the event and sets
delete_success = false.
action_config fields
| Field | Type | Default | What it means |
|---|---|---|---|
| reason_text | string | "" | Human-readable reason shown in the channel notice and the DM. Falls back to "Automatic moderation action" at enforcement time when left blank. |
warn — Issue a warning [Pro]
The bot deletes the message, then creates a Warning record through the enforcement system and DMs the user with the warning number, reason, category, and conversion thresholds. Multiple warnings can automatically convert into a strike, and strikes can auto-ban — this action plugs into the full enforcement escalation chain.
When to use it
- Low-severity rules (emoji spam, caps spam, mild profanity) where you want a paper trail without a timeout.
- First-offender posture: let repeated warnings accumulate into a strike via the enforcement settings.
Side effects
- Deletes the message first (same code path as the
deleteaction). - Writes a Warning row and an enforcement audit entry. Shows up on the user's record in the Enforcement Board.
- DMs the user with warning number, reason, category, reference ID, and conversion thresholds (e.g. “2 same-category warnings = Strike”). DM is gated by the rule's
dm_on_triggerflag, which overrides the globaldm_notifications_enabledenforcement setting. See "DM on trigger". - Posts a yellow/orange channel notice tagging the user (auto-deletes after 15s).
- Counts toward the warning-to-strike thresholds. If the warning auto-converts into a strike, the strike can in turn trigger the auto-ban threshold.
- Writes an Event Log entry with
action_taken = "warn".
Discord constraints
- Manage Messages permission for the delete step.
- No extra Discord permission for the warning itself — it is a database record, not a Discord-level sanction.
action_config fields
| Field | Type | Default | What it means |
|---|---|---|---|
| reason_code | string | "" | Machine-readable category slug for the warning. Falls back to automod_violation at enforcement time. Used for matching the same-category threshold. |
| reason_text | string | "" | Human-readable reason shown in the DM and the channel notice. Falls back to "Automatic moderation action" when blank. |
mute — Apply a Discord timeout [Pro]
The bot deletes the message and calls Discord's native member.timeout() for the configured duration. The user is muted server-wide: they cannot send messages, react, or join voice channels until the timeout expires. This is Discord's own timeout feature — not an Arkanis mute role.
duration_minutes will fail at the Discord API boundary.When to use it
- Mention-bomb and raid-response rules where a short cooldown stops the noise without escalating to a strike.
- Short-term “cool off” sanctions (5–30 minutes) for heat-of-the-moment violations.
Side effects
- Deletes the message first.
- Applies a Discord timeout with reason
"Arkanis AutoMod: <reason_text>"— this string shows up in Discord's own Audit Log. - Writes an Event Log entry with
action_taken = "mute", plusmute_duration_minutes. - Does not create a Warning, Strike, or Ban record and does not count toward auto-strike or auto-ban thresholds.
- When the rule has
dm_on_triggeron, Arkanis DMs the user with the rule name and reason before the timeout lands (Discord's own timeout banner doesn't carry that text). See "DM on trigger".
Discord constraints
- The bot's role needs Moderate Members and must be above the target user's highest role in the role hierarchy.
- Discord refuses to timeout users with the Administrator permission — the mute will fail and the Event Log records
error_code = "mute_failed". - Timeouts cannot exceed 28 days per Discord's API.
action_config fields
| Field | Type | Default | What it means |
|---|---|---|---|
| duration_minutes | integer | 10 | Length of the Discord timeout in minutes. Capped at 40320 (28 days) by Discord. The bot and the web UI both default to 10 minutes when this field is missing. |
| reason_text | string | "" | Reason passed to Discord and written to the Discord Audit Log. Falls back to "automod violation" when blank. |
strike — Issue a strike [Pro]
The bot deletes the message and calls the enforcement service to add a Strike to the user's record. Strikes carry a point value (minor = 1 point, major = 2 points) and feed into the auto-ban threshold configured under Enforcement. The user is DMed with the strike number, reason, point total, and remaining distance to an auto-ban.
When to use it
- Medium-severity rules where you want the violation to count toward an eventual auto-ban.
- Content-policy violations that are bad enough to skip the warning step.
Side effects
- Deletes the message first.
- Creates a Strike record with an enforcement audit trail. Appears on the user's Enforcement Board profile.
- DMs the user with the strike number, severity, point count vs threshold, and an appeal reference ID. DM is gated by the rule's
dm_on_triggerflag, which overrides the globaldm_notifications_enabledsetting. See "DM on trigger". - Posts a coloured channel notice (yellow → orange → red as strike count rises) that auto-deletes after 15s.
- May trigger an automatic ban if the user's total strike points now meet the guild's auto-ban threshold. The escalation uses the same code path as the
banaction, including its own ban-notification DM. - Writes an Event Log entry with
action_taken = "strike".
Discord constraints
- Manage Messages for the delete step.
- No Discord permission for the strike record itself.
- If the strike auto-escalates to a ban and
discord_ban: trueis configured for auto-ban, the bot additionally needs Ban Members.
action_config fields
| Field | Type | Default | What it means |
|---|---|---|---|
| category | string | "automod" | Category slug recorded on the strike. Used for filtering and for the Enforcement Board breakdown. |
| severity | enum | "minor" | minor = 1 strike point. major = 2 strike points. Drives how fast the user hits the auto-ban threshold. |
| reason_text | string | "" | Reason stored on the strike and shown in the DM / channel notice. Falls back to "Automatic moderation action" when blank. |
ban — Ban the user [Pro]
The bot deletes the message and records a Ban against the user through the enforcement service. Optionally, with discord_ban: true, it also calls Discord's native guild.ban() so the user is actually kicked out of the server. Without that flag, Arkanis holds the ban in its own enforcement ledger without touching Discord — useful for cross-server reputation before pulling the trigger on a real Discord ban.
When to use it
- Confirmed raid bots and burner accounts — pair with
discord_ban: true. - Hate-speech or targeted-harassment rules where no warning ladder is needed.
Side effects
- Deletes the message first.
- Creates a Ban record in the enforcement ledger (always major severity).
- When
discord_ban: true: callsguild.ban()withdelete_message_seconds=0(does not bulk-purge the user's recent messages). - Writes an Event Log entry with
action_taken = "ban",ban_reference_id, anddiscord_ban_success. - When the rule has
dm_on_triggeron, Arkanis DMs the user with the rule name and reason before the ban is recorded. (For bans triggered by auto-ban escalation, the strikes service also sends its own ban notification DM.) See "DM on trigger".
Discord constraints
- Ban Members permission on the bot's role, and the bot's role must be above the target user's highest role.
- Discord refuses to ban the server owner and will fail on users with a higher role than the bot. The Event Log records
discord_ban_success = falsewhen that happens.
action_config fields
| Field | Type | Default | What it means |
|---|---|---|---|
| category | string | "automod" | Category slug recorded on the ban. Used for filtering on the Enforcement Board. |
| reason_text | string | "" | Reason stored on the ban and passed to Discord's native ban as the audit reason. Falls back to "Automatic moderation action" (and "automod violation" for the Discord ban) when blank. |
| discord_ban | boolean | false | When true, the bot additionally calls Discord's native guild.ban() so the user is actually removed from the server. When false, the ban lives only in Arkanis's enforcement ledger. |
Quick comparison
| Action | Needs permission | Records in enforcement | DMs user | Tier |
|---|---|---|---|---|
| delete | Manage Messages | No | Yes (+ pre-action DM if dm_on_trigger) | Free |
| warn | Manage Messages | Yes — Warning | Only if dm_on_trigger on | Pro |
| mute | Moderate Members + Manage Messages | No (Discord timeout only) | Pre-action DM if dm_on_trigger; otherwise Discord client surfaces it | Pro |
| strike | Manage Messages (+ Ban Members if it auto-escalates) | Yes — Strike | Only if dm_on_trigger on | Pro |
| ban | Ban Members + Manage Messages | Yes — Ban | Pre-action DM if dm_on_trigger; strikes service DM via auto-ban escalation | Pro |
delete_success: false.