Automations

If-then rules — the bot reacts by itself to what happens on the server.

A rule consists of three parts: when something happens, then the bot does up to three things. No more — and that is deliberate. Anyone who needs nested conditions creates a second rule; that stays readable when you want to look up in six months why the server does something.

/auto regel name:begruessung wenn:Jemand tritt bei

The rule is created paused. Only once there are actions in it do you arm it.

Triggers

When … Needs
Jemand tritt bei (someone joins) —
Jemand verlässt den Server (someone leaves the server) —
Jemand bekommt eine Rolle (someone gets a role) the role
Jemand verliert eine Rolle (someone loses a role) the role
Jemand reagiert auf eine Nachricht (someone reacts to a message) message ID, optionally a particular emoji

Actions

  • Nachricht senden (send a message) into a channel of your choice
  • Privat anschreiben (send a direct message) — only works if the person allows DMs from server members
  • Rolle geben (grant a role)
  • Rolle wegnehmen (remove a role)

In every text you can use placeholders: {user} for the mention, {username} for the bare name, {server} and {count} for the current member count.

An example

When someone gets the Verifiziert role, then remove the Neu role and write in #allgemein: "Willkommen an Bord, {user}!"

That is two actions in one rule, set up in two minutes.

What the bot cannot do

React to keywords in messages. For that it would have to read along with every message on your server. Fishbot deliberately does not ask for that permission — not even for a handy feature. If you need automatic replies to words, custom commands are the more honest way: the person types /regeln instead of the bot listening in.

Conditions

A trigger on its own is usually too coarse. Via the Bedingungen (conditions) button on the rule panel you narrow down when the rule runs at all:

Condition What for
Nur in diesen Kanälen (only in these channels) The same reaction should do something different in #support than in #offtopic
Nur für diese Rollen (only for these roles) The rule applies only to the team
Nie für diese Rollen (never for these roles) Exempt moderators
Nur von … bis … Uhr (only from … until …) The quiet-hours rule should apply at night
Konto mindestens so alt (account at least this old) Against freshly created second accounts
So lange schon dabei (a member for this long) Only for people who really belong to the server

Everything that is set has to apply. And an excluded role beats an allowed one: anyone who meets "only for @Member" but also carries "@Gesperrt" is out. The other way round the exclusion would be worthless.

The time window may run past midnight: 22 to 6 means at night, not "never".

Roles for a limited time

With every role action the bot asks directly for the duration. Leaving it empty means permanent, 60 means one hour:

When someone reacts with 🎟️ → grant @Event-Zugang for 180 minutes

The removal date is in the database, not in a timer in memory. That is the difference between "usually" and "always": if the bot restarts in the meantime, the role is removed anyway. If the same rule triggers again, the deadline starts over — which is what you expect when you grant a role "for another hour".

Protection against endless loops

A rule "when role A is granted → grant role A" would trigger itself over and over. Fishbot recognises exactly this case when saving and rejects it.

Two rules that trigger each other, however, cannot be seen when saving. A limit at runtime helps against that: if the same rule triggers more than twenty times in one minute, it pauses for five minutes and reports that once in the log channel. Once, not twenty times — otherwise the report would itself be the problem.

On top of that comes the general limit: the bot sends at most ten messages per minute per server.

Switch the Protokoll (log) channel on when setting things up. After every trigger it says there what happened — that saves you the guesswork.

Limits

Rules per server 25
Actions per rule 3
Text length of an action 1800 characters

Replies to keywords

The trigger “Somebody writes a keyword” makes the bot listen for words and react with the action “Answer in the same channel” — with text or a saved embed from the embed builder.

In the dashboard this has a page of its own: Automations → Keyword replies. Keywords, the reply, channels and the cooldown sit on one page instead of in three windows. What it creates is an ordinary rule — /auto list shows it just the same.

Four ways to compare:

Mode matches “hilfe”
enthaelt (default) “ich brauche hilfe”, but also “Hilfestellung”
wort “ich brauche hilfe”, not “Hilfestellung”
beginnt only if the message starts with it
genau only if the whole message is exactly that

The cooldown is not decoration. Without it the bot answers five messages carrying the same word five times — that is no longer a hint, it is noise. The default is 15 seconds, counted per rule and channel: two rules on different words do not lock each other out.

It does not work without message content. Discord only delivers the text of a message to bots whose operator has switched on the “Message Content” permission. With it off, messages arrive empty and none of these rules can fire. The bot writes this into the log once rather than quietly doing nothing.

Last updated: 14 October 2026