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
Five Actions, One Reference

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.

Happy path

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, or ban: 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

  1. 1Decide the severity floor: low (delete), medium-with-record (warn or strike), short cooldown (mute), kick out (ban).
  2. 2In the rule builder, pick exactly one action card.
  3. 3Set severity, duration, or discord_ban flag depending on the action.
  4. 4If you want the user DMed before the action lands, flip the rule's dm_on_trigger toggle on.
  5. 5Save in Log Only first, watch the Event Log for a day, then flip to Live.

Common failure modes

  • "This action requires Pro" on save
    Free tier only allows delete. Switch the action to delete or upgrade. Rules saved while Pro that later lose Pro degrade gracefully to delete at execution time.
  • Mute or ban silently fails on a specific user
    That 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 reason
    Discord's native timeout and ban banners don't carry the Arkanis reason. Turn the rule's dm_on_trigger flag on so Arkanis DMs them before the action lands with the rule name and reason.
The full per-action reference (side effects, Discord constraints, 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 and reason_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 global dm_notifications_enabled enforcement 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.
ℹ️
Note
Default is off. Existing rules that were created before this flag was wired up don't suddenly start DMing. Flip it on per-rule when you want the user to know exactly which rule they tripped and why.

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_trigger on, 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

FieldTypeDefaultWhat it means
reason_textstring""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 delete action).
  • 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_trigger flag, which overrides the global dm_notifications_enabled enforcement 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

FieldTypeDefaultWhat it means
reason_codestring""Machine-readable category slug for the warning. Falls back to automod_violation at enforcement time. Used for matching the same-category threshold.
reason_textstring""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.

ℹ️
Note
Because this uses Discord's native timeout, the maximum duration enforceable by Discord is 28 days (40320 minutes). Setting a longer 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", plus mute_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_trigger on, 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

FieldTypeDefaultWhat it means
duration_minutesinteger10Length 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_textstring""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_trigger flag, which overrides the global dm_notifications_enabled setting. 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 ban action, 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: true is configured for auto-ban, the bot additionally needs Ban Members.

action_config fields

FieldTypeDefaultWhat it means
categorystring"automod"Category slug recorded on the strike. Used for filtering and for the Enforcement Board breakdown.
severityenum"minor"minor = 1 strike point. major = 2 strike points. Drives how fast the user hits the auto-ban threshold.
reason_textstring""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: calls guild.ban() with delete_message_seconds=0 (does not bulk-purge the user's recent messages).
  • Writes an Event Log entry with action_taken = "ban", ban_reference_id, and discord_ban_success.
  • When the rule has dm_on_trigger on, 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 = false when that happens.

action_config fields

FieldTypeDefaultWhat it means
categorystring"automod"Category slug recorded on the ban. Used for filtering on the Enforcement Board.
reason_textstring""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_banbooleanfalseWhen 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

ActionNeeds permissionRecords in enforcementDMs userTier
deleteManage MessagesNoYes (+ pre-action DM if dm_on_trigger)Free
warnManage MessagesYes — WarningOnly if dm_on_trigger onPro
muteModerate Members + Manage MessagesNo (Discord timeout only)Pre-action DM if dm_on_trigger; otherwise Discord client surfaces itPro
strikeManage Messages (+ Ban Members if it auto-escalates)Yes — StrikeOnly if dm_on_trigger onPro
banBan Members + Manage MessagesYes — BanPre-action DM if dm_on_trigger; strikes service DM via auto-ban escalationPro
ℹ️
Note
Every action tries to delete the triggering message first. If the delete fails (missing permission, message already gone) the rest of the action still runs and the Event Log records delete_success: false.