Fenrai logoFenrai
BETA
Docs
Moderation

Moderation

Rules that let Fenrai act on messages and members before a moderator has to.

A moderation rule is one sentence: when this happens, and these conditions match, do that. You build it in Dashboard > Moderation > Rules, and it starts working within a minute.

Anatomy of a rule

PartWhat it means
TriggerWhat starts the check: a message, a member joining or leaving, a level up, or a schedule
ConditionsWhat has to be true, joined with and / or
ActionWhat Fenrai does when everything matches

Rules that watch on a schedule

Every trigger above waits for something to happen. On a schedule waits for a time instead: the rule comes due on its own, checks every member of the server and acts on whoever its conditions describe. It is how you write the rules nothing announces:

  • Every day, members holding Unverified who joined more than 7d ago, kick.
  • Every week, members with the Trial role and level at least 5, add Member and remove Trial.

Pick how often on the trigger block itself: every few hours, or every day, week or month at a set time in your own timezone. The shortest gap is an hour, because each run reads your whole member list.

Two things a scheduled rule cannot do, and the editor says so rather than letting you find out: it cannot ask for a review, because it would open one case per member, and it cannot use an AI check or any message condition, because there is no message in front of it.

A run that would act on more than a hundred people stops without acting and records why. That is deliberate: a rule that turned out to match half your server should need you to look at it again, not empty the server while you sleep.

The trigger block carries a Last run panel with what happened: when the rule last came round, when it goes round next, and what stopped it if anything did. A run that refused to act, could not read a field, or was refused by Discord on some of the members it reached says so there, so a rule that quietly stopped working does not read like a rule nobody matches.

Before you ever let one run, the trigger block has a Check button: it walks your members and tells you how many the rule would act on and who the first of them are, without touching anybody. It reads the rule as you last saved it, so save before you check. Counting your whole server takes a moment, and unlike a real run it never stops counting early, because "this would hit 4,000 people" is the answer you asked for.

Conditions

  • Message: content (plain text or a pattern), has link, has invite, has image, has attachment, mentions count, attachments count
  • Member: user roles, account age, time since join, warnings count, user level
  • Recent activity: messages in window, channels used in window, repeated messages in window
  • Server: joins in window, leaves in window, similar names joined in window, raid mode is active
  • Channel: which channel it happened in

Message and channel conditions need a message to read, so they are only available on the message triggers. On any other trigger they are refused rather than quietly never matching.

A condition Fenrai genuinely cannot answer, because a service it needs is briefly unavailable, counts as not matched, whichever operator it uses. "Fewer than three warnings" does not become true for everybody because the warning count could not be read.

Activity conditions take a time window, which is what makes "5 messages in 10 seconds" or "the same message in 3 different channels in a minute" something you can actually express.

Server conditions count the whole server instead of the member who tripped the rule, which is what turns a member join rule into raid detection: "25 people joined in the last minute" decides that something is happening, and the member conditions next to it decide who it happens to.

Actions

Delete message, purge recent messages, mute user, ban user, kick user, warn user, add role, remove role, DM user, log only.

Durations are written the same way everywhere: 30s, 15m, 12h, 7d.

Temporary and conditional roles

Add role takes an optional duration. With one set, Fenrai remembers the grant and takes the role back when it runs out, even across restarts and across bot instances. Remove role takes a role away and cancels any timer still attached to it.

Combined with the on level up trigger, that covers the roles Discord onboarding cannot hand out, because those are self-service by design:

  • On level up, level at least 10, add the Veteran role.
  • On member join, account younger than 30 days, add a Probation role for 7d.

Server-wide actions

These change the server rather than one member: enter raid mode, lock channels, set slowmode, raise verification level and pause invites.

Three things are worth knowing about them:

  • They run once per server. A rule on member join that fires for forty raiders still locks the server down once, not forty times.
  • Whatever they overwrite is put back exactly as it was when the duration runs out, including per-channel permissions that were already set before the rule fired. Leave the duration empty and the change stays until you undo it yourself.
  • Lock channels and set slowmode cover every text channel by default, including ones created after you wrote the rule, or only the channels you pick.

Enter raid mode touches nothing on Discord. It sets a flag that other rules read through the "raid mode is active" condition, so one rule can detect the raid and other rules can behave differently while it lasts.

AI checks

A condition matches text. An AI check block judges what a message meant: you describe the rule the way you would explain it to a new moderator, and the check answers with a score from 0 to 100 plus one sentence saying why.

  • What breaks the rule is your description, and the message is scored against that and nothing else. "Someone asking members to move to DMs so they can sell them something" catches the wording you never listed.
  • Acts at is the score from which the over branch is taken. Lower catches more and is wrong more often. Everything below it takes the under branch.
  • Include recent messages attaches up to five of the author's recent messages in the same channel, which reads intent better and costs more.
  • The sentence the check wrote is stored with the action: it lands in your moderation log channel and in Moderation > History, next to what the rule did.

Each run costs credits from your plan's monthly allowance: one without recent messages, three with them. The same message judged again inside a short window is answered from cache and costs nothing, and a check cannot sit straight under the trigger, because that would pay to read every message the server sends. Put a condition in front of it, so the model only ever sees the messages that already look worth a second opinion.

With no credits left the check takes the under branch. Moderation never fails closed: an empty allowance, or an outage on our side, leaves the member alone rather than acting on a judgement nobody made.

Commands

CommandOptionsWho can use it
/banuser, duration (required), reasonBan Members
/kickuser, reasonKick Members
/muteuser, duration (required), reasonModerate Members

Bans are lifted automatically when the duration runs out, and a mute is a Discord timeout.

Right-click actions

Discord's own Apps submenu carries the actions that are about something already on screen. Right click a message, or a member's name or avatar, and pick Fenrai.

ActionWhereWho can use it
Report to moderatorsa messageeveryone
Warna messageModerate Members
Delete and warna messageModerate Members + Manage Messages
Purge until herea messageManage Messages
Warningsa memberModerate Members
Modlooka memberModerate Members
Ranka membereveryone

Report to moderators asks for a reason and posts the message, its author and a jump link into the moderation channel, with buttons to delete it or dismiss the report. It is the only one of these every member has, so a reporter gets one report a minute and a message can only be reported once every ten minutes, however many people press it.

Warn and Delete and warn open the same reason box and write the same warning a rule writes, so dmOnWarn and the warning count treat both the same. Neither lets you warn an app, yourself, or a member ranked as high as you.

Modlook answers "who is this" in one embed: account age, when they joined, roles, active warnings, whether they are timed out, and their level when leveling is on.

Settings

Dashboard > Moderation > General is where you choose the channel every action is reported to, and whether a warned member also gets a DM.

Rules for scam spam

The most common reason to reach for these rules in 2026 is compromised members: an account that has been in the server for years suddenly blasting crypto casino links, because its session token was stolen by malware. Two write-ups cover what to build and why:

The server conditions and raid mode above are covered end to end in how to protect a Discord server from raids, and where Discord's own AutoMod stops and these rules start is in what AutoMod AI cannot see.

If a rule does not fire

  1. The rule is disabled, or moderation is off for the server.
  2. A condition is stricter than it looks: check the time window and the and / or joins.
  3. Fenrai's role sits below the member's highest role, so Discord refuses the action.
  4. You just saved: a change takes up to a minute to reach the bot.