Plugins

AutoMod

Premium
Ten message rules with a shared structure, per-rule settings, role and channel scoping, and automatic punishment when warnings pile up.

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.

Actions

ActionDeletes the messageWrites a warningTimes the member out
Disabled
Delete message
Warn user
Delete message & warn user
Timeout user
Delete message & timeout user
Timeout actions do not write a warning. Warnings and timeouts are two separate mechanisms: warnings feed the escalation ladder, timeouts are an immediate punishment. If you want both, use a warn action and let escalation apply the timeout.

Every hit is mirrored into your mod-action log channel, with the rule name and the message that triggered it.

Scoping a rule

Both scopes use the same two modes, and getting them the wrong way round is the classic AutoMod mistake.

Role permissions

ModeMeaning
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.

Channel permissions

The same two modes, applied to channels. Ids may be individual channels or whole categories — a category id covers every channel inside it.

ModeMeaning
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.

The fourteen rules

The first ten describe messages a member might plausibly send by accident. The last four — grouped under Attack patterns — describe things nobody produces unintentionally, which is why their defaults are tighter and why they are worth having even on a server that leaves every content filter off.

Bad words

Blocks messages containing words from your own lists. Two lists, matched differently:

SettingLimitsBehaviour
Word list (exact match)up to 200 entries, 1–64 characters eachMatches whole words only. ass does not trip on class
Word list (any part of the word)up to 200 entries, 1–64 characters eachMatches 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").

Repeated text

Long runs of the same character or the same word repeated.

SettingRangeDefault
Max repeated characters3–5010
Max repeated words2–203

Server invites

Discord invite links.

SettingLimits
Allowed invite codesup 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.

SettingLimits
Allowed domainsup to 100 entries, 1–200 characters each

Subdomains are included: allowing youtube.com also allows music.youtube.com.

This is the rule that annoys real members most. Enable it only if your server genuinely bans links, and allow-list the obvious ones (your own site, YouTube, Twitch, GitHub) before you turn it on.

Excessive caps

Messages that are mostly uppercase.

SettingRangeDefault
Uppercase threshold (%)10–10070
Minimum letters1–20010

The minimum stops short messages from tripping it — without it, "OK" is 100 % uppercase.

Excessive emojis

SettingRangeDefault
Max emojis1–505

Excessive spoilers

SettingRangeDefault
Max spoilers1–503

Counts ||spoiler|| blocks.

Excessive mentions

SettingRangeDefault
Max mentions1–503

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.

Zalgo

Corrupted text built from stacked combining characters.

SettingRangeDefault
Max combining marks1–506

Anti-spam

Too many messages in a short window.

SettingRangeDefault
Max messages2–308
Time window (seconds)2–12010

Counts per member across the whole server, not per channel — hopping between channels does not reset the counter.

Attack patterns

Four rules for behaviour that is never accidental. If you enable nothing else on this page, enable these.

Blocks phishing and scam domains — fake Nitro giveaways, cloned Steam login pages, "free gift" sites.

SettingDefault
Extra domainsempty
Lookalike detectionon

Cloudy ships a built-in list of known scam domains that you cannot edit — a server removing discordnitro.gift from it helps nobody. Extra domains adds your own on top; enter bare hostnames, subdomains are matched automatically.

Lookalike detection additionally flags domains that imitate Discord or Steam without being on any list yet: disc0rd.gg, discord.gg.example.com, steamcommunity.ru. Leave it on — new phishing domains appear daily and a list alone is always a day behind.

Cross-channel spam

The same message posted in several channels in quick succession — the signature move of a compromised account.

SettingDefault
Max channels3
Time window (seconds)30

Attachment spam

Too many attachments in a short window, regardless of what they contain.

SettingDefault
Max attachments5
Time window (seconds)20

Sticker spam

The same idea for stickers, which slip past every text-based rule.

SettingDefault
Max stickers4
Time window (seconds)20

Timeout duration

Rules using a timeout action share one setting:

SettingRangeDefault
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.

Warn escalation

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.

FieldRangeNotes
Threshold1–100Must be unique across steps
ActionTimeout · Kick · Ban
Timeout duration10 seconds – 28 daysTimeout steps only, default 1 hour

A sane starting ladder:

WarningsAction
3Timeout 1 hour
5Kick
7Ban

Warning expiry

0–365 · default 0

Warnings older than this stop counting toward the thresholds. 0 means warnings never expire.

Set this to 30 or 60. Without expiry, a member who slipped up three times over two years eventually gets banned for a fourth minor offence, which is rarely what you meant.

Custom notices

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.

NoticePlaceholders
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.

Native AutoMod sync

Cloudy reads a message after Discord has delivered it. Discord's own AutoMod checks it before it is published. For a scam link that difference is the whole point: one blocks the message, the other deletes it a moment after everyone with the channel open has already read it.

Turn native AutoMod sync on and Cloudy creates matching rules inside Discord's own AutoMod for the three rule shapes Discord is able to express:

Cloudy ruleMirrored
Bad words
Scam links
Excessive mentions
Everything else❌ — stays with Cloudy's engine

The rest cannot be mirrored because they depend on state Discord's AutoMod does not track: how many messages arrived in the last ten seconds, how many channels the same text appeared in, how many warnings this member already has.

Mirrored rules keep running in Cloudy's engine too. Discord blocks the message; Cloudy still records the warning, escalates and writes the mod log — you get both halves.

Cloudy owns the rules it creates and prefixes them with Cloudy in your server settings. Do not edit them by hand — the next sync overwrites your changes. Rules you created yourself are never touched.

Switching the option off removes the rules Cloudy created. The feature needs the Manage Server permission; without it Cloudy silently keeps the engine-only behaviour instead of failing.

Four rules, conservative actions, escalation on:

RuleAction
Scam linksDelete message & timeout user
Server invitesDelete message
Excessive mentionsDelete message & warn user
Anti-spamDelete message & timeout user

Exempt your staff roles on all four, run it for a week, read the mod log, then tune thresholds before adding more rules.

Scam links is the one to enable even if you disagree with everything else here: it has no false positives worth worrying about, and the message it stops is the one that costs a member their account.