Automations: IF-UNLESS-THEN Rules Without Code

How Kage's automations work: combine triggers, conditions and actions, schedules in UTC, placeholders, safety limits, plan limits and troubleshooting.

Last checked for accuracy: 14 October 2026

With automations, you build your own rules following the pattern IF – UNLESS – THEN, without code: a trigger (IF) starts the rule, any number of conditions (UNLESS) check whether it really applies, and the actions (THEN) run one after another. Example: *If someone joins, unless the account is older than 7 days, then send a message to the team.*

For short walkthroughs, see the guides Automations and Automation rules.

Requirements

  • Access to the module: You sign in to the dashboard with Discord and need the Manage Server permission (or access granted for this module).
  • Kage's permissions: Depending on the action, Kage needs Send Messages, Manage Roles, Manage Messages (delete, pin), Add Reactions or Create Threads.
  • Role order: For role actions, Kage's role must be above the target role.
  • Plan: The plan notice at the top of this page shows which plan the module needs. If the plan lapses, Kage pauses all rules.

Structure of a rule

A rule has a name, a trigger, zero to 20 conditions and up to 10 actions. Without conditions it fires on every trigger. Without actions it does nothing.

Triggers (IF)

TriggerWhen it fires
Message sentA member writes a message (no bots).
Member joinedSomeone joins (no bots).
Member left the serverSomeone leaves the server (no bots).
Reaction addedSomeone reacts to a message (no bots).
Schedule (recurring)At a fixed time or at an interval, see below.

Bot messages and bot members never trigger a rule. This is a fixed safety rule and cannot be switched off.

Conditions (UNLESS)

The dashboard shows only the sensible conditions for each trigger.

ConditionChecks
Message contains textThe text appears anywhere in the message (case-insensitive).
Message starts with textThe message begins with the text.
Message matches pattern (regex)A regular expression matches. If it is invalid, the condition counts as not met.
Member has role / does NOT have roleRole membership.
Channel isThe message or reaction is in this channel.
Emoji isThe reaction has this emoji (including custom server emojis).
Random chance (%)Applies with this probability.
Account younger than (days)The Discord account is younger than the given value.
Time between (HH:MM)The current time (UTC) is within the window. A window across midnight is allowed.
Member count above / belowThe number of server members is above or below.

By default all conditions must match (AND). You can switch the combination to OR: then one matching condition is enough. There are no nested brackets.

Actions (THEN)

ActionEffectFor which triggers
Send messagePosts text in a channel (or the triggering one)all
Send direct messageDM to the membermessage, join, reaction
Add / remove roleChanges the member's rolesmessage, join, reaction
Grant temporary role (hours)Role for a time, see Temporary rolesmessage, join, reaction
Add reactionReacts to the triggering messagemessage, reaction
Send embed templatePosts a template from the embed moduleall
Log to channelWrites text to a log channelall
Delete triggering messageDeletes the messagemessage
Pin triggering messagePins the messagemessage
Award XPGrants event XPmessage, join, reaction
Start thread on the messageCreates a thread (name up to 100 characters)message

The "Member left the server" trigger allows only message, embed template and log. The schedule trigger likewise allows only these three. Kage skips actions that do not exist for a trigger (for example deleting without a message).

There is no kick, ban or timeout action. Otherwise a wrongly set up rule could lock out whole groups. For that, use moderation.

Placeholders

You can use these placeholders in texts:

PlaceholderResult
{user}Mention of the triggering member
{username}Name of the member
{guild}Server name
{membercount}Member count
{channel}Channel name with #, if present
{date}Date (DD.MM.YYYY, UTC)
{time}Time (HH:MM, UTC)

Unknown placeholders stay as they are. Kage truncates texts to 2,000 characters. For schedule rules there is no triggering member, so {user} stays empty there.

The schedule trigger

ModeMeaning
Daily at timeOnce a day at the given time
Weekly on weekday + timeOnce a week on the chosen weekday (0 = Monday)
Every N minutesAt an interval, at least 15 minutes

All times are UTC; there is no time zone per rule. Kage checks every minute and triggers a rule only once per time window.

How Kage runs a rule

  1. An event occurs. Kage looks for all active rules with a matching trigger.
  2. Each rule has a minimum pause of 3 seconds, so that a rule that sends messages itself does not create an endless loop.
  3. Kage checks the conditions (AND or OR).
  4. If they match, Kage runs the actions in order. If one fails (for example due to missing permissions), the next one runs anyway.
  5. Kage counts the run and notes the time; you see both in the dashboard ("run N×", "last …"). The Logs tab lists every trigger.

In the dashboard

Under Automations you create rules, edit, pause and delete them. With templates you start from examples. Each rule shows the trigger, the number of conditions and actions and its run statistics.

The dashboard limits the number of rules by plan: Premium up to 25 rules, Enterprise up to 150. Existing rules above the limit are not trimmed; only further growth is blocked.

Settings at a glance

Dashboard fieldMeaningDefault
Automations activeTurns the module on. Only active rules in an active module fire.off
Rule activePauses a single ruleon
CombinationAND (all) or OR (at least one)AND

Checking the result

  1. Simple test rule: Trigger "Message sent", condition "Message contains text" with "!ping", action "Send message" with "pong".
  2. Trigger it: Write "!ping". Kage replies with "pong".
  3. Statistics: The rule shows "run 1×", and the Logs tab names it.

Troubleshooting

The rule does not fire

Check that the module and the rule are active, that the trigger matches the event, and that all conditions (with AND) match. Bots never trigger. For schedules, the time in UTC counts.

An action does not happen

Usually Kage lacks a permission, or the role order is wrong. The operating log names the action; no message appears in Discord. Also, the action does not exist for every trigger (see table).

The rule fires too often or in loops

A rule pauses for 3 seconds after each trigger. Build conditions so that the rule's own reply does not trigger it again. Bots never trigger anyway.

The schedule comes at the wrong time

All schedules run in UTC. In Central Europe local time is 1 to 2 hours ahead. Convert the time.

The rule cannot be saved

Your plan's upper limit is reached, or the rule has more than 20 conditions or 10 actions.

Further reading

Simple text replies: Custom commands. Fixed schedules for messages: Auto messages. Designed messages: Embeds.

Related Kage modules

  • AutomationsFrom Premium
  • Custom CommandsIncluded in Basic

See plans and included modules

Keep reading

More questions? Ask Kage AIAI

Describe what you need – Kage AI picks out the right guide and gives you the sources.

Ask Kage AI

Try Kage on your server

Sign in with Discord, invite the bot and set up the modules in the dashboard. The Basic plan is free forever.