Variables
Variables work anywhere text is rendered: embeds, welcome and leave messages,
boost messages, invoke messages and the dashboard's embed sender. Run
,variables in Discord for the same list, or ,variables test <text>
to see one rendered with real values.
Unknown variables are left exactly as typed, so a typo stays visible instead of silently rendering as empty.
User
| Variable | Renders |
|---|---|
{user} |
mentions the member |
{user.name} |
username |
{user.display_name} |
display name |
{user.id} |
user id |
{user.mention} |
mentions the member |
{user.tag} |
username |
{user.nickname} |
nickname in this server |
{user.avatar} |
avatar url |
{user.display_avatar} |
avatar url |
{user.guild_avatar} |
server avatar url |
{user.created_at} |
account age, relative |
{user.created_at_timestamp} |
account creation, unix |
{user.joined_at} |
join date, relative |
{user.joined_at_timestamp} |
join date, unix |
{user.bot} |
Yes / No |
{user.boost} |
Yes / No |
{user.boost_since} |
boost date |
{user.boost_since_timestamp} |
boost date, unix |
{user.color} |
top role colour |
{user.top_role} |
highest role |
{user.role_list} |
role names |
{user.role_text_list} |
role mentions |
{user.join_position} |
join position |
{user.join_position_suffix} |
join position with suffix |
{accountage} |
how old the account is |
Server
| Variable | Renders |
|---|---|
{guild.name} |
server name |
{guild.id} |
server id |
{guild.count} |
member count |
{guild.owner_id} |
owner id |
{guild.owner} |
mentions the owner |
{guild.icon} |
icon url |
{guild.banner} |
banner url |
{guild.splash} |
splash url |
{guild.discovery} |
discovery splash url |
{guild.created_at} |
creation, unix |
{guild.created_at_relative} |
creation, relative |
{guild.region} |
no longer reported by Discord |
{guild.shard} |
shard id |
{guild.emoji_count} |
custom emoji count |
{guild.role_count} |
role count |
{guild.boost_count} |
boost count |
{guild.boost_tier} |
boost tier |
{guild.preferred_locale} |
locale |
{guild.max_members} |
member cap |
{guild.max_presences} |
presence cap |
{guild.afk_timeout} |
afk timeout, seconds |
{guild.afk_channel} |
afk channel |
{guild.channels} |
channel names |
{guild.channels_count} |
channel count |
{guild.text_channels} |
text channel names |
{guild.text_channels_count} |
text channel count |
{guild.voice_channels} |
voice channel names |
{guild.voice_channels_count} |
voice channel count |
{guild.category_channels} |
category names |
{guild.category_channels_count} |
category count |
Channel
| Variable | Renders |
|---|---|
{channel.name} |
channel name |
{channel.id} |
channel id |
{channel.mention} |
mentions the channel |
{channel.type} |
channel type |
{channel.position} |
position in the category |
{channel.topic} |
channel topic |
{channel.slowmode_delay} |
slowmode, seconds |
{channel.category_id} |
parent category id |
{channel.category_name} |
parent category name |
Target
| Variable | Renders |
|---|---|
{target_user.id} |
the user being acted on |
{target_user.name} |
their username |
{target_user.mention} |
mentions them |
{target_user.avatar} |
their avatar url |
Tracking
| Variable | Renders |
|---|---|
{inviter} |
who invited the member |
{inviter.name} |
inviter's name |
{invites} |
how many the inviter brought in |
Bot
| Variable | Renders |
|---|---|
, |
the command prefix |
{brand} |
the bot's name |
{site} |
website url |
{support} |
support server url |
{emoji:key} |
an emoji from the bleh pack |
Emoji
{emoji:key} renders one of the 44 custom emojis in the pack:
{emoji:owner} · {emoji:helper} · {emoji:mod} · {emoji:channel_stage} · {emoji:channel_forum} · {emoji:arrow_right} · {emoji:discord} · {emoji:trashcan} · {emoji:developer} · {emoji:python} · {emoji:nuke} · {emoji:mute} · {emoji:plus} · {emoji:unlock} · {emoji:unmute} · {emoji:lock} · {emoji:minus} · {emoji:info} · {emoji:final_pageRight} · {emoji:links} · {emoji:final_pageLeft} · {emoji:giveaway} · {emoji:arrow_left} · {emoji:ghost} · {emoji:boost} · {emoji:rename} · {emoji:deny} · {emoji:status_medium} · {emoji:settings} · {emoji:slashCommand} · {emoji:search} · {emoji:status_good} · {emoji:owner2} · {emoji:status_bad} · {emoji:unghost} · {emoji:soundcloud} · {emoji:stats} · {emoji:warning} · {emoji:spam} · {emoji:approve} · {emoji:time} · {emoji:voice} · {emoji:sob_angry_cry} · {emoji:fm}
How a panel picks its icon
A panel does not have to ask for an emoji: the heading is read and matched
against the pack (# Access Denied gets lock, # Booster Roles gets
Boost, # Queue Cleared gets soundcloud, # Not Found gets search),
and a heading that says nothing useful falls back to the command's own
category. Two rules keep that predictable:
- a reply that already carries an emoji is left alone, so a call site that
chose one by hand – or a heading that opens with
{emoji:…}– always wins; - nothing is added where it cannot render. A bundled tag is invisible outside the guild that owns the pack, so an icon is only added when it resolves through an application emoji, through the server's own emoji, or inside the pack guild itself.
Status lines written with ASCII stand-ins are translated while the panel is
drawn, so # [i] Disabled renders as the info emoji, # [x] Rejected as
deny, and a # ! Watch out or # X Blacklisted heading as warning and
deny.
Overriding
A reply that wants a different icon than its heading suggests can name one: an
emoji key in the panel options, or on the command itself, which every panel
that command draws then uses.
Making the pack render everywhere
Application emojis belong to the bot application rather than a server, so they
render wherever the bot posts. Upload the pack once with
npm run register-emojis; the ids are cached in database/app-emojis.json,
which the bot reads at startup.