Template variables

Dynamic placeholders for visual commands and events.

Template variables insert dynamic content into visual command and event responses. Wrap them in curly braces.

User & server

VariableDescription
{user}@mention the triggering user
{user.name}Username (plain text)
{user.id}Discord user ID
{server}Server name
{server.members}Member count
{channel}Current channel name
{channel.id}Current channel ID

Bot

VariableDescription
{bot.name}Bot username
{bot.prefix}Configured prefix (e.g. !)
{bot.latency}WebSocket ping in ms
{bot.uptime}Human-readable uptime

Input & settings

VariableDescription
{option:name}Value of a slash command option
{setting:key}Per-guild setting value
{store:key}Value loaded by a Data node or produced by an earlier node in this flow
{var:key}Alternate reference to a value in the current flow

Utilities

VariableDescription
{random:a,b,c}Random pick from two or more non-empty comma-separated choices
{count:members}Server member count
{timestamp}Current Unix timestamp
{timestamp:iso}Current time as ISO 8601

Event variables

The variable picker shows values for your selected event. These examples are available only in the corresponding context:

ContextExamples
Member joined/left{member.id}, {member.username}, {member}, {guild.name}
Member joined{member.displayName}, {guild.memberCount}
Message sent{message.content}, {message.author.id}, {message.channel.id}, {message.id}
Message deleted{message.id}, {message.channel.id}; content and author may be unavailable
Reaction added/removed{reaction.emoji}, {user.id}, {message.id}
Voice update{member.id}, {oldChannel.id}, {newChannel.id}

For a voice join, the old channel can be empty; for a leave, the new channel can be empty. Use the variable picker rather than borrowing a variable from a different event.

Component and node outputs

SourceExample
Select Menu{store:selected.0} for the first selected value
AI Response{store:ai_reply}
Get User Info saved as profile{store:profile.display_name}, {store:profile.avatar_url}
Generate Image Card{store:card.image}
Adjust AutoMod Infractions{store:automod_infractions}

Load persistent values before reading them, and connect output-producing nodes before the nodes that use them. A missing current-flow value is empty. A button click starts a new flow, so reload any saved values it needs.

Templates inside modules

Module settings can have their own placeholders. Welcome Messages uses {username} and {memberCount}, while a member-join graph uses {member.username} and {guild.memberCount}. Image Cards has its own design placeholders too. Follow the individual module guide for those fields.

Troubleshooting

Use template variables in text fields and supported ID inputs. They are placeholders, not expressions: calculations belong in Math nodes and comparisons belong in If / Else nodes. If text remains unchanged or becomes blank, check the variable spelling, selected event, declared options, and preceding nodes.

Commands created through Codex are checked before saving. Unknown variables, option variables that do not match a declared command option, malformed random lists, and setting variables that do not exist on the bot are rejected with an error Codex can correct.