Filters and gates
The trigger matched. That does not mean the rule runs. Six things can still stop it, in this order.
1. Channel scope
Run everywhere, only in a list of channels or categories, or everywhere except them. Categories cover every channel inside.
2. Role filters
- Required roles: the member must have at least one of them
- Ignored roles: having any one of them stops the rule
Ignored roles win over required ones. This is how you exempt staff from a word filter without writing a second rule.
3. Member filters
The same idea for specific members. Note that a rule with specific member ids cannot be shared as a preset: those ids mean nothing on someone else's server, so sharing is refused rather than silently broken.
4. Bots
By default a rule ignores messages and reactions from bots. Turning that off lets a rule react to another bot's output, which is useful for bridges and logs.
5. Cooldown
A cooldown means at most once per N seconds, and you choose the scope:
| Scope | One fire per… |
|---|---|
user | member |
channel | channel |
guild | whole server |
A cooldown is not a rate limit: it does not queue anything. Events that arrive during the window are dropped, and the rule's page counts them as cooldown skips so you can see it happening.
6. Rate cap
Every rule is capped at 30 fires per minute, always. It exists so a misconfigured rule cannot flood your server or Discord's API. Hitting it is recorded as a skip too.
Anti-loop protection
A rule that creates a channel would normally trigger your channel_create
rules, including itself. FlaviBot marks the events its own actions cause and
skips them, so a rule cannot feed itself by accident.
The same applies to messages: a message sent by a workflow does not re-trigger message rules.
Auto-disable
If a rule fails with a permission error 10 times in a row, it is disabled automatically and the dashboard tells you why. Any single success resets the counter, so an intermittent failure, one member the bot cannot touch, never disables a rule that mostly works.
