Plugins

Automations

Premium
When something happens, check conditions, run actions — the full list of 12 triggers, 13 conditions and 19 actions.

An automation is one sentence:

When someone does X, if all of these are true, do these things.

Rules run independently per trigger. Up to 50 rules per server.

LicensePremium
NeedsWhatever the actions need — Manage Roles for role actions, Ban Members for a ban, etc.

Rule basics

Rule name

1–60 characters · required

Internal label. Name it after what it does — Welcome role, No links for new members — because in six months the list is the only documentation you have.

Rule enabled

Default true

Turn a single rule off without deleting it. Useful for seasonal rules and for isolating which rule is causing something.

Cooldown

0–86400 seconds · default 0

Per-user re-trigger cooldown. 0 means no cooldown. A schedule has no user, so there the cooldown applies to the rule itself.

Put a cooldown on anything that gives something away. Without one, an add-coins on message rule is an infinite money printer.

Triggers

The event that starts the rule. Exactly one per rule.

A member…

  • Sends a message
  • Edits a message
  • Deletes a message
  • Clicks an automation button
  • Adds a reaction
  • Receives a role
  • Loses a role
  • Joins a voice channel
  • Leaves a voice channel
  • Creates a thread
  • Joins the server

Or, with nobody acting at all:

  • At a set time (schedule)

Trigger filters

Optional narrowing applied before conditions are evaluated — cheaper and clearer than expressing the same thing as a condition.

FilterLimitApplies to
Only in these channels/categoriesup to 100Any trigger with a channel
Never in these channels/categoriesup to 100Any trigger with a channel
Only for these rolesup to 50Receives / loses a role
Only these emojisup to 50Adds a reaction
Only these button idsup to 50Clicks a button
Cron expression and time zone—Schedule

Channel filters accept category ids too — one category id covers every channel inside it.

Schedule

A schedule rule runs on the clock instead of in response to a member. It takes a five-field cron expression — minute hour day-of-month month day-of-week, with *, a,b, a-b and */n supported and names like MON or shorthands like @daily not — and the IANA time zone it is read in (Europe/Berlin; UTC when empty). The editor offers presets (every hour, every 6 hours, daily at 20:00, every Monday at 20:00, first of the month at 09:00) and previews the next runs. Resolution is one minute.

If Cloudy is briefly busy or restarting, a run that fell due in the last ten minutes is caught up — once, not once per missed minute. When the clocks go back, a fixed time such as 30 2 * * * fires on the first 02:30 only; a rule that repeats through the hour (*/5 * * * *) keeps running in real time. When the clocks go forward, a time that does not exist that night is skipped.

Because nobody acted, a schedule has no member and no message: the role, moderation, DM, coin and XP actions and every message action except send a message are unavailable, and send a message needs an explicit channel. Conditions never pass on a schedule either — there is no user or channel to check — so leave the list empty.

Conditions

All conditions must pass (logical AND). Leave the list empty to always run. Up to 20 conditions.

ConditionPasses when
It happened in one of these channels or categoriesThe event channel is listed
It did NOT happen in one of these channels or categoriesThe event channel is not listed
The user has one of these rolesAny listed role
The user has all of the following rolesEvery listed role
The user has none of these rolesNo listed role
The user does not have all of the following rolesAt least one listed role is missing
The user is one of these usersTheir id is listed
The user is NOT one of these usersTheir id is not listed
The message contains one of these words or phrasesSubstring match
The message contains exactly one of these words or phrasesWhole-word match — not part of a longer word
The message contains none of these words or phrasesNo listed phrase appears
The message has an attachmentType audio, image, text, video or any
The message is / is not a replyMatches the chosen value

Text matching ignores case. Limits: up to 100 channels, 50 roles, 100 user ids, 100 phrases (1–200 characters each) per condition.

The message conditions only make sense for triggers that carry a message — sending or editing one, adding a reaction, clicking a button. On other triggers there is no message to inspect; deletes a message is one of them, because the deleted content is gone.

Actions

Executed in order. A failing action is skipped and the rest still run. Between 1 and 15 actions per rule.

Roles

ActionParameters
Give these roles to the user1–25 roles
Remove these roles from the user1–25 roles

Moderation

ActionParameters
Kick the userOptional reason (up to 400 characters)
Ban the userOptional reason, optional "delete messages of the last 0–7 days"
Unban a userUser id, optional reason
Timeout the user10 seconds – 28 days, optional reason
Remove the user's timeoutOptional reason

Messages

ActionParameters
Send a messageContent (1–2000 characters), target channel (or the trigger's channel), up to 5 buttons
Reply to the messageContent (1–2000 characters)
Send the user a DMContent (1–2000 characters)
Repost the message in another channelTarget channel
Create a thread from the messageThread name (1–100 characters)
Pin the message—
Delete the message—
React to the message with these emojis1–20 emojis

Message content supports the usual placeholders. {server.memberCount} is written in the server's language (1,234 / 1.234), on a schedule too.

Buttons

A send a message action can attach up to five buttons:

FieldRules
Button ID1–60 characters, no colons or whitespace
Label1–80 characters
StylePrimary · Secondary · Success · Danger

The button id is what a button-click trigger matches on. That is the loop that makes automations interactive: rule A posts a message with a button called apply, rule B triggers on a button click filtered to apply and gives out a role.

Economy & XP

ActionParameters
Give the user coins1–1000000
Take coins from the user1–1000000
Give the user XP1–1000000
Take XP from the user1–1000000

Coin actions write straight into the member's Economy balance. XP actions write into Leveling and fail while that plugin is disabled.

Worked examples

Auto-role on join

When:  Joins the server
If:    (nothing)
Do:    Give these roles to the user → @Member

Suggestion threads

When:  Sends a message
       Only in these channels → #suggestions
If:    (nothing)
Do:    React to the message with these emojis → 👍 👎
       Create a thread from the message → "Discussion"
When:  Sends a message
If:    The user has none of these roles → @Level 5
       The message contains one of these words or phrases → http:// https://
Do:    Delete the message
       Send the user a DM → "Links are unlocked at level 5."

A self-service application button

Rule 1
When:  Joins the server
Do:    Send a message → #welcome, "Want to apply?" + button id "apply"

Rule 2
When:  Clicks a button
       Only these button ids → apply
Do:    Give these roles to the user → @Applicant
       Reply to the message → "You now have @Applicant — check #applications."

Weekly reminder

When:  At a set time → 0 20 * * 1, Europe/Berlin
Do:    Send a message → #general, "Community night starts in an hour!"

Behaviour notes

  • Rules are independent. Two rules on the same trigger both run; there is no priority or stop-first.
  • Bots never trigger rules — Cloudy's own messages and reactions included.
  • Deletes a message fires only for messages Cloudy still had in memory. For an older message Discord does not say who wrote it — it could be a bot's, a webhook's or Cloudy's own — so its deletion triggers nothing.
  • A rule that re-triggers itself keeps running until the server hits its budget of 30 rule executions per minute; anything beyond that is dropped for the rest of the minute. Use cooldowns and channel filters rather than relying on the budget.
  • Actions the bot lacks permission for fail and are skipped — nothing is shown in Discord — and the rest of the rule continues. Check your permissions if an action never seems to happen.
  • Role actions are subject to the role hierarchy: Cloudy cannot grant a role above its own. Such roles and managed roles (bot and booster roles) are skipped silently.
  • Saved changes reach the bot within about a minute.
  • Member-join rules do not fire for a member the raid or alt protection just quarantined, kicked or banned.
  • Role-gained / role-lost rules also fire for members who were inactive for a while: Cloudy remembers a member's roles for 7 days after it last saw them join or change roles. The first role change of a member who was quiet for longer — or whom Cloudy has never seen since the rule was created — can still be missed.
  • Repost message links attachments larger than 10 MB instead of re-uploading them, and shortens text to Discord's 2000 characters.
  • Add/remove coins does nothing while the Economy plugin is switched off (or not licensed) — like the XP actions with Leveling.