AutoMod lives on the AutoMod tab of the Moderation plugin. It is ten independent rule sets that all share the same structure:
Action — what happens on a hit Role permissions — who the rule applies to Channel permissions — where it applies Settings — the knobs specific to that rule
Every rule starts Disabled. Nothing runs until you pick an action.
| Action | Deletes the message | Writes a warning | Times the member out |
|---|---|---|---|
| Disabled | — | — | — |
| Delete message | ✓ | — | — |
| Warn user | — | ✓ | — |
| Delete message & warn user | ✓ | ✓ | — |
| Timeout user | — | — | ✓ |
| Delete message & timeout user | ✓ | — | ✓ |
Every hit is mirrored into your mod-action log channel, with the rule name and the message that triggered it.
Both scopes use the same two modes, and getting them the wrong way round is the classic AutoMod mistake.
| Mode | Meaning |
|---|---|
| Deny for all roles except … | The rule is enforced for everyone; the listed roles are exempt |
| Allowed are all roles except … | The rule is enforced only for members holding a listed role |
Almost always you want the first mode with your staff roles listed — enforce for everyone, exempt the moderators. Up to 50 roles.
The same two modes, applied to channels. Ids may be individual channels or whole categories — a category id covers every channel inside it.
| Mode | Meaning |
|---|---|
| Deny in all channels except … | Enforced everywhere except the listed channels |
| Allow in all channels except … | Enforced only in the listed channels |
Up to 100 channels. The classic use of the second mode: an #off-topic channel where the link rule
applies and nowhere else.
Blocks messages containing words from your own lists. Two lists, matched differently:
| Setting | Limits | Behaviour |
|---|---|---|
| Word list (exact match) | up to 200 entries, 1–64 characters each | Matches whole words only. ass does not trip on class |
| Word list (any part of the word) | up to 200 entries, 1–64 characters each | Matches anywhere inside a word. ass does trip on class |
Press Enter or type a comma after each word. Start with the exact-match list; the partial list produces false positives fast (this is the "Scunthorpe problem").
Long runs of the same character or the same word repeated.
| Setting | Range | Default |
|---|---|---|
| Max repeated characters | 3–50 | 10 |
| Max repeated words | 2–20 | 3 |
Discord invite links.
| Setting | Limits |
|---|---|
| Allowed invite codes | up to 100 entries, 1–64 characters each |
The code is the part after discord.gg/. Your own server's vanity URL is always allowed and does not
need an entry. This is the safest rule to enable first — almost no false positives.
Any external link.
| Setting | Limits |
|---|---|
| Allowed domains | up to 100 entries, 1–200 characters each |
Subdomains are included: allowing youtube.com also allows music.youtube.com.
Messages that are mostly uppercase.
| Setting | Range | Default |
|---|---|---|
| Uppercase threshold (%) | 10–100 | 70 |
| Minimum letters | 1–200 | 10 |
The minimum stops short messages from tripping it — without it, "OK" is 100 % uppercase.
| Setting | Range | Default |
|---|---|---|
| Max emojis | 1–50 | 5 |
| Setting | Range | Default |
|---|---|---|
| Max spoilers | 1–50 | 3 |
Counts ||spoiler|| blocks.
| Setting | Range | Default |
|---|---|---|
| Max mentions | 1–50 | 3 |
Counts user, role and @everyone mentions together. One of the three rules worth enabling on day
one — mass-mention spam is the most common raid tactic.
Corrupted text built from stacked combining characters.
| Setting | Range | Default |
|---|---|---|
| Max combining marks | 1–50 | 6 |
Too many messages in a short window.
| Setting | Range | Default |
|---|---|---|
| Max messages | 2–30 | 8 |
| Time window (seconds) | 2–120 | 10 |
Counts per member across the whole server, not per channel — hopping between channels does not reset the counter.
Rules using a timeout action share one setting:
| Setting | Range | Default |
|---|---|---|
| Timeout duration (minutes) | 10 seconds – 28 days (40320 minutes) | 10 minutes |
28 days is Discord's hard cap on communication timeouts, not a Cloudy limit.
Warnings on their own do nothing. Escalation turns an accumulated count into a punishment:
"At X active warnings, do Y."
Up to 10 steps, each with a unique threshold. A step fires when the member's active warning count reaches exactly its threshold, so each level punishes once.
| Field | Range | Notes |
|---|---|---|
| Threshold | 1–100 | Must be unique across steps |
| Action | Timeout · Kick · Ban | |
| Timeout duration | 10 seconds – 28 days | Timeout steps only, default 1 hour |
A sane starting ladder:
| Warnings | Action |
|---|---|
| 3 | Timeout 1 hour |
| 5 | Kick |
| 7 | Ban |
0–365 · default 0
Warnings older than this stop counting toward the thresholds. 0 means warnings never expire.
Override the bot's built-in channel messages. Leave a field empty to use the default in your server's language. Each up to 500 characters.
| Notice | Placeholders |
|---|---|
| Warn notice | {user} {rule} |
| Timeout notice | {user} {rule} |
| Escalation notice | {user} {count} {action} |
{user}, watch your language — {rule} is not allowed here.
{user} was muted — {rule}.
{user} collected {count} warnings and was {action}.
{rule} is not available in the escalation notice. Escalation fires for a warning total, not for
a single rule, so the placeholder would have no value to fill in and stays as literal text.Three rules, conservative actions, escalation on:
| Rule | Action |
|---|---|
| Server invites | Delete message |
| Excessive mentions | Delete message & warn user |
| Anti-spam | Delete message & timeout user |
Exempt your staff roles on all three, run it for a week, read the mod log, then tune thresholds before adding more rules.