Articles on: Guides n' FAQs

Variable Reference

These are some advanced variables that you will be able to use within Custom Commands and Auto Replies! This allows you to make your creations more advanced, and gives you the chance to explore many different possibilities with Circle!


Circle Emojis



These emojis are used in Circle's default replies. You can use them in custom replies, too!

Circle Logo: <:circle:962300635770945606>
Circle Premium Logo: <:premium:991756570050441308>
Check Mark: <:circleCheck:597928247455514624>
X Mark: <:circleX:597927874854387752>


User Variables



The user is the person who invoked the bot to reply.

{user}: Responds with the users mention.
Example: @Flatbird

You can also use {user.mention} as an alias! When using argument variables, you must use {N.user.mention}.

{user.username}: Responds with the users username.
Example: flatbird

{user.globalName}: Responds with the users display name, or their username if they don't have one set.
Example: Flatbird

{user.tag}: Responds with the users tag.
Example: Flatbird#0001

{user.discriminator}: Responds with the users discriminator.
Example: 0001

Due to Discords new username system, many users will no longer have a discriminator, so the {user.tag} and {user.discriminator} variables will show many users' discriminators as "0". It's not recommended to continue using these variables as they may be removed completely in the future.

{user.id}: Responds with the users ID.
Example: 282586181856657409

{user.nickname}: Responds with the users nickname. If none is set, it'll respond with their display name, or their username if they don't have a display name.
Example: Conorโ„ข

You can also use {user.nick} or {user.displayName} as an alias!

{user.avatar}: Responds with the users avatar URL.
Example: https://cdn.discordapp.com/avatars/497196352866877441/24d24970bc39861e1920150de0cd85a4.png

You can also use {user.avatarURL} as an alias, or {user.staticAvatarURL} to always get a static version of the avatar (even if it's a GIF).

{user.joinedAt}: Responds with a formatted version of when the user joined your server.
Example: Thu, Aug 29, 2019 5:56 PM

{user.createdAt}: Responds with a formatted version of when the user created their account.
Example: Sat, Feb 18, 2017 6:56 PM

{user.premiumSince}: Responds with a formatted version of when the user started boosting your server.
Example: not yet


Channel Variables



The channel is the channel that the bot was invoked in.

{channel}: Responds with the channels mention.
Example: #commands

You can also use {channel.mention} as an alias! When using argument variables, you must use {N.channel.mention}.

{channel.name}: Responds with the channels name.
Example: commands

{channel.id}: Responds with the channels ID.
Example: 681689241469976642

{channel.position}: Responds with the channels position (according to Discord) in your channel list.
Example: 69

{channel.type}: Responds with the type of the channel (in number form).
Example: 1

{channel.typeName}: Responds with the type of the channel (in text form).
Example: category, text, voice, news, store

{channel.parentName}: Responds with the name of the category that the channel is apart of (if none, it will not display anything).
Example: Community

{channel.parentID}: Responds with the ID of the category that the channel is apart of (if none, it will not display anything).
Example: 567944505173606400

{channel.createdAt}: Responds with a formatted version of when the channel was created
Example: Tue, Feb 25, 2020 2:29 AM

The following variables will not work for categories or voice channels!

{channel.topic}: Responds with the channels topic.
Example: Run Circle commands here!

{channel.rateLimitPerUser}: Responds with the current slowmode of the channel (in seconds).
Example: 420 seconds

The following variables will ONLY work for stage and voice channels!

{channel.bitrate}: Responds with the bitrate of the channel.
Example: 64000

{channel.userLimit}: Responds with the user limit of the channel.
Example: 99


Server Variables



You cannot use argument variables with server variables.

{server}: Responds with the servers name.
Example: Circle Support

You can also use {server.name} as an alias!

{server.id}: Responds with the servers ID.
Example: 369305238030778378

{server.icon}: Responds with the servers icon URL.
Example: https://cdn.discordapp.com/icons/369305238030778378/efc0bad2ee8fc66d3be38fff2936c3e5.png

You can also use {server.iconURL} as an alias!

{server.banner}: Responds with the servers banner URL.
Example: https://cdn.discordapp.com/banners/369305238030778378/3e6a20f130088a32e1d58ff55fc688d1.png

You can also use {server.bannerURL} as an alias!

{server.splash}: Responds with the servers splash URL.
Example: https://cdn.discordapp.com/splashes/369305238030778378/22a247f1fb95c2459af464d9e2d6553a.png

You can also use {server.splashURL} as an alias!

{server.prefix}: Responds with the prefix of the server.
Example: c!

{server.shard}: Responds with the shard ID of the server.
Example: 18

{server.memberCount}: Responds with the servers membercount.
Example: 69420

{server.description}: Responds with the servers description .
Example: The official support server for Circle.

{server.defaultNotifications}: Responds with the servers default notifications settings.
Example: All Messages, @Mentions Only

{server.owner}: Responds with the tag of the server owner.
Example: Flatbird#0001

{server.ownerID}: Responds with the ID of the server owner.
Example: 282586181856657409

{server.premiumSubscriptionCount}: Responds with the amount of users boosting the server.
Example: 5

You can also use {server.boosterCount} as an alias!

{server.premiumTier}: Responds with the Nitro boost level of the server.
Example: 3

You can also use {server.boosterLevel} as an alias!

{server.joinedAt}: Responds with a formatted version of when Circle joined your server.
Example: Sun, Sep 8, 2019 3:04 AM

{server.createdAt}: Responds with a formatted version of when the server was created.
Example: Mon, Oct 16, 2017 2:07 AM

{server.maxEmojis}: Responds with the maximum amount of emojis that the server is allowed to have.
Example: 100


Time Variables



{time} - Short date and time: March 8, 2022 9:41 AM
{time:f} - Short date and time: March 8, 2022 9:41 AM
{time:F} - Long date time: Tuesday, March 8, 2022 9:41 AM
{time:d} - Short date: 03/08/2022
{time:D} - Long date: March 8, 2022
{time:t} - Short time: 9:41 AM
{time:T} - Long time: 9:41:14 AM
{time:R} - Relative time: X minutes ago


Reaction Variables



The {react} variable allows you to make Circle react to a Custom Command response with the chosen emoji!

The {react} variable is currently limited to Custom Commands only. You can have a maximum of 3 reactions.

{react:unicodeEmoji} - React to the response with a default Discord emoji. (ex: ๐Ÿ˜„)
{react:customEmojiID} - React to the response with one of your servers custom emojis!

To react with a default Discord emoji, you need to get the unicode version of the emoji first. To do this, type the emoji into your chat box, and then put a \ before it (for example, \:smile:), and then send the message. Copy the unicode emoji and put it into your react variable (for example, {react:๐Ÿ˜„}).

To react with a custom emoji, you can use the name or ID of the emoji. If you choose to use the name of the emoji, please note that if you ever change the name of the emoji you'll need to edit the Custom Command to match the new name. To get the ID of a custom emoji, you need to type the emoji into your chat box, and then put a \ before it (for example, \:circle:), and then send the message. Copy the emoji ID and put it into your react variable (for example, {react:962300635770945606}).

You can only make Circle react with your servers custom emojis!


Pick Variables



The {pick} variable has 2 uses, and you can use either depending on how advanced you want your variable to be.

You can have as many {pick} variables as you want! You can also have as many options as you'd like inside of the {pick} variable!

Basic usage



The first usage for this variable is very simple, and Circle will just pick a random option from your list of options. For example purposes, the below response would just make Circle pick a random option from the {pick} variable.

When you run this command using this {pick} variable, Circle will randomly pick either Option 1, Option2 or Option 3 from the list of choices each time the command is ran.

{pick:Option 1, Option 2, Option 3}


The {pick} variable also supports using other variables inside of it. As an example, the below response would make Circle pick a random user, using argument variables.

Command Response:
{pick:{1.user.username}, {2.user.username}, {3.user.username}}

Command Usage: c!cmd @user1 @user2 @user3

Circle would respond with one of those users' usernames at random.

It's not limited to user variables, this was just an example! You can use ANY variable that you'd like inside of a {pick} variable!


Advanced usage



Advanced usage of this variable may be complicated for some users. It is recommended that you do not use the advanced version of the {pick} variable unless you understand it, and know what you're doing. Please note that Circle support is not obliged to provide assistance when you are using the advanced usage.

Please note that the below guide is for the Custom Commands plugin only! The below examples will not work when using the Auto Reply plugin.

Example 1:



Aside from the basic usage of the {pick} variable, you are able to create advanced commands using the advanced usage of the pick variable. With the advanced usage you could create a menu and other cool commands. In this example we are going to create a moderation menu that can kick, ban, warn, and mute. The moderation menu command response would look like this:

{pick1:kick {2+}}
{pick2:warn {2+}}
{pick3:mute {2+}}
{pick4:ban {2+}}
{c!{pick{1}}


In the first 4 lines you are defining what command you'd like to associate with each pick variable (1, 2, 3, 4) alongside the information it needs to run the command, which is why {2+} is there for the user, reason, and duration. In the last line, it will fetch the picked option that was given in the 1st argument and then formats it into a command so it runs like a Circle command. The usage for this command would be c!cmd [option_number].

Example 2:



Next, you can get a little more advanced with this variable and incorporate another command. In this example, we are going to use "argument splitting". We are going to use {c!sa{1}y} to send a message explaining the menu options the user has. Putting {1} in between makes it so if a person inputs a pick option number the command will be invalidated since such command does not exist, if the person does not input anything it will send the say message since that is a valid command.

{c!sa{1}y -e **Menu Options** 
Preview the options for the menu command here:
`1.` Kick Someone
`2.` Warn Someone
`3.` Mute Someone
`4.` Ban Someone
To use the menu command run `c!cmd [option_number]`.}
{pick1:kick {2+}}
{pick2:warn {2+}}
{pick3:mute {2+}}
{pick4:ban {2+}}
{c!{pick{1}}


The usage for this command would be c!cmd if you'd like the help message explaining the options, or c!cmd [option_number] if you'd like to execute a command.


Random Number Variable



The {randomnumber} variable will make Circle choose a random number from a range of numbers.
The usage is very simple! As an example, we'll use {randomnumber:1-10}. This would make Circle choose a random number from 1 to 10.

The lowest number you can use is 0. The highest you can use is 1,000,000.


Argument Variables



An "argument" refers to simply a word inside of your command message. Each word after the command name is called an "argument".

For example purposes, we'll use c!hi Hi Circle as the command. In this command, "Hi" would be the first argument and "Circle" would be the second argument. Circle parses arguments as {N}, where "N" is the argument number. So, to get the first argument, you can use {1}. For example, using {1} in this command would output "Hi" because "Hi" is our first argument, remember? Then of course, {2} in this command would output "Circle" because "Circle" is our second argument.

Using user, channel, and role argument variables



Circle also allows you to specify users, channels, or roles to parse when using argument variables. You need to simply tell Circle whether you're trying to resolve a user, a channel, or a role (which is all explained below).

When using arguments, Circle will need to understand what you are trying to parse when you are using arguments with regular variables. For example, instead of doing {user.username}, you would do {1.user.username}. Or instead of {channel.name}, you would do {1.channel.name}.

For example purposes, we'll use c!view @Circle #general @Developers as the command, where the response is:

{1.user.username}
{2.channel.name}
{3.role.name}


Circle would output the following response in your channel:

Circle
general
Developers


This is because Circle will resolve @Circle (which is {1} in your command) as "Circle" (because that is her username), Circle will resolve #general (which is {2} in your command) as "general" (because that is the channels name), and finally, Circle will resolve the @Developer role mention (which is {3} in your command) as "Developer" (because you mentioned the role ๐Ÿ˜‰)

Role Argument Variables



Role variables are not available outside of using arguments, for example, using {role.name} will not resolve to anything because Circle doesn't know what role it's looking for! Role variables only work in argument variables so {1.role.name} will work.

In this section, replace # with an actual number!

{#.role.name}: Responds with the role's name
Example: Owner

{#.role.color}: Responds with the role's hex color
Example: #66ccff

{#.role.icon}: Responds with the role's icon
Example: https://cdn.discordapp.com/role-icons/954898713149587476/d02e9bbdc9885a979db0fd3745a146b3.png?size=512

{#.role.position}: Responds with the roles position (according to Discord) in your role list.
Example: 100

{#.role.members} Responds with the number of members that have the role
Example: 69

{#.role.createdAt}: Responds with a formatted version of when the role was created
Example: Tue, Feb 25, 2020 2:29 AM

Joining arguments



Joining an argument is easy to do and allows you to easily output all arguments that a user provides without typing out each and every one.

Joining an argument works by simply putting a + after the argument number inside of the argument variable, and then Circle will join all arguments after the argument you chose to join.

For example purposes, we'll use c!hello I'm Circle, the best bot ever! as the command. If we used {2+} here, Circle will start joining arguments on the 2nd argument, "Circle", therefore the {2+} argument will output "Circle, the best bot ever!". Then {3+} would output "the best bot ever!", and so on.

Example



Here's an example command below, and it will explain each part of what the command will do.

Command Name: c!give
Command Response:
You gave {1} a {2+}! How generous.

Command Usage: c!give Flatbird presents and hugs

The {1} represents the first argument, "Flatbird", in the command message.
The {2+} variable represents the second argument and all arguments after it ("presents and hugs") in the command message. If you used just {2}, however, it would simply represent the second argument on it's own, "presents".


Command Variables



Circle allows you to run any default command in your Custom Commands. To use a command, simply add the command in brackets like so: {c!<command> <arguments>}

If you wanted to run the kick command for example: {c!kick {1+}}
This will perform the kick command with the arguments you provided.

Command variables will bypass the command permissions for the command that you use, even if they're not meant to be able to use it. This is because Circle will ignore these permissions and only listen for your Custom Command permissions instead.
You can only use a max of five command variables per Custom Command. You cannot execute Custom Commands with command variables.

Updated on: 29/03/2024

Was this article helpful?

Share your feedback

Cancel

Thank you!