Pay for one year of Premium, keep it forever.

See the offer

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.

Reason presets

Write a reason once and use it by its key. On the dashboard, Moderation → Reason presets keeps up to 50 presets per server: a key, one word such as P1 or spam, and the text it stands for, with variables.

Type the key as the first word of a reason and FlaviBot records the preset's text instead. With a preset P1 whose text is Spamming (rule 1), banned by {moderator}: {details}:

/ban user: @Alex reason: P1 spam in #general

bans Alex with the reason "Spamming (rule 1), banned by Mod: spam in #general". The case, the DM, the mod-log, Discord's audit log and the reply all carry that text.

  • Keys ignore case: p1 calls P1. A first word that is not one of your keys leaves the reason exactly as you typed it.
  • What you write after the key is {details}. When the text has no {details}, it is added at the end after a dash.
  • Typing in the reason box lists your presets, the ones whose key starts with what you typed first. Pick one, then keep typing the details.
  • A preset can carry a default duration, used by /mute and /tempban when you give none: /mute user: @Alex reason: P1. A duration you type wins. With a prefix, !mute @Alex P1 flooding works too.
  • Presets apply to the commands on this page only. AutoMod, autoresponder actions and auto-escalation keep their own reasons.
  • Discord's audit log keeps the first 512 characters of a reason. A longer text is cut there, and only there.
VariableBecomes
{user}the member's display name, as plain text
{user.name}their username
{user.id}their ID
{user.mention}a mention of the member (the audit log shows it as a raw mention)
{moderator}, {moderator.name}, {moderator.id}, {moderator.mention}the same, for the moderator who ran the command
{server}the server's name
{duration}the mute or tempban duration in words (1 hour), empty for any other sanction
{date}today's date, YYYY-MM-DD in UTC
{details}what you typed after the key

A variable FlaviBot does not know stays as typed, and the preview under the text field shows exactly what a sanction would record.

Durations

/mute and /tempban take a duration written as one number and one unit (or none, when a reason preset gives one):

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. The duration is required unless the reason calls a preset that has a default one. 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, unless an auto-escalation rule is set to count direct warns only.

/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 (the duration, as for /mute, may come from a preset). 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.

Created on · Last updated on