Automations
Last updated Oct 4, 2026Open in dashboard

Automations - Examples

Each example lists what to pick in the rule editor: the trigger (Run this rule when), the conditions and the actions, using the dashboard labels. Messages come from templates you save in the Message Builder first.

Give new members a role, but not brand-new accounts

  • Trigger: When a member joins
  • Conditions: Account age is less than 7 days, with NOT
  • Actions: Add roles to the member: @Member

Accounts younger than a week get no role; staff can give it by hand.

Turn away accounts younger than three days

  • Trigger: When a member joins
  • Conditions: Account age is less than 3 days
  • Actions:
    1. Send the member a direct message: a template such as "Your account is too new to join {server.name}. Please try again in a few days."
    2. Kick the member, reason "Account too new"

The DM goes first because the bot cannot DM someone who shares no server with it.

The rule built step by step on the Setup page: When a message is sent, content contains discord.gg/ or discord.com/invite/, author does NOT have a moderator role; delete the message, warn the member, post a log message.

Turn on Also check edited messages under the trigger, so an invite added to a message by editing it is caught too. The log message can say what matched with {match.summary}.

  • Trigger: When a message is sent
  • Conditions:
    • Link matches these domain rules: Allow only listed domains, youtube.com, twitch.tv, tenor.com
    • User is bot staff, with NOT
  • Actions: Delete the message, then Post a log message to #mod-logs

Each link is checked on its own, so a YouTube link does not let another link through next to it.

Needs the bot owner to have set a FishFish API key (FISHFISH_API_KEY, for every server on the bot); the condition shows unavailable otherwise.

  • Trigger: When a message is sent
  • Conditions: Link is a known phishing or malware site
  • Actions:
    1. Delete the message
    2. Timeout the member, reason "Scam link"

Filter words however they are spelled

  • Trigger: When a message is sent
  • Conditions: Content contains whole word, with your word list and, under Matching options, Ignore formatting and Normalize look-alike text on
  • Actions: Delete the message

This also catches ๐›๐š๐, b*a*d and bรกd. Turn on Loose spacing for b a d.

Respond to spam

Needs the Moderation module's Anti-Spam detectors switched on.

  • Trigger: Any spam detected
  • Conditions: User has any of these roles: your staff roles, with NOT
  • Actions:
    1. Delete contributing spam messages
    2. Timeout the member, Duration (seconds) 600, reason "Spam"
    3. Post a log message to #mod-logs

The timeout records a case. With the infraction system on, you can add Add infraction points so repeat spammers reach your thresholds.

Escalate message floods

Two rules with their own thresholds, which work even with the Anti-Spam detectors off:

  1. Trigger: Message spam detected, Own threshold 5 within 5 seconds. Action: Delete contributing spam messages. After it fires, the member's next messages are deleted for 10 seconds (Keep cleaning for) without running it again.
  2. Trigger: Message spam detected, Own threshold 10 within 10 seconds. Actions: Timeout the member, Duration (seconds) 600; Post a log message to #mod-logs with a template that includes {spam.count} and {spam.archive_url}.

The second rule counts every message, the ones the first one deleted too, so a member who keeps going is timed out.

Stop thread spam

Needs Thread Spam Detection Enabled on the Anti-Spam tab, or give the rule its own threshold.

  • Trigger: Thread creation spam detected
  • Actions:
    1. Timeout matched thread-spam creators, Duration (seconds) 3600
    2. Lock matched spam threads
    3. Send a message to #staff with a template that pings your moderators

Lock down during a join raid

Needs Join Raid Detection Enabled on the Anti-Spam tab and anti-raid levels set up on the Anti-Raid tab.

  • Trigger: Join raid detected
  • Actions:
    1. Set anti-raid level: 2 (a level that locks channels and restricts joins)
    2. Timeout matched join-raid members, Duration (seconds) 3600
    3. Send a message to #staff with a template that pings your moderators

With auto-decay on the anti-raid tab, the level steps back down by itself once the raid is over.

Keep a channel for media only

  • Trigger: When a message is sent
  • Conditions: Channel is #media, and Has attachments with NOT
  • Actions:
    1. Delete the message
    2. Send the member a direct message: "Only images and videos go in #media. Chat in #general instead.", Delete after (seconds) 60

Post a weekly reminder

  • Trigger: On a time schedule (cron-like), mode Day of week, Friday at 18:00
  • Actions: Send a message to #announcements with your reminder template

Scheduled rules have no member or channel behind them, so pick the channel explicitly.

Switch to a holiday template pack

  • Trigger: On a time schedule (cron-like), mode Cron, 0 0 1 12 * (midnight on 1 December)
  • Actions: Switch the active template pack: your holiday pack

A second rule with 0 0 2 1 * switches back on 2 January.

Remind a member of the rules, at most once an hour each

  • Trigger: When a message is sent
  • Conditions: Content contains text: free nitro, giveaway
  • Actions: Reply to the message with a template such as "Please read the rules, {user}. ({rule.name})"
  • Advanced: Cooldown (seconds) 3600, Cooldown applies to: Per member

Each member gets the reminder at most once an hour, and one member tripping it does not hold it back for everyone else.

Tell staff about bans made by hand

  • Trigger: When a member is banned, with Automatic actions off under the trigger
  • Actions: Send a message to #staff with a template such as "{user} was banned by staff"

Bans made by automation rules, thresholds, anti-spam or other bots do not post this, only bans a staff member made with a command or in Discord.

Tell another service about bans

  • Trigger: When a member is banned
  • Actions: Send a webhook message to your service's Webhook URL

The service receives a small JSON body: guild_id, plus user (the username), also for a user who was no longer a member. It fires for /ban, /forceban, bans made in Discord and automatic bans alike, but not for /massban.