bleh
Add to Discord
HomeFeaturesCommandsServersDocsConfigStatus Add to Discord

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.