Skip to main content

Arguments and variables

Inject user input, command metadata, moderation and economy data, and reshape text.

Argument placeholders

Reference what the invoker typed:
word 1 is “alpha”, the rest is “beta gamma” (3 words total)

Fallback syntax

If key resolves to empty or missing, the fallback text renders instead.
Fallbacks only work for values in the command’s local context: declared arguments, arg.* / args.*, command.*, moderator.*, economy.* / econ.*, and target.economy.* / target.econ.*. Global placeholders like {user.name} and {guild.name} ignore the |fallback part.

Command metadata


Auto-detected target

If the input contains a user mention, the first one is resolved as the target and unlocks the {target.*} family — {target.name}, {target.mention}, {target.id}, {target.avatar}, and so on.
Only a real <@id> mention sets the target. A raw user ID or a username in the arguments does not.

Moderator and punishment data

{moderator.*} describes the person running the command: {moderator.mention}, {moderator.id}, {moderator.name}, {moderator.display_name}, {moderator.tag}, {moderator.avatar}, {moderator.bot}, {moderator.created_at}. {punishment.*} describes the most recent moderation action the script performed, and is only available after a {mod:...} action in the same script: See Actions for the tags that produce these.

Economy data

Balances are fetched only when the script mentions them. economy. and econ. are interchangeable prefixes, and target.economy. / target.econ. read the auto-detected target’s balances instead.
These are read-only. The {econ:add} / {econ:set} / {econ:transfer} actions were removed because the economy is global — see Actions.
Use the raw_ variants inside conditionals — {if:{econ.raw_bal}>=1000} compares numbers, while {econ.bal} is a formatted string with a comma and the word “coins”.

Global placeholders

Custom commands support raze’s entire global variable set — user, server, channel, role, date, and time. The full list lives on the Variables page. Quick reminders:
  • User: {user.name}, {user.mention}, {user.id}, {user.avatar}, {user.joined_at}, {user.top_role}
  • Server: {guild.name}, {guild.id}, {guild.count}, {guild.icon}, {guild.owner.mention}
  • Channel: {channel.name}, {channel.mention}, {channel.topic}
  • Date & time: {date.now} and {time.now} in IST, {date.utc_now} and {time.utc_now} in UTC

Text transforms

Wrap a variable name in a transform function to reshape its output:
Write the name without braces: {upper(user.name)}, not {upper({user.name})}. Names that can’t be resolved are treated as literal text, so {upper(hello)} renders HELLO.
Resolvable inside a transform: any declared argument, any arg.* / command.* / moderator.* / economy.* value, plus user.name, user.display_name, user.id, target.name, target.display_name, target.id, guild.name, server.name, and channel.name.
KEEP IT DOWN (12 characters)
Need branching or randomness on top of these values? See Logic and randomness.