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
| Variable | Description |
|---|---|
{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
| Variable | Description |
|---|---|
{bot.name} | Bot username |
{bot.prefix} | Configured prefix (e.g. !) |
{bot.latency} | WebSocket ping in ms |
{bot.uptime} | Human-readable uptime |
Input & settings
| Variable | Description |
|---|---|
{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
| Variable | Description |
|---|---|
{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:
| Context | Examples |
|---|---|
| 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
| Source | Example |
|---|---|
| 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.