Skip to main content
Variables are placeholders like {user.mention} that Bloom replaces with real values when a message is sent. The set you can use depends on the feature you are configuring, because each message type is rendered by its own part of Bloom. This page lists the tokens for every message type that supports them.
You can browse these in your server with the variables command (aliases vars, placeholders). It shows the same lists with a dropdown to switch between message types. The general embed preview commands on the Embed syntax page render text exactly as written and do not replace variables.
The same token can mean different things in different message types. {user} is a member’s display name in a welcome message, but a mention in a birthday or jail message. Use the tokens listed for the feature you are configuring.

Welcome messages

Configured with the welcome command. Write these anywhere in the message: the title, description, fields, footer, author, or a {message: ...} block.

Member

Server

Join details and date

Booster messages

Configured with the booster command. Booster messages support every welcome variable above, plus the boost tokens below.

Level up messages

Configured on the Leveling page, where the full list lives. Level up messages use their own tokens. Level up messages also support a conditional && section for role rewards, where {role.name} and {role.mention} refer to a role earned at that level. See the leveling page for how it works.

Jail messages

Configured with the jailmessage command. A jail message is plain text sent to a member when they are jailed, up to 500 characters. It supports three tokens.
Default jail message
In a jail message, each token is replaced only once, so use each of {user}, {reason}, and {duration} a single time.

Birthday announcements

Configured with birthday settings message. The text is sent as a line above the birthday embed.

Autoresponder responses

Configured with the autoresponder command. These are replaced in the response text when a trigger fires.

Last.fm custom embeds

A separate set of tokens used in the customembed command to build a custom now playing embed, written in the $e{...} format. They draw on your Last.fm account and the current track, so they are unrelated to the tokens above.

Last.fm user and Discord author

Track

Album

Artist

Ratings, time, and misc

Last.fm custom embeds do not send text outside the embed. A {message: ...} block is removed rather than posted, so a now playing embed cannot ping members. This is different from welcome and booster messages, where {message: ...} does send a line above the embed.

When a value is missing

A variable that has no value is replaced with empty text rather than left as {...}. This happens when:
  • The member has no nickname ({user.nickname}), or the server has no description ({guild.description}).
  • A join-only token is used outside a real join. !welcome test renders with your own account and no join context, so {member.joined} and a few member details can appear blank in the preview but fill in on an actual join.
  • A Last.fm field has no data for the current track. Artist metadata shows Unknown when it is unavailable.
Write your message so it still reads well when an optional value is empty.

Welcome messages

Where the welcome variables are used.

Leveling

The full level up variable list and the && role condition.

Embed syntax

The $e{...} format these variables are written inside.