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!
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>
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 username (with an @ before it).
Example: @flatbird
When using argument variables (ex: {1.user.tag}), if {1.user.tag} is a bots tag rather than a users tag, Circle will format it to the old username style including the discriminator (Ex: Circle#4808). This is because bots still have discriminators, whereas users don't.
{user.discriminator}: Responds with the users discriminator.
Example: 0001
Due to Discords new username system, users no longer have a discriminator, so the {user.discriminator} variable will show user discriminators as "0". It's not recommended to continue using this variable as it may be removed completely in the future. Bot discriminators will still display normally.
{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! You can also use {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: Thu, Dec 28, 2023 4:20 PM
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, stage, news, news thread, public thread, private thread, forum, media
{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
{channel.rateLimitPerUser}: Responds with the current slowmode of the channel (in seconds).
Example: 420 seconds
{channel.topic}: Responds with the channels topic.
Example: Run Circle commands here!
The {channel.topic} variable will not work for categories or voice channels!
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
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 username of the server owner (with an @ before the username).
Example: @flatbird
{server.ownerID}: Responds with the ID of the server owner. This can also be useful if you want your Custom Command/Auto Reply to mention the server owner (Ex: <@{server.ownerID}>).
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} - 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
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!
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!
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.
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:
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 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.
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:
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].
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.
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.
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.
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.
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:
Circle would output the following response in your channel:
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 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.mention}: Responds with the role's mention.
Example: @Owner
Make sure you have the "Allow this response to mention @everyone, @here and all roles" option enabled on your Custom Command/Auto Reply if you'd like Circle to actually ping members with the role you're mentioning.
{#.role.name}: Responds with the role's name.
Example: Owner
{#.role.id}: Responds with the role's ID.
Example: 512498820035117076
{#.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
You can also use {#.role.iconURL} as an alias!
{#.role.position}: Responds with the roles position (according to Discord) in your role list.
Example: 100
{#.role.members} Responds with an approximate 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 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.
Here's an example command below, and it will explain each part of what the command will do.
Command Name: c!give
Command Response:
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".
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>}. Please note that when you use a command variable, you must tell Circle that it's a command variable with the c! at the start of the variable (as shown in the example). Even if your Circle prefix isn't c!, you must still use c! inside of the command variable. If your prefix is ?, for example, when using a command variable, you cannot use {?<command> <arguments>}. You must use {c!<command> <arguments>} regardless!
If you wanted to run the kick command for example, your variable would look like this: {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.
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 username (with an @ before it).
Example: @flatbird
When using argument variables (ex: {1.user.tag}), if {1.user.tag} is a bots tag rather than a users tag, Circle will format it to the old username style including the discriminator (Ex: Circle#4808). This is because bots still have discriminators, whereas users don't.
{user.discriminator}: Responds with the users discriminator.
Example: 0001
Due to Discords new username system, users no longer have a discriminator, so the {user.discriminator} variable will show user discriminators as "0". It's not recommended to continue using this variable as it may be removed completely in the future. Bot discriminators will still display normally.
{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! You can also use {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: Thu, Dec 28, 2023 4:20 PM
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, stage, news, news thread, public thread, private thread, forum, media
{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
{channel.rateLimitPerUser}: Responds with the current slowmode of the channel (in seconds).
Example: 420 seconds
{channel.topic}: Responds with the channels topic.
Example: Run Circle commands here!
The {channel.topic} variable will not work for categories or voice channels!
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 username of the server owner (with an @ before the username).
Example: @flatbird
{server.ownerID}: Responds with the ID of the server owner. This can also be useful if you want your Custom Command/Auto Reply to mention the server owner (Ex: <@{server.ownerID}>).
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.mention}: Responds with the role's mention.
Example: @Owner
Make sure you have the "Allow this response to mention @everyone, @here and all roles" option enabled on your Custom Command/Auto Reply if you'd like Circle to actually ping members with the role you're mentioning.
{#.role.name}: Responds with the role's name.
Example: Owner
{#.role.id}: Responds with the role's ID.
Example: 512498820035117076
{#.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
You can also use {#.role.iconURL} as an alias!
{#.role.position}: Responds with the roles position (according to Discord) in your role list.
Example: 100
{#.role.members} Responds with an approximate 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>}. Please note that when you use a command variable, you must tell Circle that it's a command variable with the c! at the start of the variable (as shown in the example). Even if your Circle prefix isn't c!, you must still use c! inside of the command variable. If your prefix is ?, for example, when using a command variable, you cannot use {?<command> <arguments>}. You must use {c!<command> <arguments>} regardless!
If you wanted to run the kick command for example, your variable would look like this: {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: 14/10/2024
Thank you!