How moderation works

Moderation in FlaviBot is built around one idea: nothing happens without a record. Every sanction you take leaves a numbered case that stays in your server's history, whether it was typed by a moderator, handed out by a Discord AutoMod rule, or applied automatically by the bot.

That record is what makes the rest possible: a member's past is one command away, a mistake can be revoked, and repeated offences can trigger a heavier sanction on their own.

The two things that get recorded

RecordWhat it isGets a case number
Casea note or a warn written against a memberyes
Actionwhat was actually done on Discord: timeout, kick, ban, unbanonly through its case

A timeout, a kick and a ban each record both: the action itself, and a warn attached to it. So a ban is not only a ban, it is also a strike on the member's record, and it counts toward auto-escalation exactly like a manual warn does.

Undoing something (/unmute, /unban) is recorded too, but as a reversal rather than a judgment: it has no case number and does not count as a strike.

The commands

CommandWhat it doesYou needThe bot needs
/noteprivate staff note, never seen by the memberManage Messagesnothing beyond Embed Links
/warnformal warningTimeout Membersnothing beyond Embed Links
/muteDiscord timeout for a durationTimeout MembersTimeout Members
/unmutelifts the timeoutTimeout MembersTimeout Members
/kickremoves the memberKick MembersKick Members
/banpermanent banBan MembersBan Members
/tempbanban that lifts itself after a durationBan MembersBan Members
/softbanban then instant unban, to purge messagesBan MembersBan Members
/unbanlifts a ban, by user IDBan MembersBan Members
/caseview, edit or revoke a caseTimeout Membersnothing beyond Embed Links
/modhistorya member's full recordTimeout Membersnothing beyond Embed Links

/mute and /unmute also answer to timeout and untimeout as prefix commands. Those two short forms exist only with the prefix, not in Discord's / list.

Each one is covered in The sanctions.

What the bot needs, exactly

Every command in the table replies with an embed, so the bot needs Embed Links in the channel you run it from. That is the whole requirement for /note, /warn, /case and /modhistory: a note and a warn are records in FlaviBot, they change nothing on Discord, so no moderation permission is involved and there is nothing for the bot to be denied.

The commands that really do something on Discord are checked before anything runs:

  • /mute and /unmute need the bot to have Timeout Members on the server
  • /kick needs Kick Members
  • /ban, /tempban, /softban and /unban need Ban Members

That check is server-wide, not per channel, and it fails closed: if the bot's permissions cannot be read yet, the command is refused rather than attempted. When the bot has the permission but Discord still refuses the action, usually because the target sits above the bot in the role list, the reply says Discord rejected it and gives the status.

Who is allowed to moderate

The You need column in the table above is what decides it. A member without that permission is refused before anything runs. Administrators count as having every permission, though the guard rails below still apply to them.

The Moderation page also offers a Moderator roles field. Be aware that adding a role there does not, on its own, let its members run the commands: the Discord permission is still checked first. Give your staff the real Discord permission.

The guard rails

Even with the right permission, a manual sanction is refused when:

  • the target is you
  • the target is the bot
  • the target is the server owner
  • the target's highest role is equal to or above yours
  • the bot itself lacks the Discord permission for that action, which only ever applies to /mute, /unmute, /kick, /ban, /tempban, /softban and /unban

The first four apply to a note and a warn too: they record something about a member, so FlaviBot still refuses to let you write one against yourself, the bot, the owner, or someone ranked above you.

There is one more case worth recognising: right after the bot restarts, its view of your server can still be loading. Rather than guess, it refuses the command and tells you to try again in a few seconds. That is deliberate, a moderation check that cannot be verified is never waved through.

Where things live in the dashboard

Automations can moderate too. An autoresponder rule can warn, timeout, kick or ban, and those land in the same history as a manual sanction. See the action reference.

flav-codeWritten on 8 August 2026