Scheduled jobs
Scheduled jobs run an action on a repeating schedule, such as posting a daily message, cleaning up old threads, or rewarding your most active members each week.
The Scheduled jobs feature is on by default. Open Scheduled jobs in the sidebar, then click New schedule. Scheduled jobs are managed by the server owner.
Creating a schedule
Every schedule has:
- A Name (up to 100 characters) so you can recognise it later.
- A kind (what it does, see below).
- A cron expression and a time zone (when it runs, see When it runs).
- An Enabled switch.
As you edit, the page previews the next five fire times and warns you if the schedule fires too often for its kind.
The job kinds
Send a message to a channel
Posts a fixed message to a channel on schedule. Pick the channel and write the message (up to 2000 characters). Use this for daily reminders, weekly announcements, and the like.
Clear old threads in a channel
Deletes old public threads in a channel. Set Older than (days): any thread whose last reply is older than that is deleted when the job runs. Runs at most once every 4 hours.
Clear recent messages in a channel
Bulk-deletes recent messages in a channel. Set Delete messages from the past (days): messages newer than that are removed. The maximum is 7 days, because Discord only allows bulk-deleting messages up to two weeks old. Runs at most once every 4 hours.
Reward the most active members
Grants a reward role to your most active members and removes it from last cycle's winners who have dropped off. This needs the XP & levels feature on, because it uses each member's recent activity score.
Configure:
- Reward role to grant: the role handed to the top members.
- Members to reward: how many top members get the role (1 to 25).
- Activity window (days): only members active within this many days are considered (1 to 30).
- Exempt roles (optional): members holding any of these are skipped (handy for staff).
- Minimum activity score: a floor so a quiet week rewards no one rather than the "least inactive" member. Leave it at 0 to let Members to reward decide on its own; raise it to skip the reward when activity is low. The editor shows your server's current top scores so you can pick a sensible number.
The reward is not permanent: members keep the role only while they stay near the top. This job runs at most once every 6 hours (its natural cadence is weekly).
This reward is silent
Granting or removing the activity role does not trigger your role-add / role-remove automations, so a weekly rollout never floods your channels. As with all role changes, the bot's role must sit above the reward role.
When it runs
Cron expression
Schedules use a standard 5-field cron expression: minute hour day-of-month month day-of-week. The form offers quick presets:
| Preset | Cron |
|---|---|
| Every day at 09:00 | 0 9 * * * |
| Every hour | 0 * * * * |
| Weekdays at 09:00 | 0 9 * * 1-5 |
| Mondays at 09:00 | 0 9 * * 1 |
| First of each month, 09:00 | 0 9 1 * * |
For help building your own, see Cron & time zones.
Time zone
Pick the time zone the schedule runs in (it defaults to the one on your profile). The "next fires" preview shows times in that zone.
Minimum interval
Each kind has a floor on how often it can fire, so a too-frequent cron is rejected:
| Kind | Minimum gap between runs |
|---|---|
| Send a message | 5 minutes |
| Clear old threads | 4 hours |
| Clear recent messages | 4 hours |
| Reward the most active members | 6 hours |
Managing schedules
The list shows each schedule with its last run and result. You can enable or disable a schedule, edit it, delete it, and run it once on demand. A disabled schedule is kept but does not fire.
Limits
The number of active schedules per server is capped by your plan.
Tagging roles, members and channels
In the Message box of a send-message schedule you can type @ to tag a role or member, or # to link a channel, the same way as on Send a message. Each role and member tag gets a Ping switch underneath. Ping means Discord sends those people a notification, and Tag only shows the tag without notifying anyone. @everyone and @here start on Tag only, so nobody pings the whole server by accident.
If a member leaves, or a role or channel is deleted, the tag keeps showing its old name when you edit the message, but you can no longer pick it again. In Discord it then shows as a broken tag.