{object.property}. When the script runs, it’s swapped for the real value.
If a variable doesn’t exist in the current context, it’s left in the output as literal text. Seeing
{user.rank} in your message means that variable isn’t available there — not that it’s spelled wrong.Member
{user} on its own renders as a mention.
Server
Aliases:
guild, server, sv, g, s. {server.name} works.
Channel
Aliases:
channel, ch, c.
Context-specific variables
Levels
Levels
Available in
!level message:Moderation
Moderation
Available in
!invoke responses, which override what moderation commands reply with:!invoke variables lists them in Discord.Tickets
Tickets
Available in ticket option messages:
{case}, {panel}, {option}, {creator}, {claimer}, {reason}, plus {user} for whoever triggered the action.Vanity and tag roles
Vanity and tag roles
In
!vanity message and !tag message, {user} is the member who was awarded a role and {role} is the role they got.Counter channels
Counter channels
Counter channel names use a different, flatter variable set — no
user. or guild. prefix. {members}, {boosters}, {online}, {messages_today}, {voice_week} and so on. See Counters for the full list, or run !counter variables.VoiceMaster
VoiceMaster
!voicemaster default name accepts {user.name}, and defaults to something like {user.name}'s channel.Timestamps
Any date variable renders as a raw Unix timestamp, which means you can drop it straight into Discord’s timestamp markdown:
Add
.iso to get an ISO 8601 string instead — {user.created_at.iso}.
Finding what’s available
Most modules have avariables subcommand that lists exactly what that context supports:
