The sanctions

Every command below leaves a record, posts to the mod-log and, where relevant, tells the member what happened. The reply in the channel is short on purpose: who was sanctioned, what was done, and the case number when there is one.

A reason is accepted on every command and is capped at 1500 characters. It is optional everywhere except /note (where it is the note) and /case revoke.

Durations

/mute and /tempban take a duration written as one number and one unit:

UnitMeansExample
sseconds30s
mminutes10m
hhours1h
ddays7d
wweeks2w

Combinations like 1h30m are not accepted. Round to the nearest single unit (90m works).

Note

/note user <reason> writes a private staff observation (the reason option is the note text).

  • the member is never told, and nothing changes on Discord
  • the reply is visible only to you
  • it does not count as a strike toward auto-escalation
  • it appears in the mod-log only if you turned on "Show notes in mod-log"

Use it for context you want the next moderator to have: "warned verbally", "says they share the account with a sibling".

Warn

/warn user [reason] records a formal warning. The member is sent a DM by default, the case lands in the mod-log, and the warn counts as an active strike until it is revoked or it decays.

Warns are what drive auto-escalation: a member who reaches the threshold you configured is sanctioned automatically.

Mute (Discord timeout)

/mute user <duration> [reason] applies Discord's native timeout, so the member can no longer talk, react or join voice. It is Discord's own mechanism, not a muted role, so nothing to set up and nothing to clean up.

Discord caps timeouts at 28 days. Ask for more and the command refuses and points you to /tempban.

A mute records a warn as well as the timeout, so it counts as a strike.

/unmute user [reason] lifts it. That is a reversal: no new case number, and the original mute is marked as reverted in the history.

Kick

/kick user [reason] removes the member from the server. They can come back with a new invite.

The DM goes out before the kick, because once someone is out of the server the bot can no longer open a conversation with them.

Ban

/ban user [reason] [delete_messages_days] bans permanently.

delete_messages_days accepts 0 to 7 and defaults to 0. It is Discord's own message purge: set it to 1 to wipe the last day of the banned member's messages.

Here too the DM is sent before the ban. If the target is not on your server (a ban by ID of someone who never joined), the DM is skipped, the ban still happens.

Tempban

/tempban user <duration> [reason] [delete_messages_days] is a ban that lifts itself. FlaviBot schedules the unban when it applies the ban, so it survives a bot restart: the countdown is stored, not held in memory.

Unlike /mute, there is no 28 day ceiling. This is the command for a suspension measured in weeks or months.

If you unban the member by hand before the timer runs out, the pending automatic unban is cancelled, so the member is not "unbanned twice". And if the ban is applied on Discord but FlaviBot fails to record it, the ban is lifted back rather than left in place forever with no timer attached.

Softban

/softban user [reason] [delete_messages_days] bans and immediately unbans. The point is not the ban, it is the message purge that comes with it: it is the fast way to clear a spam or raid flood from a member you want to let back in.

delete_messages_days defaults to 7 here (the maximum), where /ban defaults to 0.

If the ban goes through but the unban step fails, the command tells you so explicitly and asks you to run /unban. The member is left banned until you do, which is rare but worth knowing.

Unban

/unban user_id [reason] takes a user ID, not a mention, because the person is not on the server to be picked from a list.

It lifts the ban, marks the original ban or tempban as reverted, and cancels a tempban's pending automatic unban if one was scheduled.

Calling them without a slash

If you use FlaviBot with a message prefix rather than slash commands, mute also answers to timeout, and unmute to untimeout.

flav-codeWritten on 8 August 2026