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.
| License | Premium |
| Needs | Whatever the actions need — Manage Roles for role actions, Ban Members for a ban, etc. |
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.
Default true
Turn a single rule off without deleting it. Useful for seasonal rules and for isolating which rule is causing something.
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.
The event that starts the rule. Exactly one per rule.
A member…
Or, with nobody acting at all:
Optional narrowing applied before conditions are evaluated — cheaper and clearer than expressing the same thing as a condition.
| Filter | Limit | Applies to |
|---|---|---|
| Only in these channels/categories | up to 100 | Any trigger with a channel |
| Never in these channels/categories | up to 100 | Any trigger with a channel |
| Only for these roles | up to 50 | Receives / loses a role |
| Only these emojis | up to 50 | Adds a reaction |
| Only these button ids | up to 50 | Clicks a button |
| Cron expression and time zone | — | Schedule |
Channel filters accept category ids too — one category id covers every channel inside it.
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.
All conditions must pass (logical AND). Leave the list empty to always run. Up to 20 conditions.
| Condition | Passes when |
|---|---|
| It happened in one of these channels or categories | The event channel is listed |
| It did NOT happen in one of these channels or categories | The event channel is not listed |
| The user has one of these roles | Any listed role |
| The user has all of the following roles | Every listed role |
| The user has none of these roles | No listed role |
| The user does not have all of the following roles | At least one listed role is missing |
| The user is one of these users | Their id is listed |
| The user is NOT one of these users | Their id is not listed |
| The message contains one of these words or phrases | Substring match |
| The message contains exactly one of these words or phrases | Whole-word match — not part of a longer word |
| The message contains none of these words or phrases | No listed phrase appears |
| The message has an attachment | Type audio, image, text, video or any |
| The message is / is not a reply | Matches 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.
Executed in order. A failing action is skipped and the rest still run. Between 1 and 15 actions per rule.
| Action | Parameters |
|---|---|
| Give these roles to the user | 1–25 roles |
| Remove these roles from the user | 1–25 roles |
| Action | Parameters |
|---|---|
| Kick the user | Optional reason (up to 400 characters) |
| Ban the user | Optional reason, optional "delete messages of the last 0–7 days" |
| Unban a user | User id, optional reason |
| Timeout the user | 10 seconds – 28 days, optional reason |
| Remove the user's timeout | Optional reason |
| Action | Parameters |
|---|---|
| Send a message | Content (1–2000 characters), target channel (or the trigger's channel), up to 5 buttons |
| Reply to the message | Content (1–2000 characters) |
| Send the user a DM | Content (1–2000 characters) |
| Repost the message in another channel | Target channel |
| Create a thread from the message | Thread name (1–100 characters) |
| Pin the message | — |
| Delete the message | — |
| React to the message with these emojis | 1–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.
A send a message action can attach up to five buttons:
| Field | Rules |
|---|---|
| Button ID | 1–60 characters, no colons or whitespace |
| Label | 1–80 characters |
| Style | Primary · 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.
| Action | Parameters |
|---|---|
| Give the user coins | 1–1000000 |
| Take coins from the user | 1–1000000 |
| Give the user XP | 1–1000000 |
| Take XP from the user | 1–1000000 |
Coin actions write straight into the member's Economy balance. XP actions write into Leveling and fail while that plugin is disabled.
When: Joins the server
If: (nothing)
Do: Give these roles to the user → @Member
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."
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."
When: At a set time → 0 20 * * 1, Europe/Berlin
Do: Send a message → #general, "Community night starts in an hour!"