Sefrum

Workflow Reference

Block Documentation

Learn the editor blocks by category, see what their fields mean, and use real editor setups as references for Discord bot workflows.

110 documented editor blocks. Search ranks block names and descriptions first, then matching fields, options, and examples.

1 blocks AI Chat Blocks that call the AI model, choose instructions, attach tool workflows, and store the answer for later steps.
action AI Chat action_ai_prompt Calls AI Chat and stores the response in a workflow variable for later replies, embeds, records, or decisions. Can optionally call selected AI tool workflows attached to this bot. Use it when a workflow needs generated text, summarization, classification, or structured JSON. Store the result and send it with a reply, embed, record, or later condition.

Calls AI Chat and stores the response in a workflow variable for later replies, embeds, records, or decisions. Can optionally call selected AI tool workflows attached to this bot. Use it when a workflow needs generated text, summarization, classification, or structured JSON. Store the result and send it with a reply, embed, record, or later condition.

Properties

Prompt prompt Multi-line text

Prompt or instruction text sent to the user, AI model, or parser.

Instructions context_mode Selection

Chooses whether the AI instructions come from a preset, custom text, or a workflow variable.

Types

preset Use one of Sefrum's built-in instruction sets. This is the safest default for normal bots. custom Use the text in Custom system context. This is best when the bot needs a very specific voice or policy. variable Read instructions from a workflow variable. This is useful for configurable bots, but validate who can edit that variable.
Instruction preset system_preset Selection

Built-in instruction set used when Instructions is set to preset.

Types

assistant General helpful assistant behavior. moderation Short, rule-focused moderation decisions and explanations. support Customer-support tone with practical next steps. rewrite Rewrite or polish user-provided text. summarize Condense long messages, tickets, or conversations. json Bias the answer toward structured JSON for later workflow steps.
Custom system context system_context Multi-line text

Custom instructions that control how the AI block should behave.

System context variable system_variable Single-line text

Workflow variable containing AI instructions when Instructions is set to variable.

Model model_tier Selection

AI model quality and cost tier for this block.

Types

fast Lowest latency and lowest cost. Use for normal chat, short summaries, and simple classification. balanced More reasoning room than Fast. Use when the answer needs better judgment but should still stay economical. best Highest quality and highest cost. Use for complex reasoning, long synthesis, or premium workflows.
Output format output_mode Selection

Whether the AI response should be plain text or structured JSON.

Types

text Store the AI answer as plain text, usually sent directly in a reply or embed. json Require a JSON object so later blocks can read fields such as {ai_result.summary}.
Output length max_output Selection

Maximum answer length the AI block may produce.

Types

short Keep the response compact. medium Allow a normal answer length. long Allow longer summaries, plans, or explanations.
Tool workflows enabled_tools Tool workflow list

Tool workflows available to this AI block.

Store response as output_variable Single-line text

Workflow variable where the result is stored for later blocks.

Paths

Completed success

Model returned a response.

Failed error

Request failed.

No Credits insufficient_credits

Input cost could not be covered.

Usage examples

Example #1 Fast support answer

Use this when a watched support channel needs a quick AI-written reply. The AI answer is stored as {ai_response}. A Reply or Embed block can send that value back to Discord. Configuration: Prompt: Answer this support question briefly: {message....; Model: fast.

On message #support
If message matches filter not a bot, support channel
AI Chat Answer this support question briefly: {message.content}
Reply {ai_response}
Example #2 Structured ticket classifier

Use JSON output when later blocks need exact fields instead of a paragraph. The AI stores a JSON object in {ticket_ai}; later blocks can reference {ticket_ai.priority}, {ticket_ai.summary}, and {ticket_ai.department}. Configuration: Prompt: Classify this ticket: {ticket_form.description}; Model: balanced.

/ticket slash command
Form collect issue details
AI Chat Classify this ticket: {ticket_form.description}
If variable equals ticket_ai.priority
if
else
Example #3 Best-quality thread summary

Use Best for premium workflows that summarize long context for staff. The summary is stored as {thread_summary}; a staff log block can post it before assigning the case. Configuration: Prompt: Summarize this conversation for staff: {transcr...; Model: best.

/close staff command
Export conversation ticket transcript
AI Chat Summarize this conversation for staff: {transcript.text}
Send channel message #staff-log
8 blocks Channel Controls Blocks that create, find, edit, move, delete, and permission Discord channels, threads, categories, and voice channels.
action Create category action_create_category Adds the Create category function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Adds the Create category function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Name template name_template Single-line text

Single-line text

Permission overwrites permission_overwrites Multi-line text

Permission value used by Discord permission checks or overwrites.

Store category as store_category_as Single-line text

Workflow variable name where this block stores a value for later steps.

Reason reason Single-line text

Single-line text

Paths

continue out

Next path.

Usage examples

Example #1 Create a support category

Create the category that later ticket channels will be placed inside. A Discord category named Support Tickets is created and stored as {support_category}.

/ticket-setup server setup
If permission allowed manage server
if
else
Create category Support Tickets
Audit embed staff log
Reply permission denied
action Create thread action_create_thread Adds the Create thread function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Adds the Create thread function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Parent channel channel_source Selection

Where Sefrum should read the target channel from.

Types

current Use the channel where the command or event is running. channel_id Use the channel named or identified in Target channel value. variable Read the target channel from a workflow variable.
Channel value channel_value Single-line text

The channel ID, name, or variable value used by the selected channel source.

Thread name name_template Single-line text

Single-line text

Public/private thread_type Selection

Selection

Types

public private
Auto archive minutes auto_archive_minutes Single-line text

Single-line text

Store thread as store_thread_as Single-line text

Workflow variable name where this block stores a value for later steps.

Paths

continue out

Next path.

Usage examples

Example #1 Create a public support thread

Start a thread under the current support channel for a specific conversation. A public thread named ticket-mira is created and stored as {ticket_thread}.

/ticket-setup server setup
If permission allowed manage server
if
else
Create thread ticket-{user.username}
Audit embed staff log
Reply permission denied
Example #2 Create a private staff thread

Use a private thread when only staff should discuss the submitted request. A private thread is created in the selected channel and saved as {staff_thread}.

/ticket-setup server setup
If permission allowed manage server
if
else
Create thread staff-{ticket.id}
Audit embed staff log
Reply permission denied
action Create voice channel action_create_voice_channel Manages Discord channels, threads, permissions, or channel metadata. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Manages Discord channels, threads, permissions, or channel metadata. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Name template name_template Single-line text

Single-line text

Category ID category_id Single-line text

Category ID, category name, or variable used when placing the new channel.

User limit user_limit Single-line text

Discord user or member reference used by this block.

Bitrate bitrate Single-line text

Single-line text

Permission overwrites permission_overwrites Multi-line text

Permission value used by Discord permission checks or overwrites.

Store channel as store_channel_as Single-line text

Workflow variable name where this block stores a value for later steps.

Paths

continue out

Next path.

Usage examples

Example #1 Create a temporary voice room

Create a voice room for a support call or event queue. A voice channel named Support Mira is created under Support and stored as {created_channel}.

/ticket-setup server setup
If permission allowed manage server
if
else
Create voice channel Support {user.username}
Audit embed staff log
Reply permission denied
action Delete channel action_delete_channel Manages Discord channels, threads, permissions, or channel metadata. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Manages Discord channels, threads, permissions, or channel metadata. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Channel channel_source Selection

Where Sefrum should read the target channel from.

Types

current Use the channel where the command or event is running. channel_id Use the channel named or identified in Target channel value. variable Read the target channel from a workflow variable.
Channel value channel_value Single-line text

The channel ID, name, or variable value used by the selected channel source.

Reason reason Single-line text

Single-line text

Paths

continue out

Next path.

Usage examples

Example #1 Close the current ticket channel

Delete the ticket channel after an archive or export block has already run. The current Discord channel is removed and the workflow continues to the next cleanup/logging block.

/ticket-setup server setup
If permission allowed manage server
if
else
Delete channel current
Audit embed staff log
Reply permission denied
action Edit channel action_edit_channel Manages Discord channels, threads, permissions, or channel metadata. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Manages Discord channels, threads, permissions, or channel metadata. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Channel channel_source Selection

Where Sefrum should read the target channel from.

Types

current Use the channel where the command or event is running. channel_id Use the channel named or identified in Target channel value. variable Read the target channel from a workflow variable.
Channel value channel_value Single-line text

The channel ID, name, or variable value used by the selected channel source.

Name template name_template Single-line text

Single-line text

Topic topic Multi-line text

Multi-line text

Slowmode seconds slowmode_seconds Single-line text

Single-line text

NSFW nsfw On/off

On/off

Reason reason Single-line text

Single-line text

Paths

continue out

Next path.

Usage examples

Example #1 Update the current ticket channel

Rename the current channel and add a topic after a ticket form is submitted. The current channel becomes ticket-mira and receives a topic that staff can scan.

/ticket-setup server setup
If permission allowed manage server
if
else
Edit channel ticket-{user.username}
Audit embed staff log
Reply permission denied
Example #2 Edit a channel from a saved variable

Use a stored channel reference from an earlier Create channel block. The channel stored as {created_channel.id} is renamed and moved through the workflow without relying on the current channel.

/ticket-setup server setup
If permission allowed manage server
if
else
Edit channel resolved-{ticket.id}
Audit embed staff log
Reply permission denied
action Find channel action_find_channel Manages Discord channels, threads, permissions, or channel metadata. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Manages Discord channels, threads, permissions, or channel metadata. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Source source_mode Selection

Controls where this block reads the target value from.

Types

id Treat the value as a Discord ID. name Treat the value as a display name. variable Read the value from a workflow variable.
ID, name, or variable value Single-line text

Main value this block reads, stores, compares, or sends.

Store as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

Found found

Outcome path.

Missing missing

Outcome path.

Usage examples

Example #1 Find a configured support channel by name

Look up a known server channel and store it for later send/edit blocks. The support channel is stored as {support_channel}. Configuration: Store as: support_channel.

/ticket-setup server setup
If permission allowed manage server
if
else
Find channel support
Audit embed staff log
Reply permission denied
Example #2 Find a channel from a variable

Use a channel name or ID saved in settings by another workflow. The channel found from {settings.panel_channel} is saved as {panel_channel}. Configuration: Store as: panel_channel.

/ticket-setup server setup
If permission allowed manage server
if
else
Find channel settings.panel_channel
Audit embed staff log
Reply permission denied
action Move channel action_move_channel Manages Discord channels, threads, permissions, or channel metadata. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Manages Discord channels, threads, permissions, or channel metadata. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Channel channel_source Selection

Where Sefrum should read the target channel from.

Types

current Use the channel where the command or event is running. channel_id Use the channel named or identified in Target channel value. variable Read the target channel from a workflow variable.
Channel value channel_value Single-line text

The channel ID, name, or variable value used by the selected channel source.

Category ID category_id Single-line text

Category ID, category name, or variable used when placing the new channel.

Reason reason Single-line text

Single-line text

Paths

continue out

Next path.

Usage examples

Example #1 Move a ticket to the archive category

Move the current channel after a ticket is closed. The ticket channel is placed under Archived Tickets and the workflow can continue with logging.

/ticket-setup server setup
If permission allowed manage server
if
else
Move channel current
Audit embed staff log
Reply permission denied
action Set channel permissions action_set_channel_permissions Manages Discord channels, threads, permissions, or channel metadata. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Manages Discord channels, threads, permissions, or channel metadata. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Channel channel_source Selection

Where Sefrum should read the target channel from.

Types

current Use the channel where the command or event is running. channel_id Use the channel named or identified in Target channel value. variable Read the target channel from a workflow variable.
Channel value channel_value Single-line text

The channel ID, name, or variable value used by the selected channel source.

Target target Single-line text

Single-line text

Permissions permissions Multi-line text

Permission value used by Discord permission checks or overwrites.

Reason reason Single-line text

Single-line text

Paths

continue out

Next path.

Usage examples

Example #1 Hide a ticket from everyone except staff

Apply permission overwrites after creating or finding a private channel. The target channel denies @everyone access and allows the support team to read and reply.

/ticket-setup server setup
If permission allowed manage server
if
else
Set channel permissions variable
Audit embed staff log
Reply permission denied
1 blocks Comparisons Reusable value checks for branching when two values need to be compared.
condition Compare values condition_compare Branches the workflow based on left value, operator, right value. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Branches the workflow based on left value, operator, right value. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Properties

Left value left_value Single-line text

Value used by the selected source or mode.

Operator operator Selection

Selection

Types

== != < <= > >= contains not_contains starts_with ends_with
Right value right_value Single-line text

Value used by the selected source or mode.

Value type value_type Selection

Selection

Types

auto text number datetime
Case sensitive case_sensitive On/off

On/off

Show else branch enable_else On/off

Adds or keeps a fallback output path for unmatched or failed cases.

Paths

True if_true

Matched path.

False if_false

Fallback path.

Usage examples

Example #1 Check a numeric form answer

Branch based on whether a submitted number is above a threshold. Counts over 10 follow the if path; smaller values follow else when connected.

/quote form value
Compare values {form.quantity}
if
else
Add role approved path
Reply denied path
Example #2 Check whether text contains a keyword

Route messages that include a configured word or phrase. Messages containing refund continue through if; other messages continue through else.

/quote form value
Compare values {message.content}
if
else
Add role approved path
Reply denied path
14 blocks Conditions Decision blocks that split the workflow based on messages, users, roles, permissions, records, cooldowns, and validation results.
condition If account age condition_account_age Branches the workflow based on member, operator, age (days). Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Branches the workflow based on member, operator, age (days). Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Properties

Member member_source Selection

Controls where this block reads the target value from.

Types

trigger_user variable user_id
Operator operator Selection

Selection

Types

less_than greater_than
Age (days) age_days Single-line text

Single-line text

Show else branch enable_else On/off

Adds or keeps a fallback output path for unmatched or failed cases.

Paths

If if_true

Matched path.

Else if_false

Fallback path.

Usage examples

Example #1 Block very new accounts

Use this before giving access or roles to reduce raid risk. Accounts younger than seven days follow the if path for extra verification.

/command incoming values
If account age trigger_user
if
else
Add role approved path
Reply denied path
Example #2 Reward older accounts

Use greater_than when older trusted accounts should skip a review path. Accounts older than 30 days follow the if path.

/command incoming values
If account age trigger_user
if
else
Add role approved path
Reply denied path
condition If cooldown available condition_cooldown_available Branches the workflow based on cooldown key, scope, duration (seconds). Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Branches the workflow based on cooldown key, scope, duration (seconds). Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Properties

Cooldown key cooldown_key Single-line text

Single-line text

Scope scope Selection

Where stored memory or data belongs, such as user, channel, guild, or global.

Types

user channel guild global
Duration (seconds) duration_seconds Single-line text

Single-line text

Store remaining as store_remaining_as Single-line text

Workflow variable name where this block stores a value for later steps.

Show cooldown branch enable_else On/off

Adds or keeps a fallback output path for unmatched or failed cases.

Paths

Ready if_true

Matched path.

Cooldown if_false

Fallback path.

Usage examples

Example #1 Daily reward cooldown

Prevent a user from claiming a reward more than once per day. If the cooldown is available, the reward path runs. Otherwise {cooldown_remaining} can be shown in a reply.

/command incoming values
If cooldown available daily_reward:{user.id}
if
else
Add role approved path
Reply denied path
condition If entity exists condition_entity_exists Branches the workflow based on entity type, source, value. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Branches the workflow based on entity type, source, value. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Properties

Entity type entity_type Selection

Selection

Types

role channel user
Source source_mode Selection

Controls where this block reads the target value from.

Types

id Treat the value as a Discord ID. name Treat the value as a display name. variable Read the value from a workflow variable.
Value value Single-line text

Main value this block reads, stores, compares, or sends.

Variable variable_name Single-line text

Workflow variable name to read, write, compare, or update.

Show else branch enable_else On/off

Adds or keeps a fallback output path for unmatched or failed cases.

Paths

if if_true

Matched path.

else if_false

Fallback path.

Usage examples

Example #1 Check that a Muted role exists

Validate setup before trying to apply a moderation role. If the role exists, the workflow applies it. Otherwise the else path can create it.

/command incoming values
If entity exists Muted
if
else
Add role approved path
Reply denied path
Example #2 Check that a channel exists by ID

Use an ID check when setup stores exact Discord IDs. The if path runs only if that channel is still present in the server.

/command incoming values
If entity exists {settings.log_channel_id}
if
else
Add role approved path
Reply denied path
condition If form response valid condition_form_response_valid Branches the workflow based on field, validation, validation value. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Branches the workflow based on field, validation, validation value. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Properties

Field field_name Single-line text

Single-line text

Validation validation Selection

Selection

Types

required email number min_length max_length regex role_id channel_id
Validation value validation_value Single-line text

Value used by the selected source or mode.

Error message error_message Single-line text

Single-line text

Show invalid branch enable_else On/off

Adds or keeps a fallback output path for unmatched or failed cases.

Paths

Valid if_true

Matched path.

Invalid if_false

Fallback path.

Usage examples

Example #1 Require an email field

Validate a submitted form field before saving a user profile. Valid email values continue through if; invalid values follow else and can show the error message.

/command incoming values
If form response valid email
if
else
Add role approved path
Reply denied path
Example #2 Require a detailed description

Use minimum length to keep ticket intake useful for staff. Descriptions shorter than 20 characters go to the invalid path.

/command incoming values
If form response valid description
if
else
Add role approved path
Reply denied path
condition If member has role condition_member_has_role Branches the workflow based on member, member value, role. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Branches the workflow based on member, member value, role. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Properties

Member member_source Selection

Controls where this block reads the target value from.

Types

trigger_user variable user_id
Member value member_value Single-line text

Value used by the selected source or mode.

Role role_source Selection

Where Sefrum should read the target role from.

Types

role_id Look up the role by Discord role ID. role_name Look up the role by visible server role name. variable Read the role ID or name from a workflow variable.
Role value role_value Single-line text

Value used by the selected source or mode.

Show else branch enable_else On/off

Adds or keeps a fallback output path for unmatched or failed cases.

Paths

If if_true

Matched path.

Else if_false

Fallback path.

Usage examples

Example #1 Only allow moderators

Place this before a moderation action that should require a role. Members with Moderator continue through if; everyone else follows else.

/command incoming values
If member has role trigger_user
if
else
Add role approved path
Reply denied path
condition If message contains condition_contains Branches the workflow based on source, contains, case sensitive. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Branches the workflow based on source, contains, case sensitive. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Properties

Source source Selection

Selection

Types

message.content command.input
Contains value Single-line text

Main value this block reads, stores, compares, or sends.

Case sensitive case_sensitive On/off

On/off

Show else branch enable_else On/off

Adds or keeps a fallback output path for unmatched or failed cases.

Paths

if if_true

Matched path.

else if_false

Fallback path.

Usage examples

Example #1 Detect help in a message

Use this in an On message workflow to watch for a simple phrase. Messages containing help continue through if.

/command incoming values
If message contains help
if
else
Add role approved path
Reply denied path
Example #2 Check command input

Use command.input when the slash command text should decide the route. Inputs containing billing continue through the billing path.

/command incoming values
If message contains billing
if
else
Add role approved path
Reply denied path
condition If message matches filter condition_message_matches_filter Branches the workflow based on filter, pattern or list, threshold. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Branches the workflow based on filter, pattern or list, threshold. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Properties

Filter filter Selection

The matching rule or search filter used by the block.

Types

link invite attachment mention_spam caps_spam blocked_word regex
Pattern or list pattern Multi-line text

Multi-line text

Threshold threshold Single-line text

Single-line text

Case sensitive case_sensitive On/off

On/off

Show clean branch enable_else On/off

Adds or keeps a fallback output path for unmatched or failed cases.

Paths

Match if_true

Matched path.

Clean if_false

Fallback path.

Usage examples

Example #1 Catch invite links

Use this in an On message moderation workflow. Messages containing Discord invite links follow the moderation path.

/command incoming values
If message matches filter invite
if
else
Add role approved path
Reply denied path
Example #2 Catch mention spam

Use threshold-based matching for messages with too many mentions. Messages above the threshold can be deleted, logged, or warned.

/command incoming values
If message matches filter mention_spam
if
else
Add role approved path
Reply denied path
condition If permission allowed condition_permission_check Branches the workflow based on member, permission, channel scope. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Branches the workflow based on member, permission, channel scope. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Properties

Member member_source Selection

Controls where this block reads the target value from.

Types

trigger_user variable user_id
Permission permission Selection

Permission value used by Discord permission checks or overwrites.

Types

administrator manage_guild manage_roles manage_channels moderate_members ban_members kick_members manage_messages
Channel scope channel_source Selection

Where Sefrum should read the target channel from.

Types

current Use the channel where the command or event is running. channel_id Use the channel named or identified in Target channel value. none
Channel ID channel_id Single-line text

Discord channel ID, channel name, or variable depending on the source setting.

Show else branch enable_else On/off

Adds or keeps a fallback output path for unmatched or failed cases.

Paths

If if_true

Matched path.

Else if_false

Fallback path.

Usage examples

Example #1 Require Manage Messages

Protect purge or cleanup commands from normal members. Users with Manage Messages continue through if; others receive the denial path.

/command incoming values
If permission allowed trigger_user
if
else
Add role approved path
Reply denied path
condition If role exists condition_role_exists Branches the workflow based on role source, role id or name, variable. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Branches the workflow based on role source, role id or name, variable. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Properties

Role source source_mode Selection

Controls where this block reads the target value from.

Types

role_id role_name variable Read the value from a workflow variable.
Role ID or name role_value Single-line text

Value used by the selected source or mode.

Variable variable_name Single-line text

Workflow variable name to read, write, compare, or update.

Show else branch enable_else On/off

Adds or keeps a fallback output path for unmatched or failed cases.

Paths

if if_true

Matched path.

else if_false

Fallback path.

Usage examples

Example #1 Check for the Muted role

Run before a timeout/mute workflow tries to assign a role. If Muted exists the role workflow continues; else can create the role first.

/command incoming values
If role exists role_name
if
else
Add role approved path
Reply denied path
condition If user is condition_user_is Branches the workflow based on user id or mention, match, show else branch. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Branches the workflow based on user id or mention, match, show else branch. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Properties

User ID or mention user_ref Single-line text

User ID, mention, username, or variable used to identify a Discord member.

Match match_mode Selection

Controls where this block reads the target value from.

Types

equals not_equals
Show else branch enable_else On/off

Adds or keeps a fallback output path for unmatched or failed cases.

Paths

if if_true

Matched path.

else if_false

Fallback path.

Usage examples

Example #1 Owner-only branch

Use this before a setup command that only one Discord user should run. Only the configured user ID follows the if path.

/command incoming values
If user is 123456789012345678
if
else
Add role approved path
Reply denied path
Example #2 Ignore a bot account

Use not_equals when one account should be excluded from the workflow. Everyone except the configured user continues through if.

/command incoming values
If user is {message.author.id}
if
else
Add role approved path
Reply denied path
condition If variable equals condition_variable_equals Branches the workflow based on variable, match, value. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Branches the workflow based on variable, match, value. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Properties

Variable variable_name Single-line text

Workflow variable name to read, write, compare, or update.

Match match_mode Selection

Controls where this block reads the target value from.

Types

equals not_equals contains
Value value Single-line text

Main value this block reads, stores, compares, or sends.

Show else branch enable_else On/off

Adds or keeps a fallback output path for unmatched or failed cases.

Paths

if if_true

Matched path.

else if_false

Fallback path.

Usage examples

Example #1 Check a saved status

Use this after loading a record to route open tickets differently from closed ones. Tickets with status open continue through if.

/command incoming values
If variable equals open
if
else
Add role approved path
Reply denied path
Example #2 Check whether text contains a word

Use contains when the variable is longer text. Values containing refund follow the if path.

/command incoming values
If variable equals refund
if
else
Add role approved path
Reply denied path
condition If variable exists condition_variable_exists Branches the workflow based on variable, show else branch. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Branches the workflow based on variable, show else branch. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Properties

Variable variable_name Single-line text

Workflow variable name to read, write, compare, or update.

Show else branch enable_else On/off

Adds or keeps a fallback output path for unmatched or failed cases.

Paths

if if_true

Matched path.

else if_false

Fallback path.

Usage examples

Example #1 Require a loaded ticket

Use this immediately after Load record when later blocks expect ticket data. If {ticket} exists, the workflow continues. If it is missing, else can reply with not found.

/command incoming values
If variable exists ticket
if
else
Add role approved path
Reply denied path
condition If variable in condition_value_in_list Branches the workflow based on variable, list variable, case sensitive. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Branches the workflow based on variable, list variable, case sensitive. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Properties

Variable variable_name Single-line text

Workflow variable name to read, write, compare, or update.

List variable list_name Single-line text

Single-line text

Case sensitive case_sensitive On/off

On/off

Show else branch enable_else On/off

Adds or keeps a fallback output path for unmatched or failed cases.

Paths

if if_true

Matched path.

else if_false

Fallback path.

Usage examples

Example #1 Check if a topic is allowed

Route only values that exist in a prepared list variable. If {topic} exists inside allowed_topics, the workflow accepts it; otherwise it follows else.

/command incoming values
If variable in topic
if
else
Add role approved path
Reply denied path
condition Validate input condition_validate_input Branches the workflow based on source, variable, value. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Branches the workflow based on source, variable, value. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Properties

Source source_mode Selection

Controls where this block reads the target value from.

Types

variable Read the value from a workflow variable. literal Use the value exactly as typed.
Variable variable_name Single-line text

Workflow variable name to read, write, compare, or update.

Value value Single-line text

Main value this block reads, stores, compares, or sends.

Validation validation Selection

Selection

Types

required email number min_length max_length regex url hex_color role_id channel_id
Validation value validation_value Single-line text

Value used by the selected source or mode.

Show invalid branch enable_else On/off

Adds or keeps a fallback output path for unmatched or failed cases.

Paths

Valid if_true

Matched path.

Invalid if_false

Fallback path.

Usage examples

Example #1 Validate a command email

Use this before saving profile data from a command input. Valid email text continues through if; invalid text follows else.

/command incoming values
Validate input variable
if
else
Add role approved path
Reply denied path
Example #2 Validate a hex color

Use this before editing an embed color or role color. #d97757 passes; invalid color text follows else.

/command incoming values
Validate input #d97757
if
else
Add role approved path
Reply denied path
1 blocks Context Values Blocks that copy the current Discord context into named variables for later blocks.
action Get current action_get_current Adds the Get current function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Adds the Get current function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Item item Selection

Selection

Types

channel user message guild interaction
Store as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

continue out

Next path.

Usage examples

Example #1 Store the current channel

Capture the Discord channel where the workflow is running. The channel is stored as {current_channel} for later send, edit, or record blocks. Configuration: Store as: current_channel.

On message Discord context
Get current channel
Set variable saved context
Reply uses value
Example #2 Store the triggering user

Capture the member who ran the command or clicked the interaction. The user is stored as {request_user} for later role, DM, or record blocks. Configuration: Store as: request_user.

On message Discord context
Get current user
Set variable saved context
Reply uses value
19 blocks Data Integrations Persistence, locks, records, variables, scheduled tasks, and webhook calls.
action Acquire lock action_acquire_lock Adds the Acquire lock function to the workflow. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Adds the Acquire lock function to the workflow. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Properties

Key key Single-line text

Record key, memory key, lock key, or setting name.

TTL seconds ttl_seconds Single-line text

Single-line text

Store expiry as store_expires_as Single-line text

Workflow variable name where this block stores a value for later steps.

Paths

Acquired acquired

Outcome path.

Locked locked

Outcome path.

Usage examples

Example #1 Prevent duplicate ticket creation

Lock a user while a ticket create workflow is running. The workflow owns lock ticket_create:{user.id} for 30 seconds and stores the expiry in {lock_expires_at}.

/claim exclusive action
Acquire lock ticket_create:{user.id}
Set variable stored result
Reply with embed current state
action Variables Delete runtime variable action_delete_record Stores or loads persistent per-bot data for economy, managed work items, settings, and profiles. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Stores or loads persistent per-bot data for economy, managed work items, settings, and profiles. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Properties

Type collection Single-line text

The record collection or table name used for saved workflow data.

Key record_key Single-line text

Single-line text

Paths

continue out

Next path.

Usage examples

Example #1 Delete a ticket record

Remove saved data after a ticket is closed and exported. The record tickets/{ticket.id} is deleted.

/ticket ticket data
Delete runtime variable tickets
Audit embed stored result
Reply with embed current state
action Variables Delete runtime variables action_delete_records Stores or loads persistent per-bot data for economy, managed work items, settings, and profiles. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Stores or loads persistent per-bot data for economy, managed work items, settings, and profiles. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Properties

Type collection Single-line text

The record collection or table name used for saved workflow data.

Field path field_name Single-line text

Single-line text

Equals equals Single-line text

Single-line text

Contains contains Single-line text

Single-line text

Limit limit Single-line text

Maximum number of items to return or process.

Store deleted count as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

continue out

Next path.

Usage examples

Example #1 Delete expired temporary records

Bulk-remove records that match a field filter. Up to 25 records in temp_sessions with status expired are removed.

/ticket ticket data
Delete runtime variables temp_sessions
Audit embed stored result
Reply with embed current state
action Variables Delete variable action_delete_global_variable Stores or loads persistent per-bot data for economy, managed work items, settings, and profiles. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Stores or loads persistent per-bot data for economy, managed work items, settings, and profiles. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Properties

Key key Single-line text

Record key, memory key, lock key, or setting name.

Paths

continue out

Next path.

Usage examples

Example #1 Reset a saved setting

Remove a bot-wide setup value so the setup command can be rerun cleanly. support_channel is removed from global storage.

/settings server config
Delete variable support_channel
Audit embed stored result
Reply with embed current state
action Variables Get variable action_get_global_variable Stores or loads persistent per-bot data for economy, managed work items, settings, and profiles. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Stores or loads persistent per-bot data for economy, managed work items, settings, and profiles. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Properties

Key key Single-line text

Record key, memory key, lock key, or setting name.

Default value default_value Single-line text

Value used by the selected source or mode.

Store as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

Found found

Outcome path.

Missing missing

Outcome path.

Usage examples

Example #1 Read a configured support channel

Load a bot-wide setting saved during setup. If support_channel is set, its value is stored as {support_channel}. Otherwise {support_channel} becomes fallback-support. Configuration: Store as: support_channel.

/settings server config
Get variable support_channel
If variable exists stored result
Reply with embed current state
condition Variables If runtime variable list contains condition_record_list_contains Branches based on whether a loaded runtime variable's nested list contains a value. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Branches based on whether a loaded runtime variable's nested list contains a value. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Properties

Runtime variable record_variable Single-line text

Single-line text

List path list_path Single-line text

Single-line text

Item source item_source Selection

Controls where this block reads the target value from.

Types

text variable json
Item value item_value Multi-line text

Value used by the selected source or mode.

Item variable item_variable Single-line text

Single-line text

Case sensitive case_sensitive On/off

On/off

Show else branch enable_else On/off

Adds or keeps a fallback output path for unmatched or failed cases.

Paths

if if_true

Matched path.

else if_false

Fallback path.

Usage examples

Example #1 Prevent duplicate votes

Branch based on a list inside a loaded record. If poll.votes already contains the current user ID, the workflow can show an already-voted message; otherwise it can add the vote.

/command incoming values
If runtime variable list contains poll
if
else
Add role approved path
Reply denied path
condition Variables If variable exists condition_global_variable_exists Branches the workflow based on key, store as. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Branches the workflow based on key, store as. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Properties

Key key Single-line text

Record key, memory key, lock key, or setting name.

Store as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

Exists if_true

Matched path.

Missing if_false

Fallback path.

Usage examples

Example #1 Check setup before posting tickets

Route users to setup instructions when a required bot setting is missing. If support_channel exists, the workflow continues to post the panel. Otherwise else can show /setup. Configuration: Store as: support_channel.

/command incoming values
If variable exists support_channel
if
else
Add role approved path
Reply denied path
action Variables Increment runtime variable field action_increment_record_field Copies a loaded runtime variable, increments one numeric field, and stores the updated value for saving. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Copies a loaded runtime variable, increments one numeric field, and stores the updated value for saving. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Properties

Runtime variable record_variable Single-line text

Single-line text

Field path field_path Single-line text

Single-line text

Amount amount Single-line text

Single-line text

Default value default_value Single-line text

Value used by the selected source or mode.

Store variable as store_as Single-line text

Workflow variable name where this block stores its result.

Store value as store_value_as Single-line text

Workflow variable name where this block stores a value for later steps.

Paths

continue out

Next path.

Usage examples

Example #1 Count button clicks

Increment a number inside a loaded record without asking AI to rewrite the whole object. session.moves increases by 1 and the updated session is stored as {updated_session}. Configuration: Store record as: updated_session.

/ticket ticket data
Increment runtime variable field session
Set variable stored result
Reply with embed current state
action Variables Increment variable action_increment_global_variable Stores or loads persistent per-bot data for economy, managed work items, settings, and profiles. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Stores or loads persistent per-bot data for economy, managed work items, settings, and profiles. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Properties

Key key Single-line text

Record key, memory key, lock key, or setting name.

Amount amount Single-line text

Single-line text

Default value default_value Single-line text

Value used by the selected source or mode.

Store as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

continue out

Next path.

Usage examples

Example #1 Count created tickets

Increase a platform counter each time a ticket is opened. ticket_count increases by 1 and the new value is stored as {ticket_count}. Configuration: Store as: ticket_count.

/settings server config
Increment variable ticket_count
Set variable stored result
Reply with embed current state
action Variables Load runtime variable action_load_record Stores or loads persistent per-bot data for economy, managed work items, settings, and profiles. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Stores or loads persistent per-bot data for economy, managed work items, settings, and profiles. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Properties

Type collection Single-line text

The record collection or table name used for saved workflow data.

Key record_key Single-line text

Single-line text

Store as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

Found found

Outcome path.

Missing missing

Outcome path.

Usage examples

Example #1 Load a ticket record

Read saved ticket data before changing status or posting a summary. The record tickets/{channel.id} is loaded into {ticket}. Configuration: Store as: ticket.

/ticket ticket data
Load runtime variable tickets
If variable exists stored result
Reply with embed current state
action Variables Query runtime variables action_query_records Stores or loads persistent per-bot data for economy, managed work items, settings, and profiles. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Stores or loads persistent per-bot data for economy, managed work items, settings, and profiles. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Properties

Type collection Single-line text

The record collection or table name used for saved workflow data.

Field path field_name Single-line text

Single-line text

Equals equals Single-line text

Single-line text

Contains contains Single-line text

Single-line text

Limit limit Single-line text

Maximum number of items to return or process.

Store list as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

Found found

Outcome path.

Missing missing

Outcome path.

Usage examples

Example #1 Find open tickets for a user

Search a collection for records matching one field. Up to five matching records are stored as {open_tickets}. Configuration: Store as: open_tickets.

/ticket ticket data
Query runtime variables tickets
If variable exists matching rows
Reply with embed current state
action Release lock action_release_lock Adds the Release lock function to the workflow. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Adds the Release lock function to the workflow. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Properties

Key key Single-line text

Record key, memory key, lock key, or setting name.

Paths

continue out

Next path.

Usage examples

Example #1 Release a ticket creation lock

Unlock the user after the protected workflow finishes or fails. ticket_create:{user.id} can be acquired again by future runs.

/claim exclusive action
Release lock ticket_create:{user.id}
Set variable stored result
Reply with embed current state
action Variables Save runtime variable action_save_record Stores or loads persistent per-bot data for economy, managed work items, settings, and profiles. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Stores or loads persistent per-bot data for economy, managed work items, settings, and profiles. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Properties

Type collection Single-line text

The record collection or table name used for saved workflow data.

Key record_key Single-line text

Single-line text

Value JSON record_json Multi-line text

Record data saved as JSON. Values can include workflow variables.

Merge existing merge On/off

On/off

Paths

continue out

Next path.

Usage examples

Example #1 Save a new ticket

Create or replace a ticket record with structured data. The ticket record is saved under tickets/{created_channel.id}.

/ticket ticket data
Save runtime variable {"status":"open","owner":"{user.id}","priority":"{ticket_ai.priority}"}
Set variable stored result
Reply with embed current state
Example #2 Merge a status update

Update only a few fields on an existing record. The existing ticket keeps its other fields while status and closed_by are updated.

/ticket ticket data
Save runtime variable {"status":"closed","closed_by":"{user.id}"}
Set variable stored result
Reply with embed current state
action Schedule task action_schedule_task Adds the Schedule task function to the workflow. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Adds the Schedule task function to the workflow. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Properties

Task name task_name Single-line text

Single-line text

Run at run_at Single-line text

Single-line text

Timezone timezone Single-line text

Single-line text

Payload JSON payload_json Multi-line text

JSON configuration for this block. Variables can be inserted where the runtime supports templates.

Paths

continue out

Next path.

Usage examples

Example #1 Schedule a ticket follow-up

Create a delayed task after a ticket is opened. A follow_up_ticket task is scheduled with the ticket id inside its payload.

/task stored data
Schedule task follow_up_ticket
Set variable stored result
Reply with embed current state
action Variables Set runtime variable field action_set_record_field Copies a loaded runtime variable, changes one nested field, and stores the updated value for saving. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Copies a loaded runtime variable, changes one nested field, and stores the updated value for saving. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Properties

Runtime variable record_variable Single-line text

Single-line text

Field path field_path Single-line text

Single-line text

Source value_source Selection

Controls where this block reads the target value from.

Types

text variable number json boolean
Value value Multi-line text

Main value this block reads, stores, compares, or sends.

Source variable source_variable Single-line text

Single-line text

Store variable as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

continue out

Next path.

Usage examples

Example #1 Change a ticket status

Use this after Load record when one field should change but the rest of the record should stay intact. The loaded {ticket} object is copied, status becomes closed, and the updated object is stored as {updated_ticket}. Save record can then persist {updated_ticket}. Configuration: Store record as: updated_ticket.

/ticket ticket data
Set runtime variable field closed
Set variable stored result
Reply with embed current state
Example #2 Store who clicked a button

Use runtime variables as the new field value. The updated record keeps its existing data and records the Discord user ID that performed the action. Configuration: Store record as: updated_case.

/ticket ticket data
Set runtime variable field {user.id}
Set variable stored result
Reply with embed current state
action Variables Set variable action_set_global_variable Stores or loads persistent per-bot data for economy, managed work items, settings, and profiles. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Stores or loads persistent per-bot data for economy, managed work items, settings, and profiles. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Properties

Key key Single-line text

Record key, memory key, lock key, or setting name.

Source source_mode Selection

Controls where this block reads the target value from.

Types

literal Use the value exactly as typed. variable Read the value from a workflow variable. number Treat the value as a number. json Treat the value as JSON.
Value value Multi-line text

Main value this block reads, stores, compares, or sends.

Source variable source_variable Single-line text

Single-line text

Store as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

continue out

Next path.

Usage examples

Example #1 Save a setup channel

Store a channel selected during setup so future workflows can reuse it. support_channel is saved globally and {saved_setting} contains the stored value. Configuration: Store as: saved_setting.

/settings server config
Set variable {channel.id}
Set variable stored result
Reply with embed current state
Example #2 Save JSON setup data

Use JSON mode when the setting needs multiple related values. support_config is stored as a structured object that later workflows can read. Configuration: Store as: support_config.

/settings server config
Set variable {"panel_channel":"{channel.id}","category":"Support"}
Set variable stored result
Reply with embed current state
action Variables Update runtime variable list action_update_record_list Copies a loaded runtime variable, adds, removes, toggles, or clears an item in a nested list, and stores the updated value. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Copies a loaded runtime variable, adds, removes, toggles, or clears an item in a nested list, and stores the updated value. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Properties

Runtime variable record_variable Single-line text

Single-line text

List path list_path Single-line text

Single-line text

Operation operation Selection

The action this block should perform.

Types

add remove toggle clear
Item source item_source Selection

Controls where this block reads the target value from.

Types

text variable json
Item value item_value Multi-line text

Value used by the selected source or mode.

Item variable item_variable Single-line text

Single-line text

Skip duplicates unique_only On/off

On/off

Case sensitive case_sensitive On/off

On/off

Store variable as store_as Single-line text

Workflow variable name where this block stores its result.

Store changed as store_changed_as Single-line text

Workflow variable name where this block stores a value for later steps.

Paths

continue out

Next path.

Usage examples

Example #1 Remember a selected item

Add a value to a nested list inside a loaded record. The clicked item is appended to session.selectedItems and the updated session can be saved. Configuration: Operation: add; Store record as: updated_session.

/ticket ticket data
Update runtime variable list add
Set variable stored result
Reply with embed current state
Example #2 Toggle a saved flag

Use toggle for buttons that add an item when absent and remove it when present. The user ID is toggled inside poll.votes without replacing the rest of the poll record. Configuration: Operation: toggle; Store record as: updated_poll.

/ticket ticket data
Update runtime variable list toggle
Set variable stored result
Reply with embed current state
action Variables Upsert runtime variable action_upsert_record Stores or loads persistent per-bot data for economy, managed work items, settings, and profiles. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Stores or loads persistent per-bot data for economy, managed work items, settings, and profiles. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Properties

Type collection Single-line text

The record collection or table name used for saved workflow data.

Key record_key Single-line text

Single-line text

Value JSON record_json Multi-line text

Record data saved as JSON. Values can include workflow variables.

Merge existing merge On/off

On/off

Paths

continue out

Next path.

Usage examples

Example #1 Create or update a profile

Save the record whether or not it already exists. profiles/{user.id} exists after the block runs and contains the submitted values.

/ticket ticket data
Upsert runtime variable {"timezone":"{profile_form.timezone}","about":"{profile_form.about}"}
Set variable stored result
Reply with embed current state
action Webhook request action_webhook_request Adds the Webhook request function to the workflow. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Adds the Webhook request function to the workflow. Use it when the bot needs memory across runs: settings, ticket records, cooldowns, locks, scheduled work, or calls to outside systems.

Properties

Method method Selection

HTTP method used for the webhook request.

Types

GET POST PUT PATCH DELETE
URL url Single-line text

External URL used for web search, scraping, storage, or webhooks.

Headers JSON headers_json Multi-line text

HTTP headers sent with the webhook request.

Body JSON body_json Multi-line text

JSON configuration for this block. Variables can be inserted where the runtime supports templates.

Store response as store_response_as Single-line text

Workflow variable name where this block stores a value for later steps.

Paths

Ok success

Model returned a response.

Failed error

Request failed.

Usage examples

Example #1 Send a ticket event webhook

Notify an external system when a ticket opens. The POST request is sent and the response is stored as {webhook_response}.

/sync external system
Webhook request POST
Set variable response body
Reply with embed current state
Example #2 Fetch status from an API

Use GET when the workflow needs outside data before replying. The API response is stored as {service_status}.

/sync external system
Webhook request GET
Set variable response body
Reply with embed current state
13 blocks Discord Actions Common Discord-facing actions such as replies, embeds, DMs, role changes, logs, member operations, and channel messages.
action Add role action_add_role Reads or changes Discord role state for users and moderation workflows. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Reads or changes Discord role state for users and moderation workflows. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Role source source_mode Selection

Controls where this block reads the target value from.

Types

role_id role_name variable Read the value from a workflow variable.
Role source role_id Single-line text

Discord role ID, role name, or variable depending on the source setting.

Paths

continue out

Next path.

Usage examples

Example #1 Give a verified role

Add a role after onboarding or verification passes. The configured role is added to the triggering member.

/command slash command
Add role role_name
Reply confirmation
Log event audit trail
action Audit embed action_audit_embed Sends a polished Discord embed with configurable title, fields, images, and footer. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Sends a polished Discord embed with configurable title, fields, images, and footer. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Channel channel_source Selection

Where Sefrum should read the target channel from.

Types

current Use the channel where the command or event is running. channel_id Use the channel named or identified in Target channel value. variable Read the target channel from a workflow variable.
Channel value channel_value Single-line text

The channel ID, name, or variable value used by the selected channel source.

Title title Single-line text

Primary heading for embeds, panels, records, or created items.

Description description Multi-line text

The longer body text shown in an embed, panel, record, or generated item.

Color color Single-line text

Discord color value, usually a hex color such as #f5a623.

Action action Single-line text

Single-line text

Actor actor Single-line text

Single-line text

Target target Single-line text

Single-line text

Reason reason Multi-line text

Multi-line text

Paths

continue out

Next path.

Usage examples

Example #1 Structured moderation audit

Send an audit embed to a staff channel with actor, target, and reason. The audit channel receives an embed describing the timeout action. Configuration: Title: Member timed out.

/command slash command
Audit embed Member timed out
Reply confirmation
Log event audit trail
action Create channel action_create_channel Manages Discord channels, threads, permissions, or channel metadata. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Manages Discord channels, threads, permissions, or channel metadata. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Channel type channel_type Selection

Channel ID, channel name, or variable used by this block.

Types

text voice forum thread
Name template name_template Single-line text

Single-line text

Category ID category_id Single-line text

Category ID, category name, or variable used when placing the new channel.

Permission overwrites permission_overwrites Multi-line text

Permission value used by Discord permission checks or overwrites.

Store channel as store_channel_as Single-line text

Workflow variable name where this block stores a value for later steps.

Paths

continue out

Next path.

Usage examples

Example #1 Create a text ticket channel

Open a dedicated text channel for a user's ticket. A text channel named ticket-mira is created under Support and stored as {created_channel}.

/command slash command
Create channel ticket-{user.username}
Reply confirmation
Log event audit trail
Example #2 Create a forum-style channel

Use a different channel type when the workflow creates structured discussion spaces. A forum channel is created and saved as {created_channel}.

/command slash command
Create channel community-questions
Reply confirmation
Log event audit trail
action Find member action_find_member Adds the Find member function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Adds the Find member function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Source source_mode Selection

Controls where this block reads the target value from.

Types

trigger_user user_id variable Read the value from a workflow variable. form_field
ID, mention, or variable value Single-line text

Main value this block reads, stores, compares, or sends.

Store as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

Found found

Outcome path.

Missing missing

Outcome path.

Usage examples

Example #1 Find the target user

Resolve a user ID from a command variable before moderation actions run. The member is stored as {target_member}. Configuration: Store as: target_member.

/command slash command
Find member {target_user.id}
Reply confirmation
Log event audit trail
action Log event action_log Adds the Log event function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Adds the Log event function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Channel ID channel_id Single-line text

Discord channel ID, channel name, or variable depending on the source setting.

Log message message Multi-line text

Discord message text. Variables can be inserted with braces.

Paths

continue out

Next path.

Usage examples

Example #1 Send a moderation log line

Post a simple text log to a configured staff channel. The channel mod-log receives the formatted message. Configuration: Message: {user.username} deleted {count} messages in {ch....

/command slash command
Log event {user.username} deleted {count} messages in {channel.name}.
Reply confirmation
Log event audit trail
action Member operation action_member_operation Adds the Member operation function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Adds the Member operation function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Operation operation Selection

The action this block should perform.

Types

add_role Add the role to the selected member. remove_role Remove the role from the selected member. set_nickname Change the selected member's nickname. timeout Temporarily time out the selected member. untimeout Remove an active timeout. kick Kick the selected member from the server. ban Ban the selected member. unban Remove a ban for the selected user.
Member member_source Selection

Controls where this block reads the target value from.

Types

trigger_user variable user_id form_field
Member value member_value Single-line text

Value used by the selected source or mode.

Role value role_value Single-line text

Value used by the selected source or mode.

Nickname nickname Single-line text

Single-line text

Duration (minutes) duration_minutes Single-line text

Single-line text

Reason reason Multi-line text

Multi-line text

Paths

continue out

Next path.

Usage examples

Example #1 Timeout a member

Apply a Discord timeout after permission checks pass. The selected member is timed out for 10 minutes and the reason is saved in Discord audit logs. Configuration: Operation: timeout.

/command slash command
Member operation timeout
Reply confirmation
Log event audit trail
Example #2 Kick from a form field

Use a submitted form field when staff entered the target user in a modal. The form-selected member is kicked with the configured reason. Configuration: Operation: kick.

/command slash command
Member operation kick
Reply confirmation
Log event audit trail
action Message operation action_message_operation Reads, sends, edits, pins, deletes, or searches Discord messages. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Reads, sends, edits, pins, deletes, or searches Discord messages. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Operation operation Selection

The action this block should perform.

Types

delete_current Delete the message that triggered the workflow. delete_bulk Delete multiple messages from the configured channel. pin Pin the target message. unpin Unpin the target message. publish Publish a message from an announcement channel.
Channel channel_source Selection

Where Sefrum should read the target channel from.

Types

current Use the channel where the command or event is running. channel_id Use the channel named or identified in Target channel value. variable Read the target channel from a workflow variable.
Channel value channel_value Single-line text

The channel ID, name, or variable value used by the selected channel source.

Message message_source Selection

Where Sefrum should read the target message from.

Types

current Use the message attached to the current event or interaction. message_id Use the message ID entered in Message value. variable Read the message reference from a workflow variable.
Message value message_value Single-line text

Value used by the selected source or mode.

Count count Single-line text

Single-line text

Paths

continue out

Next path.

Usage examples

Example #1 Bulk purge messages

Delete recent messages after a moderator runs a purge command. 25 messages are deleted from the current channel. Configuration: Operation: delete_bulk.

/command slash command
Message operation delete_bulk
Reply confirmation
Log event audit trail
Example #2 Pin a saved announcement

Use a saved message ID when a setup workflow should pin its own output. The message stored in {announcement_message.id} is pinned. Configuration: Operation: pin.

/command slash command
Message operation pin
Reply confirmation
Log event audit trail
action Remove role action_remove_role Reads or changes Discord role state for users and moderation workflows. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Reads or changes Discord role state for users and moderation workflows. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Role source source_mode Selection

Controls where this block reads the target value from.

Types

role_id role_name variable Read the value from a workflow variable.
Role source role_id Single-line text

Discord role ID, role name, or variable depending on the source setting.

Paths

continue out

Next path.

Usage examples

Example #1 Remove an onboarding role

Remove a temporary role once onboarding is complete. The Pending role is removed from the triggering member.

/command slash command
Remove role role_name
Reply confirmation
Log event audit trail
action Reply action_reply Adds the Reply function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Adds the Reply function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Message message Multi-line text

Discord message text. Variables can be inserted with braces.

Ephemeral ephemeral On/off

When enabled, only the user who triggered the interaction can see the response.

Paths

continue out

Next path.

Usage examples

Example #1 Public hello reply

Respond to a simple slash command in the current channel. Discord receives: Hello Mira! Configuration: Message: Hello {user.username}!.

/command slash command
Reply Hello {user.username}!
Reply confirmation
Log event audit trail
Example #2 Private setup confirmation

Use ephemeral replies for admin-only setup feedback. Only the moderator sees: Panel posted in #support. Configuration: Message: Panel posted in {channel.mention}..

/command slash command
Reply Panel posted in {channel.mention}.
Reply confirmation
Log event audit trail
action Reply with embed action_embed_reply Sends a polished Discord embed with configurable title, fields, images, and footer. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Sends a polished Discord embed with configurable title, fields, images, and footer. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Title title Single-line text

Primary heading for embeds, panels, records, or created items.

Title URL url Single-line text

External URL used for web search, scraping, storage, or webhooks.

Description description Multi-line text

The longer body text shown in an embed, panel, record, or generated item.

Color color Single-line text

Discord color value, usually a hex color such as #f5a623.

Author author_name Single-line text

Single-line text

Author icon URL author_icon_url Single-line text

Single-line text

Image URL image_url Single-line text

Image URL used for embeds, image inspection, or generated output.

Thumbnail URL thumbnail_url Single-line text

Single-line text

Fields JSON fields_json Multi-line text

Embed field definitions, including names, values, and inline layout.

Footer footer Single-line text

Small footer text shown at the bottom of an embed.

Footer icon URL footer_icon_url Single-line text

Single-line text

Ephemeral ephemeral On/off

When enabled, only the user who triggered the interaction can see the response.

Paths

continue out

Next path.

Usage examples

Example #1 Welcome embed

Send a polished welcome/rules message after setup. Discord receives an embed titled Welcome to {guild.name} with the configured description, color, fields, and footer. Configuration: Title: Welcome to {guild.name}.

/command slash command
Reply with embed Welcome to {guild.name}
Reply confirmation
Log event audit trail
Example #2 Private validation error

Use ephemeral embeds for setup errors that only the command runner should see. Only the triggering user sees the warning embed. Configuration: Title: Setup missing.

/command slash command
Reply with embed Setup missing
Reply confirmation
Log event audit trail
action Send channel message action_send_channel_message Manages Discord channels, threads, permissions, or channel metadata. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Manages Discord channels, threads, permissions, or channel metadata. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Channel channel_source Selection

Where Sefrum should read the target channel from.

Types

current Use the channel where the command or event is running. channel_id Use the channel named or identified in Target channel value. variable Read the target channel from a workflow variable. form_field
Channel value channel_value Single-line text

The channel ID, name, or variable value used by the selected channel source.

Message message Multi-line text

Discord message text. Variables can be inserted with braces.

Mention role IDs mention_roles Multi-line text

Role ID, role name, or variable used by this block.

Store message as store_message_as Single-line text

Workflow variable name where this block stores a value for later steps.

Paths

continue out

Next path.

Usage examples

Example #1 Post a staff notification

Send a message to a channel selected by ID or name. The staff-log channel receives the message and the sent message is stored as {sent_message}. Configuration: Message: New ticket from {user.username}: {ticket_ai.sum....

/command slash command
Send channel message New ticket from {user.username}: {ticket_ai.summary}
Reply confirmation
Log event audit trail
action Send DM action_send_dm Adds the Send DM function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Adds the Send DM function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

User user_source Selection

Controls where this block reads the target value from.

Types

trigger_user user_id variable form_field
User value user_value Single-line text

Value used by the selected source or mode.

Message message Multi-line text

Discord message text. Variables can be inserted with braces.

Fail silently fail_silently On/off

On/off

Paths

continue out

Next path.

Usage examples

Example #1 DM a ticket receipt

Privately notify the user who opened a ticket. The triggering user receives a direct message. If DMs are closed, the workflow can continue silently. Configuration: Message: Your ticket #{ticket.id} was opened..

/command slash command
Send DM Your ticket #{ticket.id} was opened.
Reply confirmation
Log event audit trail
action Set nickname action_set_nickname Adds the Set nickname function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Adds the Set nickname function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Member member_source Selection

Controls where this block reads the target value from.

Types

trigger_user variable user_id
Member value member_value Single-line text

Value used by the selected source or mode.

Nickname nickname_template Single-line text

Single-line text

Paths

continue out

Next path.

Usage examples

Example #1 Add a VIP nickname prefix

Change the member nickname after a role or purchase check. The selected member's nickname becomes [VIP] Mira.

/command slash command
Set nickname trigger_user
Reply confirmation
Log event audit trail
5 blocks Event Triggers Blocks that start workflows from server events instead of slash commands.
trigger On channel created event_on_channel_created Starts a flow from a command, message, interaction, or Discord event. Use it to start workflows from Discord events. Event blocks are usually paired with conditions so the bot responds only in the right channels and situations.

Starts a flow from a command, message, interaction, or Discord event. Use it to start workflows from Discord events. Event blocks are usually paired with conditions so the bot responds only in the right channels and situations.

Properties

Channel type channel_type Selection

Channel ID, channel name, or variable used by this block.

Types

any text voice forum thread
Store channel as store_channel_as Single-line text

Workflow variable name where this block stores a value for later steps.

Paths

continue out

Next path.

Usage examples

Example #1 Log new text channels

Start a workflow whenever a new text channel is created. The new channel is stored as {created_channel} for audit embeds or permission checks.

On channel created text
If entity exists event target
if
else
Audit embed moderation log
Log event audit trail
Example #2 Watch any channel type

Use any when the audit workflow should cover text, voice, forum, and thread channels. Every channel creation event starts the workflow.

On channel created any
If entity exists event target
if
else
Audit embed moderation log
Log event audit trail
trigger On message event_on_message Starts a flow from a command, message, interaction, or Discord event. Use it to start workflows from Discord events. Event blocks are usually paired with conditions so the bot responds only in the right channels and situations.

Starts a flow from a command, message, interaction, or Discord event. Use it to start workflows from Discord events. Event blocks are usually paired with conditions so the bot responds only in the right channels and situations.

Properties

Channel filter channel_filter Single-line text

Channel ID, channel name, or variable used by this block.

Content contains contains Single-line text

Single-line text

Ignore bots ignore_bots On/off

On/off

Paths

continue out

Next path.

Usage examples

Example #1 Watch support messages

Start a workflow when a non-bot message in support contains help. Matching messages start the workflow with message, user, channel, and guild context available.

On message support
If message matches filter channel and keyword
if
else
Reply matched response
Log event audit trail
trigger On reaction event_on_reaction Starts a flow from a command, message, interaction, or Discord event. Use it to start workflows from Discord events. Event blocks are usually paired with conditions so the bot responds only in the right channels and situations.

Starts a flow from a command, message, interaction, or Discord event. Use it to start workflows from Discord events. Event blocks are usually paired with conditions so the bot responds only in the right channels and situations.

Properties

Emoji emoji Single-line text

Single-line text

Message ID message_id Single-line text

Discord message ID, or a variable containing one.

Paths

continue out

Next path.

Usage examples

Example #1 React-role trigger

Start a workflow when a user reacts with a specific emoji on a specific message. When someone reacts with :white_check_mark: on the configured message, the workflow can add a role or record the reaction.

On reaction :white_check_mark:
If variable equals emoji or message
if
else
Modify member roles reaction role
Log event audit trail
trigger On role changed event_on_role_changed Starts a flow from a command, message, interaction, or Discord event. Use it to start workflows from Discord events. Event blocks are usually paired with conditions so the bot responds only in the right channels and situations.

Starts a flow from a command, message, interaction, or Discord event. Use it to start workflows from Discord events. Event blocks are usually paired with conditions so the bot responds only in the right channels and situations.

Properties

Role filter role_filter Single-line text

Role ID, role name, or variable used by this block.

Change type change_type Selection

Selection

Types

created updated deleted member_added member_removed

Paths

continue out

Next path.

Usage examples

Example #1 Watch role creation

Start a workflow when server roles are created. The workflow can log the new role or apply policy checks.

On role changed *
If permission allowed event target
if
else
Audit embed moderation log
Log event audit trail
Example #2 Watch members receiving a role

Start a workflow when a member receives a matching role. The workflow can send a welcome message, unlock channels, or save profile state.

On role changed Verified
If permission allowed event target
if
else
Audit embed moderation log
Log event audit trail
trigger On user join event_on_user_join Starts a flow from a command, message, interaction, or Discord event. Use it to start workflows from Discord events. Event blocks are usually paired with conditions so the bot responds only in the right channels and situations.

Starts a flow from a command, message, interaction, or Discord event. Use it to start workflows from Discord events. Event blocks are usually paired with conditions so the bot responds only in the right channels and situations.

Properties

Store user as store_user_as Single-line text

Workflow variable name where this block stores a value for later steps.

Paths

continue out

Next path.

Usage examples

Example #1 Start onboarding when someone joins

Trigger a welcome/onboarding workflow for new members. The joining user is stored as {new_member} for role, DM, and welcome blocks.

On user join new_member
If account age new member safety
if
else
Add role starter role
Log event audit trail
1 blocks Forms Blocks that collect structured user input with Discord forms and route submitted, cancelled, and invalid states.
form Form form_collect Collects structured user input and routes submitted, cancelled, or invalid responses. Use it when a button or command needs more information than a slash command option should collect. Submitted answers become variables that later blocks can use in replies, embeds, records, or staff notifications.

Collects structured user input and routes submitted, cancelled, or invalid responses. Use it when a button or command needs more information than a slash command option should collect. Submitted answers become variables that later blocks can use in replies, embeds, records, or staff notifications.

Properties

Form key form_key Single-line text

Single-line text

Title title Single-line text

Primary heading for embeds, panels, records, or created items.

Description description Multi-line text

The longer body text shown in an embed, panel, record, or generated item.

Destination destination Selection

Selection

Types

modal Open a Discord modal from an interaction. Best for button-driven intake. dm Send the form privately in direct messages when the user should not answer in public. channel Ask for the form response in the current or configured channel. thread Collect the response inside a thread-style workflow.
Timeout (minutes) timeout_minutes Single-line text

Single-line text

Store response as store_response_as Single-line text

Workflow variable name where this block stores a value for later steps.

Notify channel ID notify_channel_id Single-line text

Channel ID, channel name, or variable used by this block.

Confirmation confirmation_message Multi-line text

Multi-line text

Fields fields Form field list

Structured fields shown in the Discord form.

Paths

Sent submitted

Outcome path.

Invalid invalid

Outcome path.

Cancel cancelled

Outcome path.

Usage examples

Example #1 Ticket intake modal

Open a Discord modal after a user presses Open ticket. Submitted answers are stored as {ticket_form}; submitted, invalid, and cancelled can each connect to different blocks. Configuration: Title: Open a ticket.

Send buttons Open ticket
Form Open a ticket
submitted
invalid
Save record ticket_form
Reply missing details
Create channel ticket room
Example #2 Private application form

Use DM when the answers should not be posted in a public channel. The user receives the form privately and staff can be notified in staff-log after submission. Configuration: Title: Staff application.

Send buttons Open ticket
Form Staff application
submitted
invalid
Save record ticket_form
Reply missing details
Create channel ticket room
9 blocks Interaction Controls Blocks that show, edit, defer, disable, or route buttons, panels, select menus, and interaction responses.
action Apply grid cell move action_apply_grid_cell_move Applies a clicked grid cell to saved state: reveal, flag, hazard loss, zero expansion, and win detection. Use it when the workflow needs Discord components such as buttons, select menus, panel updates, or interaction responses.

Applies a clicked grid cell to saved state: reveal, flag, hazard loss, zero expansion, and win detection. Use it when the workflow needs Discord components such as buttons, select menus, panel updates, or interaction responses.

Properties

Record variable record_variable Single-line text

Single-line text

Row value row_value Single-line text

Value used by the selected source or mode.

Column value col_value Single-line text

Value used by the selected source or mode.

Rows rows Single-line text

Single-line text

Columns cols Single-line text

Single-line text

Cell values path cell_values_path Single-line text

Single-line text

Hazards path hazards_path Single-line text

Single-line text

Revealed list path revealed_list_path Single-line text

Single-line text

Marked list path marked_list_path Single-line text

Single-line text

Mode path mode_path Single-line text

Single-line text

Fallback mode fallback_mode Selection

Controls where this block reads the target value from.

Types

reveal flag
Hazard values hazard_values Single-line text

Single-line text

Reveal zeros reveal_zero_neighbors On/off

On/off

Reveal all on loss reveal_all_on_loss On/off

On/off

Status path status_path Single-line text

Single-line text

Result path result_path Single-line text

Single-line text

Move count path move_count_path Single-line text

Single-line text

Store record as store_as Single-line text

Workflow variable name where this block stores its result.

Store outcome as store_outcome_as Single-line text

Workflow variable name where this block stores a value for later steps.

Store cell value as store_cell_value_as Single-line text

Workflow variable name where this block stores a value for later steps.

Paths

continue out

Next path.

action Build grid buttons action_build_grid_buttons Builds a Discord button array from a rectangular grid and saved record state. Use it when the workflow needs Discord components such as buttons, select menus, panel updates, or interaction responses.

Builds a Discord button array from a rectangular grid and saved record state. Use it when the workflow needs Discord components such as buttons, select menus, panel updates, or interaction responses.

Properties

Record variable record_variable Single-line text

Single-line text

Rows rows Single-line text

Single-line text

Columns cols Single-line text

Single-line text

Button ID template id_template Single-line text

Single-line text

Default label default_label Single-line text

Single-line text

Default style default_style Selection

Selection

Types

secondary primary success danger
Cell values path cell_values_path Single-line text

Single-line text

Revealed list path revealed_list_path Single-line text

Single-line text

Revealed label revealed_label Single-line text

Single-line text

Revealed style revealed_style Selection

Selection

Types

secondary primary success danger
Hazard values hazard_values Single-line text

Single-line text

Hazard revealed label hazard_revealed_label Single-line text

Single-line text

Hazard style hazard_style Selection

Selection

Types

secondary primary success danger
Disable revealed revealed_disabled On/off

On/off

Marked list path marked_list_path Single-line text

Single-line text

Marked label marked_label Single-line text

Single-line text

Marked style marked_style Selection

Selection

Types

secondary primary success danger
Disable marked marked_disabled On/off

On/off

Extra buttons JSON extra_buttons_json Multi-line text

JSON configuration for this block. Variables can be inserted where the runtime supports templates.

Store buttons as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

continue out

Next path.

Usage examples

Example #1 Refresh a saved board

Build a Discord button array from the latest saved record after a user clicks a cell. {board_buttons.json} contains one button per cell. Items in board.revealed show their saved cell value and items in board.marked show the flag label. Configuration: Store buttons as: board_buttons.

Interaction choice button click
Build grid buttons board
Edit response updated message
Disable buttons prevent repeats
Example #2 Render a seat picker

Use the same grid builder for non-game interfaces such as reservations, role pickers, or room maps. Reserved seats listed in seats.taken become disabled buttons while open seats stay clickable. Configuration: Store buttons as: seat_buttons.

Interaction choice button click
Build grid buttons seats
Edit response updated message
Disable buttons prevent repeats
action Build grid state action_build_grid_state Creates a saved rectangular grid state with optional hidden hazard positions and cell values. Use it when the workflow needs Discord components such as buttons, select menus, panel updates, or interaction responses.

Creates a saved rectangular grid state with optional hidden hazard positions and cell values. Use it when the workflow needs Discord components such as buttons, select menus, panel updates, or interaction responses.

Properties

Base record variable record_variable Single-line text

Single-line text

Rows rows Single-line text

Single-line text

Columns cols Single-line text

Single-line text

Hazard count hazard_count Single-line text

Single-line text

Hazard value hazard_value Single-line text

Value used by the selected source or mode.

Safe value safe_value Single-line text

Value used by the selected source or mode.

Use adjacency counts use_adjacency_counts On/off

On/off

Seed seed Single-line text

Single-line text

Cells path cells_path Single-line text

Single-line text

Hazards path hazards_path Single-line text

Single-line text

Revealed path revealed_path Single-line text

Single-line text

Marked path marked_path Single-line text

Single-line text

Store state as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

continue out

Next path.

Usage examples

Example #1 Create a playable board state

Generate a compact grid record with hidden hazard positions, visible cell values, and empty revealed/marked lists. {board.json} can be saved as the session record, then passed into Build grid buttons to render the first Discord board. Configuration: Store state as: board.

Interaction choice button click
Build grid state 4
Edit response updated message
Disable buttons prevent repeats
Example #2 Seed a repeatable challenge

Use a seed when the same board should be recreated for a reset, daily challenge, or tournament round. The same rows, columns, hazard count, and seed produce the same hidden hazard layout. Configuration: Store state as: daily_grid.

Interaction choice button click
Build grid state 5
Edit response updated message
Disable buttons prevent repeats
action Disable buttons action_disable_components Adds the Disable buttons function to the workflow. Use it when the workflow needs Discord components such as buttons, select menus, panel updates, or interaction responses.

Adds the Disable buttons function to the workflow. Use it when the workflow needs Discord components such as buttons, select menus, panel updates, or interaction responses.

Properties

Message source message_source Selection

Where Sefrum should read the target message from.

Types

current Use the message attached to the current event or interaction. message_id Use the message ID entered in Message value. variable Read the message reference from a workflow variable.
Message value message_value Single-line text

Value used by the selected source or mode.

Channel value channel_value Single-line text

The channel ID, name, or variable value used by the selected channel source.

Paths

continue out

Next path.

Usage examples

Example #1 Disable buttons after a ticket closes

Prevent old panel buttons from being clicked again. The buttons on the stored message become disabled.

Interaction choice button click
Disable buttons variable
Edit response updated message
Disable buttons prevent repeats
action Edit response action_edit_response Adds the Edit response function to the workflow. Use it when the workflow needs Discord components such as buttons, select menus, panel updates, or interaction responses.

Adds the Edit response function to the workflow. Use it when the workflow needs Discord components such as buttons, select menus, panel updates, or interaction responses.

Properties

Content content Multi-line text

Discord message text. Variables can be inserted with braces.

Title title Single-line text

Primary heading for embeds, panels, records, or created items.

Title URL url Single-line text

External URL used for web search, scraping, storage, or webhooks.

Description description Multi-line text

The longer body text shown in an embed, panel, record, or generated item.

Color color Single-line text

Discord color value, usually a hex color such as #f5a623.

Fields JSON fields_json Multi-line text

Embed field definitions, including names, values, and inline layout.

Buttons JSON buttons_json Multi-line text

Button definitions. Each button can become a clickable path in the workflow.

Image URL image_url Single-line text

Image URL used for embeds, image inspection, or generated output.

Thumbnail URL thumbnail_url Single-line text

Single-line text

Footer footer Single-line text

Small footer text shown at the bottom of an embed.

Message source message_source Selection

Where Sefrum should read the target message from.

Types

current Use the message attached to the current event or interaction. message_id Use the message ID entered in Message value. variable Read the message reference from a workflow variable.
Message value message_value Single-line text

Value used by the selected source or mode.

Channel value channel_value Single-line text

The channel ID, name, or variable value used by the selected channel source.

Ephemeral fallback ephemeral On/off

When enabled, only the user who triggered the interaction can see the response.

Paths

continue out

Next path.

Usage examples

Example #1 Update a button panel after click

Change the current interaction response after a user makes a choice. The existing response becomes Ticket opened with updated embed fields and buttons. Configuration: Title: Ticket opened.

Interaction choice button click
Edit response Ticket opened
Edit response updated message
Disable buttons prevent repeats
Example #2 Edit a saved message

Update a message sent earlier by storing its id. The message stored as {panel_message.id} is edited in {panel_channel.id}. Configuration: Title: Support is online.

Interaction choice button click
Edit response Support is online
Edit response updated message
Disable buttons prevent repeats
condition Interaction choice condition_interaction_choice Branches the workflow based on value source, choices json, show unmatched branch. Use it when the workflow needs Discord components such as buttons, select menus, panel updates, or interaction responses.

Branches the workflow based on value source, choices json, show unmatched branch. Use it when the workflow needs Discord components such as buttons, select menus, panel updates, or interaction responses.

Properties

Value source value_source Selection

Controls where this block reads the target value from.

Types

event.custom_id Use the clicked button's custom ID. event.value Use the selected menu value.
Choices JSON choices_json Multi-line text

Choice definitions used to create dynamic output paths.

Show unmatched branch enable_else On/off

Adds or keeps a fallback output path for unmatched or failed cases.

Paths

button or option choice_*

One path per configured interaction choice.

Usage examples

Example #1 Route button custom IDs

Handle clicks from a Send buttons panel. Clicking a button with id ticket.open follows the ticket.open branch.

/command incoming values
Interaction choice event.custom_id
if
else
Add role approved path
Reply denied path
Example #2 Route select menu values

Handle values selected from a Send select menu block. Choosing billing follows the billing branch; unmatched selections follow else when connected.

/command incoming values
Interaction choice event.value
if
else
Add role approved path
Reply denied path
Example #3 Route repeated grid buttons

Match a reusable custom-id pattern and expose the clicked coordinates. A click on board.cell:2:3 follows the board.cell route and creates {row}=2, {col}=3, {event.match.row}=2, and {event.match.col}=3.

/command incoming values
Interaction choice event.custom_id
if
else
Add role approved path
Reply denied path
action Send buttons action_send_buttons Creates or handles Discord components such as buttons, panels, and select menus. Use it when the workflow needs Discord components such as buttons, select menus, panel updates, or interaction responses.

Creates or handles Discord components such as buttons, panels, and select menus. Use it when the workflow needs Discord components such as buttons, select menus, panel updates, or interaction responses.

Properties

Title title Single-line text

Primary heading for embeds, panels, records, or created items.

Title URL url Single-line text

External URL used for web search, scraping, storage, or webhooks.

Description description Multi-line text

The longer body text shown in an embed, panel, record, or generated item.

Color color Single-line text

Discord color value, usually a hex color such as #f5a623.

Image URL image_url Single-line text

Image URL used for embeds, image inspection, or generated output.

Thumbnail URL thumbnail_url Single-line text

Single-line text

Fields JSON fields_json Multi-line text

Embed field definitions, including names, values, and inline layout.

Footer footer Single-line text

Small footer text shown at the bottom of an embed.

Footer icon URL footer_icon_url Single-line text

Single-line text

Buttons JSON buttons_json Multi-line text

Button definitions. Each button can become a clickable path in the workflow.

Target channel channel_source Selection

Where Sefrum should read the target channel from.

Types

current Use the channel where the command or event is running. channel_id Use the channel named or identified in Target channel value. variable Read the target channel from a workflow variable.
Target channel value channel_value Single-line text

The channel ID, name, or variable value used by the selected channel source.

Ephemeral ephemeral On/off

When enabled, only the user who triggered the interaction can see the response.

Store interaction as store_interaction_as Single-line text

Workflow variable name where this block stores a value for later steps.

Paths

button choice_*

One path per configured button.

continue out

Default path.

Usage examples

Example #1 Post a public support panel

Publish a reusable ticket panel to a selected support channel. Discord posts an embed panel with Open ticket and Billing buttons. Each button id can be routed by Interaction choice. Configuration: Title: Need help?.

/setup staff command
Send buttons Need help?
button
Interaction choice clicked option
Edit response panel state
Log event setup complete
Example #2 Private confirmation buttons

Show buttons only to the user running a sensitive action. Only that user sees Confirm and Cancel buttons. Configuration: Title: Confirm purge.

/setup staff command
Send buttons Confirm purge
button
Interaction choice clicked option
Edit response panel state
Log event setup complete
action Send select menu action_send_select_menu Creates or handles Discord components such as buttons, panels, and select menus. Use it when the workflow needs Discord components such as buttons, select menus, panel updates, or interaction responses.

Creates or handles Discord components such as buttons, panels, and select menus. Use it when the workflow needs Discord components such as buttons, select menus, panel updates, or interaction responses.

Properties

Title title Single-line text

Primary heading for embeds, panels, records, or created items.

Description description Multi-line text

The longer body text shown in an embed, panel, record, or generated item.

Placeholder placeholder Single-line text

Single-line text

Options JSON options_json Multi-line text

JSON configuration for this block. Variables can be inserted where the runtime supports templates.

Min values min_values Single-line text

Single-line text

Max values max_values Single-line text

Single-line text

Target channel channel_source Selection

Where Sefrum should read the target channel from.

Types

current Use the channel where the command or event is running. channel_id Use the channel named or identified in Target channel value. variable Read the target channel from a workflow variable.
Target channel value channel_value Single-line text

The channel ID, name, or variable value used by the selected channel source.

Ephemeral ephemeral On/off

When enabled, only the user who triggered the interaction can see the response.

Store selection as store_selection_as Single-line text

Workflow variable name where this block stores a value for later steps.

Paths

continue out

Next path.

Usage examples

Example #1 Topic picker menu

Ask the user to choose a support category from a select menu. Discord shows a menu; the chosen value is stored as {selected_topic}. Configuration: Title: Choose a topic.

/setup staff command
Send select menu Choose a topic
button
Interaction choice clicked option
Edit response panel state
Log event setup complete
action Show thinking action_defer_response Adds the Show thinking function to the workflow. Use it when the workflow needs Discord components such as buttons, select menus, panel updates, or interaction responses.

Adds the Show thinking function to the workflow. Use it when the workflow needs Discord components such as buttons, select menus, panel updates, or interaction responses.

Properties

Reply privately ephemeral On/off

When enabled, only the user who triggered the interaction can see the response.

Show typing state thinking On/off

On/off

Paths

continue out

Next path.

Usage examples

Example #1 Show thinking for a long action

Acknowledge an interaction before AI, API, or setup work takes longer than a moment. Discord shows the user that the bot is thinking while the workflow continues.

Interaction choice button click
Show thinking on
Edit response updated message
Disable buttons prevent repeats
Example #2 Public thinking state

Use a public acknowledgement when the eventual response should be visible to the channel. Discord keeps the interaction alive without making the response private.

Interaction choice button click
Show thinking off
Edit response updated message
Disable buttons prevent repeats
7 blocks Logic Control-flow blocks for if/else paths, switches, loops, error handling, and stopping execution.
logic And logic_and Controls how the flow splits, loops, combines, or calculates decisions. Use it when the workflow needs structure: branching, switching, looping, error handling, or a deliberate stop. Logic blocks usually sit between a trigger and one or more action blocks.

Controls how the flow splits, loops, combines, or calculates decisions. Use it when the workflow needs structure: branching, switching, looping, error handling, or a deliberate stop. Logic blocks usually sit between a trigger and one or more action blocks.

Properties

Left condition left_condition Single-line text

Single-line text

Right condition right_condition Single-line text

Single-line text

Show else branch enable_else On/off

Adds or keeps a fallback output path for unmatched or failed cases.

Paths

if if_true

Matched path.

else if_false

Fallback path.

Usage examples

Example #1 Require two checks

Continue only when both named checks passed earlier in the workflow. The if path runs only if has_role and cooldown_ready are both true.

/moderate incoming values
And has_role
if
else
Add role approved path
Reply denied path
logic For n times logic_for_times Controls how the flow splits, loops, combines, or calculates decisions. Use it when the workflow needs structure: branching, switching, looping, error handling, or a deliberate stop. Logic blocks usually sit between a trigger and one or more action blocks.

Controls how the flow splits, loops, combines, or calculates decisions. Use it when the workflow needs structure: branching, switching, looping, error handling, or a deliberate stop. Logic blocks usually sit between a trigger and one or more action blocks.

Properties

Count count Single-line text

Single-line text

Store index as store_index_as Single-line text

Workflow variable name where this block stores a value for later steps.

Delay between runs (ms) delay_ms Single-line text

Single-line text

Paths

loop loop

Repeated path.

done done

Finished path.

Usage examples

Example #1 Repeat a reminder three times

Run the loop path a fixed number of times with a delay between passes. The loop path runs 3 times and stores the current index as {reminder_index}.

/giveaway repeat count
For n times 3
loop
done
Send channel message one message per pass
Set variable loop finished
Reply finished message
logic If else logic_if_else Controls how the flow splits, loops, combines, or calculates decisions. Use it when the workflow needs structure: branching, switching, looping, error handling, or a deliberate stop. Logic blocks usually sit between a trigger and one or more action blocks.

Controls how the flow splits, loops, combines, or calculates decisions. Use it when the workflow needs structure: branching, switching, looping, error handling, or a deliberate stop. Logic blocks usually sit between a trigger and one or more action blocks.

Properties

Left value left_value Single-line text

Value used by the selected source or mode.

Operator operator Selection

Selection

Types

equals not_equals contains greater_than less_than
Right value right_value Single-line text

Value used by the selected source or mode.

Paths

if if_true

Matched path.

else if_false

Fallback path.

Usage examples

Example #1 Route high-priority tickets

Split the workflow based on a loaded or AI-generated value. High-priority tickets follow if; other tickets follow else.

/command incoming values
If else {ticket_ai.priority}
if
else
Add role approved path
Reply denied path
Example #2 Check for an urgent phrase

Use contains when the input is a longer sentence. Inputs containing urgent follow the if path.

/command incoming values
If else {message.content}
if
else
Add role approved path
Reply denied path
logic Or logic_or Controls how the flow splits, loops, combines, or calculates decisions. Use it when the workflow needs structure: branching, switching, looping, error handling, or a deliberate stop. Logic blocks usually sit between a trigger and one or more action blocks.

Controls how the flow splits, loops, combines, or calculates decisions. Use it when the workflow needs structure: branching, switching, looping, error handling, or a deliberate stop. Logic blocks usually sit between a trigger and one or more action blocks.

Properties

Left condition left_condition Single-line text

Single-line text

Right condition right_condition Single-line text

Single-line text

Show else branch enable_else On/off

Adds or keeps a fallback output path for unmatched or failed cases.

Paths

if if_true

Matched path.

else if_false

Fallback path.

Usage examples

Example #1 Allow either staff role

Continue when one of two previous checks passed. The if path runs if is_admin or is_moderator is true.

/moderate incoming values
Or is_admin
if
else
Add role approved path
Reply denied path
logic Stop flow logic_stop_flow Controls how the flow splits, loops, combines, or calculates decisions. Use it when the workflow needs structure: branching, switching, looping, error handling, or a deliberate stop. Logic blocks usually sit between a trigger and one or more action blocks.

Controls how the flow splits, loops, combines, or calculates decisions. Use it when the workflow needs structure: branching, switching, looping, error handling, or a deliberate stop. Logic blocks usually sit between a trigger and one or more action blocks.

Properties

Reason reason Single-line text

Single-line text

Mark as success mark_success On/off

On/off

Paths

continue out

Next path.

Usage examples

Example #1 Stop after validation fails

End the workflow intentionally so no later action blocks run. The workflow stops with reason Missing setup and is marked unsuccessful.

/setup staff command
If variable exists settings.panel_channel
if
else
Send buttons publish panel
Stop flow Missing setup
logic Switch value logic_switch Controls how the flow splits, loops, combines, or calculates decisions. Use it when the workflow needs structure: branching, switching, looping, error handling, or a deliberate stop. Logic blocks usually sit between a trigger and one or more action blocks.

Controls how the flow splits, loops, combines, or calculates decisions. Use it when the workflow needs structure: branching, switching, looping, error handling, or a deliberate stop. Logic blocks usually sit between a trigger and one or more action blocks.

Properties

Value source value_source Selection

Controls where this block reads the target value from.

Types

variable literal trigger_input
Variable variable_name Single-line text

Workflow variable name to read, write, compare, or update.

Case A case_a Single-line text

Single-line text

Case B case_b Single-line text

Single-line text

Case C case_c Single-line text

Single-line text

Paths

A case_a

Outcome path.

B case_b

Outcome path.

C case_c

Outcome path.

Else default

Outcome path.

Usage examples

Example #1 Route by selected topic

Create separate paths for a small list of known values. billing, technical, and moderation each get their own output path.

/route incoming values
Switch value variable
case
else
Assign workflow item matched department
Reply unknown option
Example #2 Route command input directly

Use trigger_input when the slash command text should decide the path. The user's input is compared to the configured cases.

/route incoming values
Switch value trigger_input
case
else
Assign workflow item matched department
Reply unknown option
logic Try / error logic_try_catch Controls how the flow splits, loops, combines, or calculates decisions. Use it when the workflow needs structure: branching, switching, looping, error handling, or a deliberate stop. Logic blocks usually sit between a trigger and one or more action blocks.

Controls how the flow splits, loops, combines, or calculates decisions. Use it when the workflow needs structure: branching, switching, looping, error handling, or a deliberate stop. Logic blocks usually sit between a trigger and one or more action blocks.

Properties

Store error as store_error_as Single-line text

Workflow variable name where this block stores a value for later steps.

Continue after error continue_on_error On/off

On/off

Paths

Try try

Outcome path.

Failed error

Request failed.

Done done

Outcome path.

Usage examples

Example #1 Catch API failures

Wrap risky follow-up blocks so errors can be handled cleanly. If a later block fails, the error is stored as {last_error} and the error path can reply or log.

/publish risky action
Try / error last_error
error
Reply publish complete
Audit embed error details
5 blocks Message Controls Blocks for reading, editing, deleting, pinning, and unpinning Discord messages.
action Delete messages action_delete_messages Reads, sends, edits, pins, deletes, or searches Discord messages. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Reads, sends, edits, pins, deletes, or searches Discord messages. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Channel channel_source Selection

Where Sefrum should read the target channel from.

Types

current Use the channel where the command or event is running. channel_id Use the channel named or identified in Target channel value. variable Read the target channel from a workflow variable.
Channel value channel_value Single-line text

The channel ID, name, or variable value used by the selected channel source.

Message IDs message_ids Multi-line text

Multi-line text

Count from latest count Single-line text

Single-line text

Reason reason Single-line text

Single-line text

Paths

continue out

Next path.

Usage examples

Example #1 Delete selected messages

Delete explicit message IDs gathered by a previous Get messages or moderation block. The listed messages are deleted from the current channel.

/purge message command
If permission allowed manage server
if
else
Delete messages current
Audit embed staff log
Reply permission denied
action Edit message action_edit_message Reads, sends, edits, pins, deletes, or searches Discord messages. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Reads, sends, edits, pins, deletes, or searches Discord messages. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Message message_source Selection

Where Sefrum should read the target message from.

Types

current Use the message attached to the current event or interaction. message_id Use the message ID entered in Message value. variable Read the message reference from a workflow variable.
Message value message_value Single-line text

Value used by the selected source or mode.

Channel value channel_value Single-line text

The channel ID, name, or variable value used by the selected channel source.

New content content Multi-line text

Discord message text. Variables can be inserted with braces.

Paths

continue out

Next path.

Usage examples

Example #1 Edit a stored announcement

Update a message sent earlier without posting a new one. The target message content becomes the configured text. Configuration: Content: Support hours are now 9 AM - 5 PM UTC..

/purge message command
If permission allowed manage server
if
else
Edit message Support hours are now 9 AM - 5 PM UTC.
Audit embed staff log
Reply permission denied
action Get messages action_get_messages Reads, sends, edits, pins, deletes, or searches Discord messages. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Reads, sends, edits, pins, deletes, or searches Discord messages. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Channel channel_source Selection

Where Sefrum should read the target channel from.

Types

current Use the channel where the command or event is running. channel_id Use the channel named or identified in Target channel value. variable Read the target channel from a workflow variable.
Channel value channel_value Single-line text

The channel ID, name, or variable value used by the selected channel source.

Limit limit Single-line text

Maximum number of items to return or process.

Before message ID before_message_id Single-line text

Single-line text

Store list as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

continue out

Next path.

Usage examples

Example #1 Fetch recent context

Read recent messages before summarizing or exporting a conversation. The latest 20 messages from support are stored as {recent_messages}. Configuration: Store as: recent_messages.

/purge message command
If permission allowed manage server
if
else
Get messages channel_id
Audit embed staff log
Reply permission denied
action Pin message action_pin_message Reads, sends, edits, pins, deletes, or searches Discord messages. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Reads, sends, edits, pins, deletes, or searches Discord messages. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Message message_source Selection

Where Sefrum should read the target message from.

Types

current Use the message attached to the current event or interaction. message_id Use the message ID entered in Message value. variable Read the message reference from a workflow variable.
Message value message_value Single-line text

Value used by the selected source or mode.

Channel value channel_value Single-line text

The channel ID, name, or variable value used by the selected channel source.

Reason reason Single-line text

Single-line text

Paths

continue out

Next path.

Usage examples

Example #1 Pin a setup panel

Pin a message that another block sent earlier. The message stored as {panel_message.id} is pinned.

/purge message command
If permission allowed manage server
if
else
Pin message variable
Audit embed staff log
Reply permission denied
action Unpin message action_unpin_message Reads, sends, edits, pins, deletes, or searches Discord messages. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Reads, sends, edits, pins, deletes, or searches Discord messages. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Message message_source Selection

Where Sefrum should read the target message from.

Types

current Use the message attached to the current event or interaction. message_id Use the message ID entered in Message value. variable Read the message reference from a workflow variable.
Message value message_value Single-line text

Value used by the selected source or mode.

Channel value channel_value Single-line text

The channel ID, name, or variable value used by the selected channel source.

Reason reason Single-line text

Single-line text

Paths

continue out

Next path.

Usage examples

Example #1 Unpin an old announcement

Remove an old pinned message after replacing it with a newer one. The stored announcement message is unpinned.

/purge message command
If permission allowed manage server
if
else
Unpin message variable
Audit embed staff log
Reply permission denied
4 blocks Operators Utility operators for numbers, lists, dates, sorting, and calculations.
utility Calculator action_calculator Adds the Calculator function to the workflow. Use it to prepare values for later blocks. Utility output is usually stored in a variable and then inserted into a reply, embed, condition, record, or Discord action.

Adds the Calculator function to the workflow. Use it to prepare values for later blocks. Utility output is usually stored in a variable and then inserted into a reply, embed, condition, record, or Discord action.

Properties

Left value left_value Single-line text

Value used by the selected source or mode.

Operator operator Selection

Selection

Types

+ - * / % power min max
Right value right_value Single-line text

Value used by the selected source or mode.

Store as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

continue out

Next path.

Usage examples

Example #1 Add reward credits

Calculate a new balance before saving it. {new_balance} stores the sum of {balance} and 25. Configuration: Store as: new_balance.

/report input values
Calculator {balance}
Format text human-readable output
Reply send result
Example #2 Find the larger score

Use max when two values compete and the workflow needs the higher one. {best_score} stores the larger of {score_a} and {score_b}. Configuration: Store as: best_score.

/report input values
Calculator {score_a}
Format text human-readable output
Reply send result
utility Date / time action_date_time Adds the Date / time function to the workflow. Use it to prepare values for later blocks. Utility output is usually stored in a variable and then inserted into a reply, embed, condition, record, or Discord action.

Adds the Date / time function to the workflow. Use it to prepare values for later blocks. Utility output is usually stored in a variable and then inserted into a reply, embed, condition, record, or Discord action.

Properties

Operation operation Selection

The action this block should perform.

Types

now add subtract diff format
Base value base_value Single-line text

Value used by the selected source or mode.

Amount amount Single-line text

Single-line text

Unit unit Selection

Selection

Types

seconds minutes hours days weeks
Format format Single-line text

Single-line text

Store as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

continue out

Next path.

Usage examples

Example #1 Store the current time

Capture when a ticket was opened. The current date/time is stored as {opened_at}. Configuration: Operation: now; Store as: opened_at.

/report input values
Date / time now
Format text human-readable output
Reply send result
Example #2 Add seven days

Calculate a deadline from a stored time. The due date is stored as {due_at}. Configuration: Operation: add; Store as: due_at.

/report input values
Date / time add
Format text human-readable output
Reply send result
utility Random number action_random_number Adds the Random number function to the workflow. Use it to prepare values for later blocks. Utility output is usually stored in a variable and then inserted into a reply, embed, condition, record, or Discord action.

Adds the Random number function to the workflow. Use it to prepare values for later blocks. Utility output is usually stored in a variable and then inserted into a reply, embed, condition, record, or Discord action.

Properties

Minimum minimum Single-line text

Single-line text

Maximum maximum Single-line text

Single-line text

Store as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

continue out

Next path.

Usage examples

Example #1 Roll a reward amount

Generate a number for simple games, raffles, or economy rewards. A number from 10 to 100 is stored as {reward_amount}. Configuration: Store as: reward_amount.

/report input values
Random number 10
Format text human-readable output
Reply send result
utility Sort list action_sort_list Adds the Sort list function to the workflow. Use it to prepare values for later blocks. Utility output is usually stored in a variable and then inserted into a reply, embed, condition, record, or Discord action.

Adds the Sort list function to the workflow. Use it to prepare values for later blocks. Utility output is usually stored in a variable and then inserted into a reply, embed, condition, record, or Discord action.

Properties

List variable list_variable Single-line text

Single-line text

Direction direction Selection

Selection

Types

ascending descending
Value type value_type Selection

Selection

Types

text number datetime
Store as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

continue out

Next path.

Usage examples

Example #1 Sort leaderboard scores

Order a list variable numerically from highest to lowest. The sorted list is stored as {sorted_scores}. Configuration: Store as: sorted_scores.

/report input values
Sort list scores
Format text human-readable output
Reply send result
Example #2 Sort names alphabetically

Use text sorting when the values are names or labels. Names are stored from A to Z as {sorted_names}. Configuration: Store as: sorted_names.

/report input values
Sort list member_names
Format text human-readable output
Reply send result
6 blocks Role Controls Blocks that create, find, edit, delete, and apply Discord role changes.
action Apply muted role permissions action_apply_muted_role_overwrites Reads or changes Discord role state for users and moderation workflows. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Reads or changes Discord role state for users and moderation workflows. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Role role_source Selection

Where Sefrum should read the target role from.

Types

role_id Look up the role by Discord role ID. role_name Look up the role by visible server role name. variable Read the role ID or name from a workflow variable.
Role value role_value Single-line text

Value used by the selected source or mode.

Reason reason Single-line text

Single-line text

Store result as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

continue out

Next path.

Usage examples

Example #1 Apply muted role restrictions

Update channel permissions so the Muted role cannot send messages. Muted role overwrites are applied across channels and {muted_overwrites} records the result. Configuration: Store as: muted_overwrites.

/mute moderation command
If member has role staff role
if
else
Apply muted role permissions role_name
Audit embed staff log
Reply permission denied
action Create role action_create_role Reads or changes Discord role state for users and moderation workflows. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Reads or changes Discord role state for users and moderation workflows. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Name template name_template Single-line text

Single-line text

Color color Single-line text

Discord color value, usually a hex color such as #f5a623.

Hoist hoist On/off

On/off

Mentionable mentionable On/off

On/off

Reason reason Single-line text

Single-line text

Store role as store_role_as Single-line text

Workflow variable name where this block stores a value for later steps.

Paths

continue out

Next path.

Usage examples

Example #1 Create a muted role

Create the role a moderation setup workflow will later apply. A role named Muted is created and stored as {muted_role}.

/mute moderation command
If member has role staff role
if
else
Create role Muted
Audit embed staff log
Reply permission denied
action Delete role action_delete_role Reads or changes Discord role state for users and moderation workflows. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Reads or changes Discord role state for users and moderation workflows. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Role role_source Selection

Where Sefrum should read the target role from.

Types

role_id Look up the role by Discord role ID. role_name Look up the role by visible server role name. variable Read the role ID or name from a workflow variable.
Role value role_value Single-line text

Value used by the selected source or mode.

Reason reason Single-line text

Single-line text

Paths

continue out

Next path.

Usage examples

Example #1 Remove an obsolete role

Delete a role that an old setup no longer uses. The Old Muted role is removed from the server.

/mute moderation command
If member has role staff role
if
else
Delete role role_name
Audit embed staff log
Reply permission denied
action Edit role action_edit_role Reads or changes Discord role state for users and moderation workflows. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Reads or changes Discord role state for users and moderation workflows. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Role role_source Selection

Where Sefrum should read the target role from.

Types

role_id Look up the role by Discord role ID. role_name Look up the role by visible server role name. variable Read the role ID or name from a workflow variable.
Role value role_value Single-line text

Value used by the selected source or mode.

Name template name_template Single-line text

Single-line text

Color color Single-line text

Discord color value, usually a hex color such as #f5a623.

Hoist hoist On/off

On/off

Mentionable mentionable On/off

On/off

Reason reason Single-line text

Single-line text

Paths

continue out

Next path.

Usage examples

Example #1 Rename a temporary role

Update role display settings after setup changes. The target role is renamed Verified Member and recolored.

/mute moderation command
If member has role staff role
if
else
Edit role Verified Member
Audit embed staff log
Reply permission denied
action Find role action_find_role Reads or changes Discord role state for users and moderation workflows. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Reads or changes Discord role state for users and moderation workflows. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Source source_mode Selection

Controls where this block reads the target value from.

Types

role_id role_name variable Read the value from a workflow variable.
ID, name, or variable value Single-line text

Main value this block reads, stores, compares, or sends.

Store as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

Found found

Outcome path.

Missing missing

Outcome path.

Usage examples

Example #1 Find a role by name

Resolve a role before editing or assigning it. The Moderator role is stored as {moderator_role}. Configuration: Store as: moderator_role.

/mute moderation command
If member has role staff role
if
else
Find role Moderator
Audit embed staff log
Reply permission denied
action Modify member roles action_modify_member_roles Reads or changes Discord role state for users and moderation workflows. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Reads or changes Discord role state for users and moderation workflows. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Operation operation Selection

The action this block should perform.

Types

add remove toggle replace
Member member_source Selection

Controls where this block reads the target value from.

Types

trigger_user user_id variable form_field
Member value member_value Single-line text

Value used by the selected source or mode.

Role IDs or names roles Multi-line text

Role ID, role name, or variable used by this block.

Reason reason Single-line text

Single-line text

Paths

continue out

Next path.

Usage examples

Example #1 Add onboarding roles

Give a member multiple roles after onboarding completes. Member and Verified are added to the triggering user. Configuration: Operation: add.

/mute moderation command
If member has role staff role
if
else
Modify member roles add
Audit embed staff log
Reply permission denied
Example #2 Replace role set

Use replace when the member should end with exactly the listed roles. The member's workflow-managed roles are replaced by the configured list. Configuration: Operation: replace.

/mute moderation command
If member has role staff role
if
else
Modify member roles replace
Audit embed staff log
Reply permission denied
10 blocks Utilities Small helper blocks for variables, lists, prompts, waiting, parsing, random choices, and formatting.
action Add to list action_add_list_item Adds the Add to list function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Adds the Add to list function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

List variable list_name Single-line text

Single-line text

Item source source_mode Selection

Controls where this block reads the target value from.

Types

variable Read the value from a workflow variable. literal Use the value exactly as typed.
Variable variable_name Single-line text

Workflow variable name to read, write, compare, or update.

Value value Single-line text

Main value this block reads, stores, compares, or sends.

Skip duplicates unique_only On/off

On/off

Paths

continue out

Next path.

Usage examples

Example #1 Add a selected topic

Append a value to a workflow list. {selected_topic} is added to allowed_topics if it is not already present.

/queue list value
Add to list allowed_topics
If variable equals prepared value
Reply uses stored value
utility Format text action_format_text Adds the Format text function to the workflow. Use it to prepare values for later blocks. Utility output is usually stored in a variable and then inserted into a reply, embed, condition, record, or Discord action.

Adds the Format text function to the workflow. Use it to prepare values for later blocks. Utility output is usually stored in a variable and then inserted into a reply, embed, condition, record, or Discord action.

Properties

Template template Multi-line text

Multi-line text

Store as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

continue out

Next path.

Usage examples

Example #1 Create a ticket summary line

Combine variables into one reusable text value. {ticket_line} becomes a formatted line ready for embeds or logs. Configuration: Store as: ticket_line.

/command raw value
Format text Ticket #{ticket.id}: {ticket.status} - {ticket_ai.summary}
If variable equals prepared value
Reply uses stored value
utility Parse duration action_parse_duration Adds the Parse duration function to the workflow. Use it to prepare values for later blocks. Utility output is usually stored in a variable and then inserted into a reply, embed, condition, record, or Discord action.

Adds the Parse duration function to the workflow. Use it to prepare values for later blocks. Utility output is usually stored in a variable and then inserted into a reply, embed, condition, record, or Discord action.

Properties

Value value Single-line text

Main value this block reads, stores, compares, or sends.

Store seconds as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

continue out

Next path.

Usage examples

Example #1 Parse a timeout duration

Convert user-friendly duration text into a value later moderation blocks can use. {timeout_duration} stores the parsed duration from 10m. Configuration: Store as: timeout_duration.

/mute time text
Parse duration 10m
If variable exists valid parsed value
Reply uses stored value
utility Parse number action_parse_number Adds the Parse number function to the workflow. Use it to prepare values for later blocks. Utility output is usually stored in a variable and then inserted into a reply, embed, condition, record, or Discord action.

Adds the Parse number function to the workflow. Use it to prepare values for later blocks. Utility output is usually stored in a variable and then inserted into a reply, embed, condition, record, or Discord action.

Properties

Value value Single-line text

Main value this block reads, stores, compares, or sends.

Default value default_value Single-line text

Value used by the selected source or mode.

Integer integer On/off

On/off

Store as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

continue out

Next path.

Usage examples

Example #1 Parse a purge amount

Convert text input into a number before using it in message deletion. {purge_count} becomes an integer, or 10 if parsing fails. Configuration: Store as: purge_count.

/command raw value
Parse number {command.count}
If variable exists valid parsed value
Reply uses stored value
action Prompt user action_prompt_user Adds the Prompt user function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Adds the Prompt user function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Prompt prompt Multi-line text

Prompt or instruction text sent to the user, AI model, or parser.

Save response as save_as Single-line text

Workflow variable name where this block stores a value for later steps.

Timeout (seconds) timeout_seconds Single-line text

How long to wait before the prompt or form times out.

Required required On/off

On/off

Paths

continue out

Next path.

Usage examples

Example #1 Ask for a missing reason

Prompt the user when a command did not include required context. The user's response is stored as {reason}. Configuration: Prompt: Why should this ticket be closed?.

/confirm asks for input
Prompt user Why should this ticket be closed?
If variable equals prepared value
Reply uses stored value
action Random choice action_random_choice Adds the Random choice function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Adds the Random choice function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Choices choices_text Multi-line text

Multi-line text

Store result as store_as Single-line text

Workflow variable name where this block stores its result.

Paths

continue out

Next path.

Usage examples

Example #1 Pick a random greeting

Choose one line from a list of options. One greeting is stored as {greeting}. Configuration: Store as: greeting.

/command raw value
Random choice Welcome! Glad you're here! Hey {user.username}!
Reply with embed selected option
Reply uses stored value
action Remove from list action_remove_list_item Adds the Remove from list function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Adds the Remove from list function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

List variable list_name Single-line text

Single-line text

Item source source_mode Selection

Controls where this block reads the target value from.

Types

variable Read the value from a workflow variable. literal Use the value exactly as typed.
Variable variable_name Single-line text

Workflow variable name to read, write, compare, or update.

Value value Single-line text

Main value this block reads, stores, compares, or sends.

Case sensitive case_sensitive On/off

On/off

Paths

continue out

Next path.

Usage examples

Example #1 Remove a topic

Remove a selected value from a list variable. The chosen topic is removed from allowed_topics.

/queue list value
Remove from list allowed_topics
If variable equals prepared value
Reply uses stored value
action Set list variable action_set_list_variable Adds the Set list variable function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Adds the Set list variable function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

List variable variable_name Single-line text

Workflow variable name to read, write, compare, or update.

Items items_text Multi-line text

Multi-line text

Delimiter source_delimiter Selection

Selection

Types

newline comma
Lowercase items normalize_case On/off

On/off

Paths

continue out

Next path.

Usage examples

Example #1 Create a newline list

Turn one text box into a list variable. allowed_topics becomes a list containing billing, technical, and moderation.

/queue list value
Set list variable allowed_topics
If variable equals prepared value
Reply uses stored value
Example #2 Create a comma list

Use comma mode when values are easier to type inline. allowed_roles becomes a list split from the comma-separated text.

/queue list value
Set list variable allowed_roles
If variable equals prepared value
Reply uses stored value
action Set variable action_set_variable Adds the Set variable function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Adds the Set variable function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Variable variable_name Single-line text

Workflow variable name to read, write, compare, or update.

Source source_mode Selection

Controls where this block reads the target value from.

Types

literal Use the value exactly as typed. variable Read the value from a workflow variable. trigger_input
Value value Single-line text

Main value this block reads, stores, compares, or sends.

Source variable source_variable Single-line text

Single-line text

Paths

continue out

Next path.

Usage examples

Example #1 Set a literal status

Create a workflow variable with a fixed value. {ticket_status} becomes open.

/command raw value
Set variable open
If variable equals prepared value
Reply uses stored value
Example #2 Copy command input

Store the command input under a clearer name for later blocks. {topic} receives the slash command input.

/command raw value
Set variable topic
If variable equals prepared value
Reply uses stored value
action Wait action_wait Adds the Wait function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Adds the Wait function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Duration (ms) duration_ms Single-line text

How long the workflow should wait, in milliseconds.

Paths

continue out

Next path.

Usage examples

Example #1 Delay before a follow-up

Pause the workflow briefly before sending or editing another message. The next connected block runs one second later.

/command raw value
Wait 1000
If variable equals prepared value
Reply uses stored value
6 blocks Workflow Workflow-item blocks for managed tasks, panels, status changes, assignments, and conversation exports.
action Assign workflow item action_assign_work_item Adds the Assign workflow item function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Adds the Assign workflow item function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Item item_source Selection

Controls where this block reads the target value from.

Types

current_channel record_id variable
Assignee assignee_source Selection

Controls where this block reads the target value from.

Types

trigger_user user_id variable role_queue
Assignee value assignee_value Single-line text

Value used by the selected source or mode.

Notify assignee notify On/off

On/off

Paths

continue out

Next path.

Usage examples

Example #1 Assign a ticket to the user

Assign the current ticket record to the moderator who clicked Claim. The work item is assigned to {user.id} and the workflow can notify the channel.

/ticket workflow command
Assign workflow item current_channel
Set workflow status update item
Interaction panel staff controls
Example #2 Assign to a role queue

Route work to a queue instead of one person. The item is assigned to the Support queue.

/ticket workflow command
Assign workflow item record_id
Set workflow status update item
Interaction panel staff controls
action Create workflow item action_create_work_item Adds the Create workflow item function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Adds the Create workflow item function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Collection collection Single-line text

The record collection or table name used for saved workflow data.

Item type item_type Single-line text

Single-line text

Title source title_source Selection

Controls where this block reads the target value from.

Types

literal variable form_field
Title title Single-line text

Primary heading for embeds, panels, records, or created items.

Store item as store_item_as Single-line text

Workflow variable name where this block stores a value for later steps.

Paths

continue out

Next path.

Usage examples

Example #1 Create a ticket work item

Create a managed work item after a ticket form is submitted. A support work item is created and stored as {ticket_item}. Configuration: Title: subject.

/ticket workflow command
Create workflow item subject
Set workflow status update item
Interaction panel staff controls
action Export conversation action_export_conversation Adds the Export conversation function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Adds the Export conversation function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Channel channel_source Selection

Where Sefrum should read the target channel from.

Types

current Use the channel where the command or event is running. channel_id Use the channel named or identified in Target channel value. variable Read the target channel from a workflow variable.
Channel value channel_value Single-line text

The channel ID, name, or variable value used by the selected channel source.

Format format Selection

Selection

Types

html text json
Destination destination Selection

Selection

Types

channel Ask for the form response in the current or configured channel. dm Send the form privately in direct messages when the user should not answer in public. storage webhook
Store URL as store_url_as Single-line text

Workflow variable name where this block stores a value for later steps.

Paths

continue out

Next path.

Usage examples

Example #1 Export a ticket transcript

Save a readable HTML copy before closing a ticket channel. The export URL is stored as {transcript_url}.

/ticket workflow command
Export conversation current
Set workflow status update item
Interaction panel staff controls
Example #2 Send transcript to a channel

Post a text transcript directly into a staff channel. A transcript is sent to the configured destination channel and its URL is stored.

/ticket workflow command
Export conversation channel_id
Set workflow status update item
Interaction panel staff controls
condition If workflow status condition_workflow_status Branches the workflow based on record, record value, status. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Branches the workflow based on record, record value, status. Use it before actions that should only happen for matching users, messages, roles, permissions, records, or values. Connect the passing path to the main behavior and the fallback path to a denial, error, or alternate response.

Properties

Record record_source Selection

Controls where this block reads the target value from.

Types

current_channel record_id variable
Record value record_value Single-line text

Value used by the selected source or mode.

Status status Single-line text

Single-line text

Show else branch enable_else On/off

Adds or keeps a fallback output path for unmatched or failed cases.

Paths

If if_true

Matched path.

Else if_false

Fallback path.

Usage examples

Example #1 Only close open tickets

Check the managed work item state before running a close workflow. Open tickets follow if. Tickets already resolved follow else.

/command incoming values
If workflow status current_channel
if
else
Add role approved path
Reply denied path
action Interaction panel action_send_interaction_panel Creates or handles Discord components such as buttons, panels, and select menus. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Creates or handles Discord components such as buttons, panels, and select menus. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Channel ID channel_id Single-line text

Discord channel ID, channel name, or variable depending on the source setting.

Panel title title Single-line text

Primary heading for embeds, panels, records, or created items.

Description description Multi-line text

The longer body text shown in an embed, panel, record, or generated item.

Controls JSON controls_json Multi-line text

Panel control definitions, usually buttons that users can click.

Store interaction as store_interaction_as Single-line text

Workflow variable name where this block stores a value for later steps.

Paths

button choice_*

One path per configured button.

continue out

Default path.

Usage examples

Example #1 Send a managed work panel

Post a simple panel with workflow controls into a staff channel. The panel message is stored as {work_panel}; button ids from controls_json can be handled later. Configuration: Title: Ticket queue.

/ticket workflow command
Interaction panel Ticket queue
Set workflow status update item
Interaction panel staff controls
action Set workflow status action_set_workflow_status Adds the Set workflow status function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Adds the Set workflow status function to the workflow. Use it after a trigger, condition, or logic block when the workflow needs to do something in Discord or save data for later.

Properties

Item item_source Selection

Controls where this block reads the target value from.

Types

current_channel record_id variable
Status status Single-line text

Single-line text

Note note Multi-line text

Multi-line text

Notify channel ID notify_channel_id Single-line text

Channel ID, channel name, or variable used by this block.

Paths

continue out

Next path.

Usage examples

Example #1 Mark a ticket resolved

Update managed item status after staff closes a case. The current channel's workflow item becomes resolved and a note is saved.

/ticket workflow command
Set workflow status current_channel
Set workflow status update item
Interaction panel staff controls