A scheduled message is text, an embed, or both, posted on a rhythm you define — a weekly event reminder, a daily bump nag, a one-off announcement at midnight on New Year's Eve.
| License | Premium |
| Configured | dashboard only — there are no slash commands |
| Channels per schedule | up to 25 |
| Resolution | one minute |
Each schedule carries a text message, an embed, or both together. The embed is built with the same embed builder used everywhere else in Cloudy, and placeholders work in both.
A schedule posts to one or many channels — pick up to 25. The same message goes to every one of them in the same minute.
Three modes. Picking one blanks the settings of the other two, so switching back and forth cannot resurrect an old rhythm.
Fires a single time at the date and time you set, then stops.
Fires every n minutes, counted from the previous run. Simple and drift-free, but it does not line up with the clock — an interval of 1440 minutes started at 09:13 keeps firing at 09:13.
A five-field cron expression, evaluated in the timezone you choose (IANA, e.g.
Europe/Berlin). This is the mode to use for anything that should sit at a real time of day.
0 20 * * 5 Fridays at 20:00
30 9 * * 1-5 Weekdays at 09:30
0 0 1 * * First day of every month, midnight
*/15 * * * * Every fifteen minutes
Europe/Berlin stays at 20:00 in both summer and winter, which an equivalent UTC expression would
not.The dashboard shows the next run for every schedule. An empty value means the schedule will not fire again — usually because its end date has passed or its run limit is used up.
Three optional limits on top of the recurrence:
| Setting | Effect |
|---|---|
| Starts at | Nothing fires before this moment |
| Ends at | Nothing fires after it; the schedule then switches itself off |
| Max runs | Stop after this many sends |
A schedule that can never fire again is disabled automatically rather than being checked forever.
Off by default. When off, the message can still ping roles and users — only @everyone and
@here are stripped.
When on, Cloudy deletes its last copy before posting the next one. Ideal for a recurring reminder that should exist exactly once in a channel — rules, bump nags, "read the pins".
It is best-effort: a copy Cloudy can no longer see or delete is left in place rather than blocking the new message. Deleting the schedule itself does not remove the last posted copy.
If Cloudy is restarted or briefly offline, a missed occurrence is caught up for up to one hour. Anything older is recorded as handled but not sent, so the schedule rejoins its rhythm instead of suddenly firing yesterday's announcement.
This is why a late delivery does not shift the schedule: Cloudy remembers which occurrence it handled, not the moment it happened to send.
In every target channel Cloudy needs View Channel, Send Messages and — for embeds and attachments — Embed Links and Attach Files. Mention Everyone is only needed if you enabled the @everyone option, and Manage Messages only for Delete previous.