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
| Record | What it is | Gets a case number |
|---|---|---|
| Case | a note or a warn written against a member | yes |
| Action | what was actually done on Discord: timeout, kick, ban, unban | only 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
| Command | What it does | You need | The bot needs |
|---|---|---|---|
/note | private staff note, never seen by the member | Manage Messages | nothing beyond Embed Links |
/warn | formal warning | Timeout Members | nothing beyond Embed Links |
/mute | Discord timeout for a duration | Timeout Members | Timeout Members |
/unmute | lifts the timeout | Timeout Members | Timeout Members |
/kick | removes the member | Kick Members | Kick Members |
/ban | permanent ban | Ban Members | Ban Members |
/tempban | ban that lifts itself after a duration | Ban Members | Ban Members |
/softban | ban then instant unban, to purge messages | Ban Members | Ban Members |
/unban | lifts a ban, by user ID | Ban Members | Ban Members |
/case | view, edit or revoke a case | Timeout Members | nothing beyond Embed Links |
/modhistory | a member's full record | Timeout Members | nothing 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:
/muteand/unmuteneed the bot to have Timeout Members on the server/kickneeds Kick Members/ban,/tempban,/softbanand/unbanneed 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,/softbanand/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
| Page | What you do there |
|---|---|
| Moderation | mod-log channel, DM behaviour, appeal link, warn decay, auto-escalation |
| Cases & history | search cases, read one, fix a reason, revoke |
| Discord AutoMod | Discord's own filters, and the warns they hand out |
| Server Logs | the written record of everything else happening on the server |
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.
