Actions

Actions are the do that half of a rule. A rule holds between 1 and 10 of them, run in order.

This page is the tour. For the exact settings, permissions and returned values of any single action, see every action in detail, which is generated from the bot itself.

The families

Messaging, send a message, reply privately (only the person who clicked sees it), send a DM, edit or delete a message, pin, add reactions, open a thread, show the typing indicator.

Roles, add, remove, toggle. And swap roles, which replaces a whole set in one atomic update: that is what makes a "pick one colour" menu impossible to break by clicking twice quickly.

Channels, create (with full permission overwrites), edit, delete, lock, unlock, purge messages.

Moderation, warn, timeout, kick, ban, soft-ban, unban, untimeout. These create real FlaviBot infractions, visible in your case history exactly like a manual moderation action, marked as coming from an autoresponder.

Data, set, read, increment, delete a stored value, and push/remove list items. See variables.

Flow, wait, wait-and-cancel, cancel, emit an event.

Levels, economy, music, give XP, set a level, add coins, give an item, play a track, control playback, text-to-speech.

Utility, read a value into a variable, pick a random one, call an HTTP endpoint.

Steps hand values to each other

Every action returns something. A later step reads it with {steps.<step number>.<field>}:

1. Create channel        → {steps.1.channel_id}, {steps.1.channel_name}, …
2. Send message in {steps.1.channel_id}

Creating a role or a channel gives you every property back (id, name, colour, position, permissions), not just the id.

Permissions are checked before the call

Before an action runs, FlaviBot verifies the bot actually has the permission it needs, in the right channel. Missing permission means a clean, explicit error on the rule's page instead of a silent failure.

That check fails closed: if the permission state cannot be read at all, the action does not run.

When a step fails

Each step chooses what happens on failure:

  • abort (default), stop the workflow here
  • continue: carry on with the next step

A step skipped by a condition is not a failure, and does not mark the run as failed.

flav-codeWritten on 8 August 2026