# BotGhost Documentation

We warmly welcome you to the BotGhost Documentation!

<p align="center"><a href="/pages/-Lm_hW5ODKXKb6QcwZPs#get-started-with-botghost" class="button primary">View Topics</a><button type="button" class="button primary" data-action="ask" data-icon="gitbook-assistant">Ask a question</button></p>

Thank you for choosing BotGhost! We're excited to help you on your journey to creating your own custom BotGhost bot! Here you'll find everything you need to build and customize your bot.

To get started, **ask our AI** a question or check out the **main topics** below. You can also explore our **Table of Contents** on the left, and select the feature you're interested in.\
If your question is not answered on one of the pages, do not hesitate to join our Discord server at [discord.gg/botghost](https://discord.gg/botghost) for further support!

Happy building!

## Get started with BotGhost

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>Creating a bot</strong></td><td>Learn how to create and add to a server your bot.</td><td><a href="/pages/pYis6v2QUlUPSNRgMzVP">/pages/pYis6v2QUlUPSNRgMzVP</a></td><td><a href="/files/aPw1HdpxMB4KR3aCqoLD">/files/aPw1HdpxMB4KR3aCqoLD</a></td></tr><tr><td><strong>Premium</strong></td><td>Discover our premium features and perks.</td><td><a href="/pages/Pt9XqxP7IlMm5Kh2RaVd">/pages/Pt9XqxP7IlMm5Kh2RaVd</a></td><td><a href="/files/k7o2AQEcA1XIAOcaSCyF">/files/k7o2AQEcA1XIAOcaSCyF</a></td></tr><tr><td><strong>Changelogs</strong></td><td>See what's new.</td><td><a href="/spaces/lqJCocmqzKryU9USp1nO">/spaces/lqJCocmqzKryU9USp1nO</a></td><td><a href="/files/XX17ALGPODJhRKrEb4Mc">/files/XX17ALGPODJhRKrEb4Mc</a></td></tr><tr><td><strong>Command Builder</strong></td><td>Check out our advanced command and event builder.</td><td><a href="/pages/oerw8RRlOj1EVK2tZNGu">/pages/oerw8RRlOj1EVK2tZNGu</a></td><td><a href="/files/Ot4t1bNQ8NjdeqZCcFjx">/files/Ot4t1bNQ8NjdeqZCcFjx</a></td></tr><tr><td><strong>Actions</strong></td><td>Learn what your BotGhost bot can do without a single line of code needed.</td><td><a href="/pages/KxnnM6WCwUHzzFZJwjEP">/pages/KxnnM6WCwUHzzFZJwjEP</a></td><td><a href="/files/oxaPngkiTaxGfUe7Bys3">/files/oxaPngkiTaxGfUe7Bys3</a></td></tr><tr><td><strong>Variables</strong></td><td>View a list of all variables you can use in the command builder.</td><td><a href="/pages/554dHNXfQ4jOP5NQDsmp">/pages/554dHNXfQ4jOP5NQDsmp</a></td><td><a href="/files/TN8Xj6IVZEEFoAJMs0dT">/files/TN8Xj6IVZEEFoAJMs0dT</a></td></tr></tbody></table>


# Guidelines & Privacy

Make sure to follow our guidelines!

### BotGhost ToS (Terms of Service)

By using BotGhost, you agree to adhere to our Terms of Service. It is expected that you follow these Terms while using the platform. You can view our Terms of Service [**here**](https://botghost.com/tos)**.**

### BotGhost Privacy Policy

At BotGhost, we take your privacy seriously. To help you understand what information we collect and why, we have outlined everything in our Privacy Policy. You can view it [**here**](https://botghost.com/privacy-policy)!

### BotGhost Security

Security is a key priority for BotGhost. We use trusted third-party providers to help ensure the protection of your information. For more details, visit our Security page [**here**](https://botghost.com/security)**.**

### BotGhost Market Guidelines

To maintain the integrity of the BotGhost Market, we have set guidelines for its use. You can learn more about the rules and expectations for the market by visiting our Market Guidelines page [**here**](https://botghost.com/market/guidelines)**.**

### Discord Guidelines

When using BotGhost, it is important to follow Discord's Community Guidelines. You can review Discord's Guidelines [**here**](https://discord.com/guidelines)**.**

### Discord Terms of Service

All BotGhost users are expected to comply with Discord's Terms of Service. You can read more about Discord's Terms of Service [**here**](https://discord.com/terms)**.**&#x20;

{% hint style="info" %}
If you have any questions or concerns about these policies, please check out our [Help Center](https://help.botghost.com/support/home).
{% endhint %}


# Create Your First Bot

Are you new to BotGhost or did you forget how you can create a BotGhost bot? Take a look at the video or steps below to get all the information you need!

{% embed url="<https://youtu.be/zXeg8JJyt0k>" %}
You can watch the official YouTube video here.
{% endembed %}

{% hint style="danger" %}
It should be worth noting that this token is essentially your bot’s password. You should **NEVER** share this to someone else. In doing so, someone can log in to your bot and do malicious things, such as leaving servers, ban all members inside a server, or pinging everyone maliciously.

If you accidentally leaked your token, click the 'Regenerate' button as soon as possible. This revokes your old token and re-generates a new one. Now you need to use the new token to login.
{% endhint %}

### Step 1. Create an Application

{% stepper %}
{% step %}
Firstly, go to **the** [Discord Developer Portal](https://discord.com/developers/applications). Click on the **New Application** button to create your application.

![](/files/MmdFFCUoreGTNmRH2gLs)
{% endstep %}

{% step %}
Give your application a name and click **Create**. This will create the application and take you to a new app management screen.

![](/files/AfTv9QGasoTbjghYbBcF)
{% endstep %}

{% step %}
On the left sidebar, select the **Bot** tab. Click Add Bot on this screen. Confirm the message popup, and you're done! You're one step away from creating your first BotGhost bot!

![](/files/Ds2k0PJMhfoHyJE0e7Zc)
{% endstep %}

{% step %}
Once your bot has been created, you will notice a new page for your bot. Here, you can edit everything about your bot, including its name, profile picture, about me, and more. Under the username of the bot, you will see a "token" section. Click **Reset Token**, this will allow you to get the bots token. This is needed for future steps, so it is best to keep the code to the side for now. Ensure you do not lose it, nor give it to anyone else. If you do lose your token, or it gets leaked, ensure you click **Reset Token** immediately.&#x20;

![Click "Reset Token"](/files/70GuhJbZHkD3jtkZZ88l)

<div align="center"><img src="/files/m4deVZhmnLPoUREkkzMK" alt="Your bot token will appear. Ensure you do not lose this."></div>
{% endstep %}
{% endstepper %}

## Step 2: Enable all Intents

Intents are required by some BotGhost modules. Intents allow us to choose which events their bot receives based on the data it needs to function, so it is best to enable the intents ahead of time to avoid future errors. After you've created your bot, scroll down to the intents area of the page and enable all three intents: presence, server members, and message content.

<figure><img src="/files/EKBPeiU3BwWxWDdeMW4s" alt=""><figcaption></figcaption></figure>

## Step 3: Setting Up your BotGhost Bot

Great! You've successfully created your Discord bot, now it is time to turn it online and function. Most bots are required to be coded from scratch, although with BotGhost, you can do this without coding. By doing the following steps, you will be able to connect your bot with BotGhost, turn it online, and run commands.

{% stepper %}
{% step %}
Firstly, go to [BotGhost.com](https://botghost.com) and click **Create a Bot** on the top right corner.&#x20;

<figure><img src="/files/gvb8XZUS6bhjJwqGae1p" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Once selected, you will be prompted to log in to BotGhost using one of the available authentication methods (Google, Apple, Twitter/X, or email). Detailed, platform-specific instructions are available [here](https://help.botghost.com/support/solutions/folders/205000057003).\
\
After choosing your preferred method and completing authentication, click **Authorize** to grant access and continue to the dashboard. The login method you select will be permanently associated with your BotGhost account for future sign-ins.

<figure><img src="/files/VK4fG3ySADYRDLdIqfwh" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Once logged into BotGhost using your Discord account, you will be guided through a 7-step setup process to configure your Discord bot. During Step 4, you will be required to confirm that all required Privileged Gateway Intents have been enabled in the Discord Developer Portal. In Step 7, you will be prompted to copy your bot token, which acts as a secure key allowing BotGhost to access and operate your bot. If you do not have your token, review [Step 1](#step-1.-create-an-application), part 4 again. Input the bots token in the **Bot Token** section.

<figure><img src="/files/AdcYtoBCsBeIbzmw0shC" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Congratulations! You've successfully created your first BotGhost bot! In the dashboard, you can configure your bot however you wish. Each module serves a purpose such as moderation, leveling, and logging. Take a look around and get a feel for it; it may take some getting used to, but once you do, creating and editing your very own bot will be easier than ever!

<figure><img src="/files/DBNnahvZBc8P3ayP6T22" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

{% hint style="danger" %}
It should be worth noting that this token is essentially your bot’s password. You should **NEVER** share this to someone else. In doing so, someone can log in to your bot and do malicious things, such as leaving servers, ban all members inside a server, or pinging everyone maliciously.

If you accidentally leaked your token, click the 'Regenerate' button as soon as possible. This revokes your old token and re-generates a new one. Now you need to use the new token to login.
{% endhint %}


# Create Your Second Bot

Why just have one bot, when you can have more? With the bot switcher feature, this makes it easy to do!

### How to Create Multiple Bots

You can have multiple bots on one account with BotGhost.&#x20;

{% stepper %}
{% step %}
Click the **Bot Switcher** drop-down in the top right-hand corner of your dashboard or your bot's profile picture in the left-hand side menu to add another bot to your account.
{% endstep %}

{% step %}
Click this page's **New Bot** button to start a new bot. Use the same steps as when creating your first bot to create this one.
{% endstep %}

{% step %}
Click the Bot Switcher drop-down menu once more, then choose the new bot you want to use.
{% endstep %}
{% endstepper %}

![](/files/dx1wuOv7OQj92mBtdiZS)


# Invite Your Bot

Not able to figure out how you can invite your bot? Below you can find the instructions!

{% embed url="<https://youtu.be/lVUS8ZgPvDs>" %}
Tip: Watch this video tutorial or follow the steps below
{% endembed %}

### How to invite your bot?

We've made it easy to invite your custom bot to across all your servers. Simply follow the steps below:

{% stepper %}
{% step %}
First you'll need to head on over to your [BotGhost Dashboard](https://dashboard.botghost.com/dashboard/modules).
{% endstep %}

{% step %}
Once on the dashboard, on the left hand side of the dashboard menu, locate "Invite" and click on the piece of text: &#x20;

![](/files/oavfOtDjhh8WOj8WUZ2U)
{% endstep %}

{% step %}
You'll then be redirected to the default discord authorization page. First, select a server in which you want the bot to be invited to: &#x20;

<img src="/files/XjEBg2IRZ56AciCft4g5" alt="Note: You&#x27;ll need to press &#x22;Continue&#x22; after selecting a server" width="316">
{% endstep %}

{% step %}
After selecting a server and clicking the "continue" button, **you'll have to grant the bot "Administrator" permissions which is required for the bot to function properly.** Verify there's a tick next to "Administrator":&#x20;

<img src="/files/whwJgdnt7qUIiK98IcIs" alt="" width="328">
{% endstep %}

{% step %}
After clicking "Authorise", you may be prompted to complete a hcaptcha which ensures you're a real human. Click on the "I am a human" button to verify and once complete, you should receive an "Authorized" message meaning you've successfully invited your bot!&#x20;
{% endstep %}
{% endstepper %}

{% hint style="info" %}
Do you still have questions after reading this page? Check out our support options [<mark style="color:blue;">**here**</mark>](/support/botghost-support)<mark style="color:blue;">**!**</mark>
{% endhint %}


# Standard Practices

There are some frequently asked questions about BotGhost. Some best practices you may need in the future.

## OAuth2 Code Grant

Inviting your bot is usually quite easy, although sometimes you may receive an error regarding "Bot requires a code grant."&#x20;

<figure><img src="/files/del0J2xovMU7Rus8sbty" alt=""><figcaption></figcaption></figure>

This is due to the "Requires OAuth2 Code Grant" setting enabled. You can fix this by doing the following:

{% stepper %}
{% step %}
Go to the [Discord Developer Portal](https://discord.com/developers/applications) and select your bot's application.
{% endstep %}

{% step %}
Under your bot's application, go to the **Bot** tab.

<figure><img src="/files/6KmypgLtxVOrsX7mJJ28" alt="" width="210"><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Under the **Bot** tab, look underneath **Authorization Flow** and locate **REQUIRES OAUTH2 CODE GRANT**.
{% endstep %}

{% step %}
Disable **OAUTH2 CODE GRANT**.&#x20;

![](/files/pLatYChTAl1bp8P0yJkw)

![](/files/A73MOzTJutVNe1BB8t7Y)
{% endstep %}

{% step %}
Retry inviting your Discord bot.
{% endstep %}
{% endstepper %}

## Privileged Gateway Intents

Gateway intents are very important for your bot to function. Intents are required by some BotGhost modules. Intents allow us to choose which events their bot receives based on the data it needs to function, so it is best to enable the intents ahead of time to avoid future errors. If your announcement module, autoresponder module, etc. is not functioning correctly, follow the steps below:

{% stepper %}
{% step %}
Go to the [Discord Developer Portal](https://discord.com/developers/applications) and select your bot's application.
{% endstep %}

{% step %}
Under your bot's application, go to the **Bot** tab.

<figure><img src="/files/6KmypgLtxVOrsX7mJJ28" alt="" width="210"><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Under the **Bot** tab, look underneath **Privileged Gateway Intents** and enable all the following three: Presence Intent, Server members Intent, & Message Content Intent.

![](/files/J1NqpMEnyPwcgjOOWLSC)
{% endstep %}
{% endstepper %}

## Resetting Your Bot's Token

If you need to reset your bot's token, you can follow the following steps to do so:

{% stepper %}
{% step %}
Go to the [Discord Developer Portal](https://discord.com/developers/applications).
{% endstep %}

{% step %}
Select the application (bot) you want to reset the token from and locate the 'Bot' tab.&#x20;

<figure><img src="/files/Zy7wpoNMOUI17s1KmfJA" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Scroll down to the blue Reset Token button and click it.

<figure><img src="/files/R8H97tEzJG4UOgFaupQT" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Complete any confirmations or two-factor authentication pop-ups that appear, then click the 'Copy' button below your new bot token.

<figure><img src="/files/qKOmQKDq2n6HHs9oZ1QS" alt=""><figcaption></figcaption></figure>

{% hint style="danger" %}
Your bot's token is the 'key' to your bot, never give this to anyone!
{% endhint %}
{% endstep %}

{% step %}
Paste your new bot token in the [bot token setting](/general-settings-and-collaboration/settings#bot-token) on the [BotGhost dashboard](https://dashboard.botghost.com/dashboard/settings).
{% endstep %}
{% endstepper %}

## Changing Your Bot's Name

If you are unhappy with your bot's username, you can always change it through BotGhost's dashboard. You can do this by doing the following steps:

{% stepper %}
{% step %}
Go to the [BotGhost Dashboard](https://dashboard.botghost.com/dashboard).
{% endstep %}

{% step %}
On the dashboard, go to the [settings page](https://dashboard.botghost.com/dashboard/settings).&#x20;
{% endstep %}

{% step %}
On the first section of the bot settings, you can change the bot's name. *Remember to click "Save"!*

![](/files/9SYLhEF1p39P2utgd2Yk)
{% endstep %}
{% endstepper %}

## Changing Your Bot's Avatar

If you are unhappy with your bot's avatar, you can always change it through BotGhost's dashboard. You can do this by doing the following steps:

{% stepper %}
{% step %}
Go to the [BotGhost Dashboard](https://dashboard.botghost.com/dashboard).
{% endstep %}

{% step %}
On the dashboard, go the [settings page](https://dashboard.botghost.com/dashboard/settings)
{% endstep %}

{% step %}
On the second section of the bot settings, you can change the bot's avatar. *Remember to click "Save"!*

![](/files/MsnKp7XEfrrVwaqehrp9)
{% endstep %}
{% endstepper %}

## Restarting Your Bot

Your bot may need to restart your bot to have your bot function due to some unexpected errors. You can restart your bot by doing the following steps:

{% stepper %}
{% step %}
Go to the [BotGhost Dashboard](https://dashboard.botghost.com/dashboard).&#x20;
{% endstep %}

{% step %}
On the dashboard, go the [settings page](https://dashboard.botghost.com/dashboard/settings).&#x20;
{% endstep %}

{% step %}
On the sixth section of the bot settings, you can restart your bot. Press the button **Restart Bot**. *Remember to click "Save"!*

![](/files/W2giKEVUBwqQGaCdvzYy)
{% endstep %}
{% endstepper %}


# Advanced Practices

Do you need certain IDs to use in the command builder?

## How can I get a channel ID?

{% stepper %}
{% step %}
Firstly, head over to your settings page in the discord app/site. Here you will want to locate the developer mod setting which can be found via **User Settings > Advanced.**

<figure><img src="/files/Gmv1SWMHkAFpw5ZQzh2v" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Next, head into your server and find the channel in which ID you would like to retrieve. From here simply right click on the channel **(PC)** to open the action menu. For mobile press and hold on the channel **(Mobile)**.

#### **PC/Desktop**

![PC/Desktop](/files/uY344FPFsMI2uFdXl4kg)

#### **Mobile Users**

![Mobile](/files/QjaClBAPgJO5Sr4hifVM)
{% endstep %}

{% step %}
Simply press '**Copy Channel ID**' and you will now have the channels ID saved to your clipboard, you can paste this ID anywhere!
{% endstep %}
{% endstepper %}

## How can I get the ID of my bot or a user?

{% stepper %}
{% step %}
Firstly, head over to your settings page in the discord app/site. Here you will want to locate the developer mod setting which can be found via **User Settings > Advanced.**

<figure><img src="/files/pwvYrDlSk3KCdfAJ9mbc" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Next, find the user/bot who's ID you wish to get and right click on their username **(pc)** or press on their username and hit the 3 dots in the users profile **(mobile)**.

#### **PC/Desktop Users**

![](/files/e9pyqoSW3JmQzpIN2Sdb)![](/files/G2gXEJpMplfnRhGDYnfw)

#### **Mobile Users**

<img src="/files/1ILSUgIfgb62kFQ62hyp" alt="" data-size="original">![](/files/iEz8jK7jLJ5MPs1Tlb0v)
{% endstep %}

{% step %}
Finally, click '**Copy User ID'**. Now you can paste the users/bots ID anywhere you need!
{% endstep %}
{% endstepper %}

## How can I get a custom emoji's ID?

{% stepper %}
{% step %}
Firstly, add the custom emoji you want to use into your message bar
{% endstep %}

{% step %}
Move your cursor behind the selected emoji
{% endstep %}

{% step %}
Add a backslash **\\** behind the emoji
{% endstep %}

{% step %}
Send the message
{% endstep %}

{% step %}
Copy the **numbers** from the returned format
{% endstep %}
{% endstepper %}

<figure><img src="https://i.imgur.com/6fg3QQF.gif" alt=""><figcaption><p>How to copy an emoji ID</p></figcaption></figure>

## Reading Discord API Documentation and Using it

What might be an essential component for your builds is Discord API. Using this API will allow you to have alternatives in case you are working on more complex functionalities and / or something isn't accessible via the default action blocks or [variables](/custom-commands-and-events/variables). You can send API Requests using the [Send an API Request](/custom-commands-and-events/actions/api-actions/send-an-api-request) action.

<figure><img src="/files/CmbN5RrXKle232FQVYDI" alt=""><figcaption></figcaption></figure>

The example above shows an endpoint from the API that creates messages and is found in the [Discord API Documentation](https://discord.com/developers/docs/intro). Scroll down under the left side to see the list of endpoints / categories. Reading the API is fairly simple, if you would like to create a message using the API then head to the "Message" section of the image above.

Once you click on the create message endpoint you can start to implement it into the request block using the steps below.

{% stepper %}
{% step %}
The first thing you need to setup is the request type and the request URL. The request type you will have to use can be found right before the URL, <mark style="color:green;">**`POST`**</mark> in this case.
{% endstep %}

{% step %}
Next you input the [request URL](/custom-commands-and-events/actions/api-actions/send-an-api-request#request-url). If your using Discord API, the beginning of the URL always starts with `https://discord.com/api/v10.` The rest of the URL is the endpoint which is shown in the image above. So in this case the full URL will become: `https://discord.com/api/v10/channels/{channel.id}/messages`. You will have to replace `{channel.id}` with an actual channel ID or a variable. In general, the starting URL of an API endpoint can be found in the reference page of the documentation you are reading. The reference page of the Discord API Documentation can be found [here](https://discord.com/developers/docs/reference).
{% endstep %}

{% step %}
In order to send any API request, Discord needs to know you are authorized to do that (example, the request is being sent by your bot). Go in the [HTTP Headers](/custom-commands-and-events/actions/api-actions/send-an-api-request#http-headers) section and set the key field to `Authorization` and the value field to `Bot {TOKEN_SECRET}`. This simple process authorizes your bot to perform actions and retrieve data from the Discord API. {TOKEN\_SECRET} is a variable that contains the token of your bot. For your safety, it can only be used when authorizing a Discord API Request.
{% endstep %}

{% step %}
Now, you will need to add data to your request. The list of data you can send to a specific endpoint can be found right below the endpoint URL and is usually under a "JSON/Form Params" Section. This means that all data you provide wil have to be specified in the [Request Body](/custom-commands-and-events/actions/api-actions/send-an-api-request#request-body) section of your API Request. Instead, if the title says "Query String Params" (see example below), you will have to add them in the [URL Params](/custom-commands-and-events/actions/api-actions/send-an-api-request#url-params) section. \
To add a field to your API Request, fill in the key value with the field name (example `content`, see example). Add a value on the value field, and ensure it is an accepted value (see the value type column (for example, a string can be basically anything, an integer must be a number, a boolean can be either true or false. [Arrays](https://www.w3schools.com/js/js_json_arrays.asp) and [objects](https://www.w3schools.com/JS/js_json_objects.asp) are more complex data types)).
{% endstep %}
{% endstepper %}

<figure><img src="/files/yhPTrI4jMpW1Awquovoo" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/Jg4edSj7y0hknv3IFX4q" alt=""><figcaption></figcaption></figure>


# Mobile Application

Would you like to use BotGhost via an app? We offer you way to use BotGhost through an iOS app or icon on your home screen.

You can download the BotGhost App for free on the iOS App Store, or on Android through a Progressive Web App.\
*You don't need to install this to use BotGhost, it's completely optional!*

Below you can see how to install it on [iOS](#ios-app) or [Android](#android-devices) device.

## iOS App

{% hint style="warning" %}
Please note that the native BotGhost app is not available for Android devices.
{% endhint %}

The BotGhost app is available on the native iOS App Store to download for free.

{% stepper %}
{% step %}
Go to the [BotGhost](https://apps.apple.com/us/app/botghost/id6757778695) app on the App Store.
{% endstep %}

{% step %}
Press the "Get" button.

<figure><img src="/files/TMPdOG3qRRsXQrOIsEd2" alt="" width="188"><figcaption></figcaption></figure>
{% endstep %}

{% step %}
You can now access the BotGhost dashboard directly from your home screen!.

<figure><img src="/files/IMusiJuZ1sbkcwET7NF6" alt="" width="203"><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

## Android Devices App

{% stepper %}
{% step %}
Go to the [BotGhost](https://botghost.com/) website and click on 'Create Bot' to log in.

<figure><img src="/files/QQ0Y1qH8dZY60rKIHfo7" alt="" width="188"><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Click on the three dots at the top right corner of your screen.

<figure><img src="/files/ViTYXHmpgH49tGnvHzOh" alt="" width="188"><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Click on 'Install App'.

<figure><img src="/files/ZnEGqbYXKlczBEJh97f0" alt="" width="188"><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Click on 'Install' again to confirm.&#x20;

<figure><img src="/files/wz2IgjyOhPxluKKYSGBR" alt="" width="188"><figcaption></figcaption></figure>
{% endstep %}

{% step %}
You can now use the app via your home screen or app selector!
{% endstep %}
{% endstepper %}


# BotGhost Support

Do you require assistance? Read everything about it below!

## Discord Support Server

Our [Discord Server](https://discord.gg/botghost) boasts a community of over 150,000 members. Whether you need support with your bot, want to have a nice chat, or want to explore what others create using BotGhost, we are happy to welcome you. Our community members, community support team, and staff are here to help you whenever needed. Additionally, our Premium members and server boosters have the ability to create a private support thread with an extra premium touch for their questions or inquiries. To join our server and access the support resources, click [here](https://discord.gg/botghost)!

## Billing & Subscription Support

When you have a question or inquiry related to your (future) premium subscription, billing, or a payment you are about to make, (or made) you can reach out to us by creating a [ticket](https://help.botghost.com/support/tickets/new) in our [Help Center](https://help.botghost.com/support/home). A BotGhost employee will assist you with your inquiry.

## Help Center

May you have account related or minor billing / subscription related issues or questions, check out our [Help Center](https://help.botghost.com/support/home). Here you can find multiple articles that might help you to solve your inquiry.


# Frequently Asked Questions

On this page you can find a couple FAQs that might answer your question quickly!

This page will allow you to get a speedy answer to a frequently asked question you have. To view a frequently asked question, **browse the headers panel** displayed on the **right-hand side** and **select the question** you'd like to learn more about!

***

## How can I fix the "Integration Requires Code Grant" error when inviting my bot?

To resolve this error, follow these steps:

{% stepper %}
{% step %}
Head to the [Discord Developer Portal](https://discord.com/developers/applications) and select your bot.
{% endstep %}

{% step %}
From the left-hand panel, head to the Bot tab.

<figure><img src="/files/0vIiA48XPeqYNEb47Yko" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Scroll down to the "Integration Requires Code Grant" toggle and disable it.

<figure><img src="/files/IZqxnumzvqKsBJIP0Dya" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Head back to the[ BotGhost Dashboard](https://dashboard.botghost.com) and click the Invite button again.
{% endstep %}
{% endstepper %}

## How can I create prefix/text commands or change my prefix?

Unfortunately, prefix commands are **no longer supported** due to policy changes by Discord. BotGhost uses slash `/` commands, which are built into and supported by Discord directly to allow for better functionality and more features. At the moment, we are not planning to change this. [Learn more](https://support-dev.discord.com/hc/en-us/articles/4404772028055-Message-Content-Privileged-Intent-FAQ).

## How can I fix the "...is thinking" message when running a custom command?

Custom commands will respond with "*Bot name* is thinking..." when **your command does not have a reply message**. Your command must include a [Send or Edit a Message](/custom-commands-and-events/actions/message-actions/send-or-edit-a-message) block with the [reply to the command](/custom-commands-and-events/actions/message-actions/send-or-edit-a-message#reply-to-the-command) [response type](/custom-commands-and-events/actions/message-actions/send-or-edit-a-message#response-type) to avoid this response. All blocks in your command will remain fully functional regardless of this response.

## How can I fix my bot when it goes offline or has another issue?

To resolve common issues like an offline bot, you can [restart your bot](/general-settings-and-collaboration/settings#restart-bot) or [reset your bot's token](#how-can-i-reset-my-bot-token). Additionally, if you're a premium member, [disabling beta features](/general-settings-and-collaboration/settings#enable-beta-features) can often resolve issues with your bot. Bots that have not been [upgraded to a premium subscription](/premium/upgrade-your-bot) may go offline after 48 hours of inactivity.

## How can I use custom code inside my bot's commands and events?

BotGhost is a no-code Discord bot builder, and therefore **it is not possible to add custom code in your bot**. To build a custom system with your bot, you must use the no-code [Command & Event Builder](/custom-commands-and-events/command-and-event-builder). At the moment, we are not planning to change this.

## How can I transfer an active premium subscription and bots?

Users with an active [Premium Subscription](/premium/premium-and-priority-hosting-plans#premium-plans), can transfer their premium subscription and bots by creating a [BotGhost Support](/support/botghost-support#billing-and-subscription-ticket).

## How can I reset my bot token?

To reset your bot token, follow these steps:

{% stepper %}
{% step %}
Head to the [Discord Developer Portal](https://discord.com/developers/applications) and select your bot.
{% endstep %}

{% step %}
From the left-hand panel, head to the Bot tab.

<figure><img src="/files/Zy7wpoNMOUI17s1KmfJA" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Scroll down to the blue Reset Token button and click it.

<figure><img src="/files/WDSqXpLA5IZW0fWlrSJB" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}
Complete any confirmations or two-factor authentication pop-ups that appear, then click the 'Copy' button below your new bot token.

<figure><img src="/files/qKOmQKDq2n6HHs9oZ1QS" alt=""><figcaption></figcaption></figure>

{% hint style="danger" %}
Your bot's token is the 'key' to your bot, never give this to anyone!
{% endhint %}
{% endstep %}

{% step %}
Paste your new bot token in the [bot token setting](/general-settings-and-collaboration/settings#bot-token) on the [BotGhost dashboard](https://dashboard.botghost.com/dashboard/settings).
{% endstep %}
{% endstepper %}

## How can I fix the dashboard when it infinitely loads or has another issue?

If you're experiencing an issue like infinite loading while utilizing the [BotGhost Dashboard](https://dashboard.botghost.com), you can usually resolve it by **clearing your browser cache** for the BotGhost website. Click on any of the links below for an official support article on clearing cache specific to your browser.

* [Chrome](https://support.google.com/accounts/answer/32050)
* [Firefox](https://support.mozilla.org/en-US/kb/how-clear-firefox-cache)
* [Safari](https://support.apple.com/lv-lv/guide/safari/sfri11471/mac)
* [Edge](https://www.microsoft.com/en-us/edge/learning-center/how-to-manage-and-clear-your-cache-and-cookies?form=MA13I2)
* [Opera / Opera GX](https://blogs.opera.com/tips-and-tricks/2023/04/clean-browser-and-remove-trackers/)
* [Brave](https://support.brave.com/hc/en-us/articles/360048833872-How-Do-I-Clear-Cookies-And-Site-Data-In-Brave)
* [Vivaldi](https://help.vivaldi.com/desktop/tools/delete-browsing-data/)

Not seeing your browser in the list above? Try using a search engine to look up how to clear cached data with your browser.

## How can I send feedback, suggestions, and bug reports to BotGhost's team?

To send your feedback and reports to BotGhost, you can [join our Discord server](https://discord.gg/botghost) and navigate to the appropriate channels for the type of information you'd like to send. Be sure to read through the information provided in that channel before sending your post.

***

## Question Not Listed

If you can't find your question anywhere on this page, it might be listed somewhere else in the documentation. To find it, you can **use the search bar in the top-right corner** to look up keywords for your question. If you still can't find the answer to your question, please check out the [BotGhost Support](/support/botghost-support) page where you can find the assistance you need.


# Other FAQs

On this page you can find a couple FAQs that might answer your question quickly!

Below you may find some other FAQs that are not listed in the [Frequently Asked Questions](/support/frequently-asked-questions) page.

<details>

<summary>How can I listen to music with BotGhost?</summary>

You can listen to music in your Discord servers using the Music Module You can use [pre-built commands](/fun-modules/music), or you may build your own systems that use music through the [Music Actions](/custom-commands-and-events/actions/music-actions) and [Variables](/custom-commands-and-events/variables#music-variables) available in the [command and event builders](/custom-commands-and-events/command-and-event-builder).

</details>

<details>

<summary>How do I remove the "Made with BotGhost" watermark / remove the bot's status?</summary>

To remove the "Listening to 👻 Made with BotGhost.com 👻" status/watermark or change it to something of your own, access the [status module on the BotGhost Dashboard](https://dashboard.botghost.com/dashboard/status) and modify its settings. You can learn more about how to do this in the [status module documentation page](https://docs.botghost.com/server-management/status).

Please note this **requires** a (free) **premium** subscription. Free users cannot change their status.

</details>

<details>

<summary>Why does my bot send "Interaction failed"?</summary>

If you always/regularly get this error when using a command, you can fix it by regenerating your bot token.

You can regenerate your bots token by heading over to the [**Discord Developer Portal**](https://discord.com/developers/applications) **> Applications > Select your application (bot) > Bots (side menu option)**.

From here you can select 'Reset Token' to regenerate your bots token, once you have the new token don't forget to paste it into your bots settings page on the [BotGhost Dashboard](https://dashboard.botghost.com/dashboard/settings).

Additionally, you may encounter this issue if you have filled in the "Interactions endpoint URL" setting in the Discord Developer Portal. Double check in the "General Information" section of your application's settings that you didn't fill in this option.

<img src="/files/OWZJtnUOAH6eZhXBqfLn" alt="" data-size="original">

</details>

<details>

<summary>My payment method is not working</summary>

You can contact the BotGhost support team for assistance with your payment method issue. reach us out at our [Help Center](https://help.botghost.com/support/home) for help with billing, premium, or subscription related issues or questions.

</details>

<details>

<summary>Why can't I invite my bot?</summary>

Inviting your bot is usually quite easy, although sometimes you may receive an error regarding "Bot requires a code grant." This is due to the "Requires OAuth2 Code Grant" setting enabled. You can fix this by doing the following:

1. Go to the [Discord Developer portal](https://discord.com/developers/applications) and select your bot's application.
2. Under your bot's application, go to the **Bots** tab.
3. Under the **Bots** tab, look underneath **Authorization Flow** and locate **REQUIRES OAUTH2 CODE GRANT**.
4. Disable **OAUTH2 CODE GRANT**.
5. Retry inviting your Discord bot.

</details>

<details>

<summary>How can I verify my bot?</summary>

Discord has a verification program, which can be found in the [Discord Developer Portal](https://discord.com/developers/applications) > Select your application (bot) > App Verification. This page allows you to view the status of your application and ensure you meet all requirements for it. Once you meet all requirements, you can send a request to verify your application (bot).

Discord's verification team will review your application. If your application is approved, your bot will receive the verified checkmark.

</details>

<details>

<summary>What is an API?</summary>

An API is a tool that websites can use to communicate with each other. You can use it in BotGhost to retrieve information or take action on another site. Check out the [Send an API Request](/custom-commands-and-events/actions/api-actions/send-an-api-request) page for more.

</details>

<details>

<summary>What is {TOKEN_SECRET}?</summary>

`{TOKEN_SECRET}` is a variable you can use in the 'Send an API request' block in place of your actual bots token when using a discord API endpoint. For security purposes, it can only be used in the `Authorization` field.

</details>

<details>

<summary>How many commands and events can I create?</summary>

Free users are limited to 3 active custom commands and 3 custom events. You can use more by disabling unused commands or upgrading to a premium subscription. Premium user have no set limit for active commands and can create and deploy as many commands as they want.

</details>

<details>

<summary>How to delete default commands?</summary>

It's not possible to delete default BotGhost commands. However, you can disable them. To disable the built-in command, you can go in the module they belong to and press the switch to off to disable the command, or disable the whole module.

</details>

<details>

<summary>Why can't I see commands in my server?</summary>

To see your commands after saving them, you'll need to refresh your Discord client. You can do so on mobile by closing and re-opening the app, or on PC by pressing Ctrl/Cmd + R.

If only certain server members are encountering this issue, ensure they have access to the command. You can check this out by going in the "Integrations" page in your server's settings.

</details>

<details>

<summary>How to hide commands from certain channels or roles?</summary>

To hide commands from certain roles and channels, you can go to Server Settings > Integrations > Your Bot Integration. Select a command and add roles and channels. You can set them to visible or hidden.

</details>

<details>

<summary>How to get more / reset data storage?</summary>

The only way to increase the free limit of 500 data storage usages per month is by upgrading your bot(s) to premium from free. It is not possible to purchase or claim more than 500 data storage usages per month besides having premium. This automatically resets on the first day of every month and cannot be manually reset.

</details>

<details>

<summary>How do I make a bot that nukes the server?</summary>

Nuke / Raid bots are against Discord ToS (Terms of Service). We are unable to assist in creating / advising users to create functions, commands and events that are in breach of Discord's Terms of Services.

</details>

<details>

<summary>Does BotGhost have a YouTube channel / tutorials?</summary>

You can view all tutorials and videos on our [YouTube channel](https://youtube.botghost.com).

</details>

<details>

<summary>How do I make my image to a link so I can use it as welcome banner?</summary>

To set a background, use the link of your image in the module settings. It is not possible to upload an image as a file on BotGhost.

Here are some steps how to convert an image into a link:

1. Find an "image to link" converter on the Internet. For example: [Imgur](https://imgur.com/upload)
2. Upload your image to the site you found.
3. Copy the link they give you.
4. Paste this link into your BotGhost module.

</details>

<details>

<summary>Who is the creator of BotGhost?</summary>

Tomtoise is the founder and main developer of BotGhost.

</details>

<details>

<summary>How can I calculate something in my custom command?</summary>

To calculate something in your custom command, you can use the "Run Equation on Variable" action in the Command Builder. This action allows you to run any equation on the value of a custom variable.

You can use the `{solve_equation[EQUATION]}` variable built into BotGhost if you don't need to save it directly. Replace "1+1" with the equation you want to solve. Your bot will automatically replace the variable with the equation result.

</details>

## BotGhost Server FAQs

All questions below are related to our [Discord server](https://discord.gg/botghost).

<details>

<summary>Where can I claim my premium role?</summary>

To claim your Premium Role, navigate to [this message](https://discord.com/channels/822426820447567872/822874663196688404/1432888957477322774) and click the "Get Premium Roles" button, which will automatically grant you the appropriate roles if you are eligible. Only users who have purchased a subscription or have won a subscription from a giveaway or event can claim the premium role.

*Free premium users cannot claim this role.*

</details>

<details>

<summary>How can I appeal a server ban?</summary>

To appeal any server mutes or bans taken against your account, please head over to our dedicated [appeals server](https://discord.gg/jzRWvKR92k.). Once you’ve joined, you can submit an appeal to have your case reviewed by our moderation team.

</details>

<details>

<summary>How to join the CS (Community Support) team?</summary>

If you’re interested in joining the Community Support team, keep an eye on the Applications Channel. Any future opportunities will be posted there whenever we are looking for new members to join the team.

</details>

<details>

<summary>How can I report BotGhost server staff?</summary>

To report BotGhost staff members, please open a Modmail thread by visiting the embed at [this link](https://discord.com/channels/822426820447567872/1439813606962106512) and selecting the option to contact our Server Staff Team.&#x20;

</details>

<details>

<summary>What are the boosting perks?</summary>

You can learn about this server's boosting perks [here](https://discord.com/channels/822426820447567872/879733469452836864/1090254854410227792). Please note that boosting the server does *not* award you with premium.

</details>

<details>

<summary>How do I become moderator?</summary>

The Moderation Team is tasked with upholding enforcing the server rules. You can join the team by applying for a moderator position. Opportunities typically arise every few months based on the server's requirements. Keep an eye on the Applications channel. Any future opportunities will be posted there whenever we are looking for new members to join the team.

</details>

<details>

<summary>How can I become Manager?</summary>

Managers are hand-picked by the Staff Team based on experience and performance; you cannot apply directly for these positions. However, you can apply to join the Community Support or Moderation teams whenever opportunities arise.

</details>

<details>

<summary>How can I form an affiliation or partnership with BotGhost?</summary>

You can check out the Affiliate Program here: <https://botghost.com/affiliate>

</details>


# Priority Hosting

Check the following hyperlinks for quick support regarding your priority hosting subscription.

Priority Hosting is designed primarily for larger bot developers with bots in thousands of servers who need enterprise-grade performance and reliability.&#x20;

The specialized infrastructure of priority hosting ensures your high-traffic bots receive the dedicated resources, processing power, and reliability needed to serve large communities — without performance degradation.

{% hint style="info" %}
Please keep in mind that Priority Hosting is not the same as [Premium](/premium/our-premium-features)!
{% endhint %}

## Priority Hosting Features

| Feature                                         |              Free / Premium             |                     Priority                    |
| ----------------------------------------------- | :-------------------------------------: | :---------------------------------------------: |
| Create Unlimited Bots                           | <mark style="color:green;">**✔**</mark> |     <mark style="color:green;">**✔**</mark>     |
| 24/7 Hosting                                    | <mark style="color:green;">**✔**</mark> |     <mark style="color:green;">**✔**</mark>     |
| Server pods                                     |                1–2k bots                | <mark style="color:green;">**\~10 bots**</mark> |
| Button / Menu Retention                         |                 30 days                 |  <mark style="color:green;">**365 days**</mark> |
| Monthly Q\&As with staff/founder                |                    ❌                    |     <mark style="color:green;">**✔**</mark>     |
| Early access to features via alpha.botghost.com |                    ❌                    |     <mark style="color:green;">**✔**</mark>     |
| Priority bug fixes and feedback influence       |                    ❌                    |     <mark style="color:green;">**✔**</mark>     |
| Real-time downtime and maintenance alerts       |                    ❌                    |     <mark style="color:green;">**✔**</mark>     |

## Priority Hosting Links

For all information about our available payment methods, subscriptions and refund and cancellation policies, check out our [Help Center](https://help.botghost.com/support/home).

{% hint style="info" %}
Should you have any questions about BotGhost's billing or subscription, please check out our [Help Center](https://help.botghost.com/support/home).
{% endhint %}


# Our Premium Features

View a list of features you can access with a BotGhost Premium subscription.

With a Premium Subscription you can access many exclusive BotGhost features, including removed limits, customized branding, and unlocked modules. These features will allow you to customize your bot with great potential and possibility. Below you can find information about some of these exclusive features.

## General Bot Features

| Feature                                              |                   Free                  |                         Premium                         |
| ---------------------------------------------------- | :-------------------------------------: | :-----------------------------------------------------: |
| Create Unlimited Bots                                |                    1                    |         <mark style="color:green;">**✔**</mark>         |
| Servers                                              |             Up to 5 servers             | <mark style="color:green;">**Unlimited servers**</mark> |
| 24/7 Hosting                                         | <mark style="color:green;">**✔**</mark> |         <mark style="color:green;">**✔**</mark>         |
| [Beta Features Access](/premium/beta-features)       |                    ❌                    |         <mark style="color:green;">**✔**</mark>         |
| [Collab](/general-settings-and-collaboration/collab) | <mark style="color:green;">**✔**</mark> |         <mark style="color:green;">**✔**</mark>         |
| [Status](/general-settings-and-collaboration/status) |                    ❌                    |         <mark style="color:green;">**✔**</mark>         |

## Commands & Events

| Module                                                                                 |               Free Access               |                      Premium Access                      |
| -------------------------------------------------------------------------------------- | :-------------------------------------: | :------------------------------------------------------: |
| [Custom Commands](/custom-commands-and-events/command-and-event-builder)               |             Up to 3 commands            | <mark style="color:green;">**Unlimited commands**</mark> |
| [Custom Events](/custom-commands-and-events/command-and-event-builder)                 |              Up to 3 events             |  <mark style="color:green;">**Unlimited events**</mark>  |
| [Timed Events](/custom-commands-and-events/events/timed-events)                        | <mark style="color:green;">**✔**</mark> |          <mark style="color:green;">**✔**</mark>         |
| [Data Storage](/custom-commands-and-events/data-storage)                               |        Up to 500 calls per month        |   <mark style="color:green;">**Unlimited usage**</mark>  |
| [Webhooks](/custom-commands-and-events/events/webhooks)                                | <mark style="color:green;">**✔**</mark> |          <mark style="color:green;">**✔**</mark>         |
| [IFTTT](/custom-commands-and-events/ifttt)                                             | <mark style="color:green;">**✔**</mark> |          <mark style="color:green;">**✔**</mark>         |
| [Transcripts](/custom-commands-and-events/actions/message-actions/create-a-transcript) | <mark style="color:green;">**✔**</mark> |          <mark style="color:green;">**✔**</mark>         |
| [Music Actions](/custom-commands-and-events/actions/music-actions)                     |                    ❌                    |          <mark style="color:green;">**✔**</mark>         |
| Add Commands & Events in Supported Modules                                             |                    ❌                    |          <mark style="color:green;">**✔**</mark>         |
| Edit Commands & Events in Supported Modules                                            |             Limited Changes             |          <mark style="color:green;">**✔**</mark>         |

## Server Management

| Module                                                                                  |               Free Access               |                 Premium Access                 |
| --------------------------------------------------------------------------------------- | :-------------------------------------: | :--------------------------------------------: |
| [Modmail](/server-management/modmail)                                                   |                    ❌                    |     <mark style="color:green;">**✔**</mark>    |
| [Verification](/server-management/verification)                                         |                    ❌                    |     <mark style="color:green;">**✔**</mark>    |
| [Discord Automod](/server-management/discord-automod)                                   |                    ❌                    |     <mark style="color:green;">**✔**</mark>    |
| [Auto-React](/server-management/auto-react)                                             |                    ❌                    |     <mark style="color:green;">**✔**</mark>    |
| [Sticky Roles](/server-management/sticky-roles)                                         |                    ❌                    |     <mark style="color:green;">**✔**</mark>    |
| [Statistic Channels](/server-management/statistic-channels)                             |                    ❌                    |     <mark style="color:green;">**✔**</mark>    |
| [Welcomer](/server-management/welcomer)                                                 | <mark style="color:green;">**✔**</mark> |     <mark style="color:green;">**✔**</mark>    |
| [Welcomer - Welcome Card](/server-management/welcomer#welcome-card)                     |                    ❌                    |     <mark style="color:green;">**✔**</mark>    |
| [Emoji Manager](/server-management/emoji-manager)                                       |                    ❌                    |     <mark style="color:green;">**✔**</mark>    |
| [Polls Filter](/server-management/polls-filter)                                         | <mark style="color:green;">**✔**</mark> |     <mark style="color:green;">**✔**</mark>    |
| [Moderation](/server-management/moderation)                                             | <mark style="color:green;">**✔**</mark> |     <mark style="color:green;">**✔**</mark>    |
| [Moderation - Auto-Punishments](/server-management/moderation#auto-punishment-settings) |                 Up to 1                 | <mark style="color:green;">**Up to 10**</mark> |
| [Tickets](/server-management/tickets)                                                   | <mark style="color:green;">**✔**</mark> |     <mark style="color:green;">**✔**</mark>    |
| [Tickets - Panels](/server-management/tickets#panels)                                   | <mark style="color:green;">**✔**</mark> | <mark style="color:green;">**Up to 50**</mark> |
| [Tickets - Transcripts](/server-management/tickets#transcripts)                         | <mark style="color:green;">**✔**</mark> | <mark style="color:green;">**Up to 50**</mark> |
| [Tickets - Connected Panels](/server-management/tickets#connected-panels)               |                    ❌                    |     <mark style="color:green;">**✔**</mark>    |
| Tickets - Advanced Features                                                             |                    ❌                    |     <mark style="color:green;">**✔**</mark>    |

## Messages

| Module                                       |               Free Access               |                     Premium Access                    |
| -------------------------------------------- | :-------------------------------------: | :---------------------------------------------------: |
| [Reaction Roles](/messages/reaction-roles)   |              Up to 3 slots              |  <mark style="color:green;">**Up to 30 slots**</mark> |
| [Global Chat](/messages/global-chat)         |                    ❌                    |        <mark style="color:green;">**✔**</mark>        |
| [Polls](/messages/polls)                     |                    ❌                    |        <mark style="color:green;">**✔**</mark>        |
| [Media Channels](/messages/media-channels)   |                    ❌                    |        <mark style="color:green;">**✔**</mark>        |
| [Timed Messages](/messages/timed-messages)   |              Up to 2 slots              |  <mark style="color:green;">**Up to 20 slots**</mark> |
| [Autoresponder](/messages/autoresponder)     |              Up to 3 slots              | <mark style="color:green;">**Up to 100 slots**</mark> |
| [Sticky Messages](/messages/sticky-messages) |                    ❌                    |        <mark style="color:green;">**✔**</mark>        |
| [Embed Builder](/messages/embedbuilder)      | <mark style="color:green;">**✔**</mark> |        <mark style="color:green;">**✔**</mark>        |

## AI

| Module                                   | Free Access |              Premium Access             |
| ---------------------------------------- | :---------: | :-------------------------------------: |
| [ChatGPT](/ai/chatgpt)                   |      ❌      | <mark style="color:green;">**✔**</mark> |
| [Image Generation](/ai/image-generation) |      ❌      | <mark style="color:green;">**✔**</mark> |

## Game Integrations

| Module                                                        | Free Access |              Premium Access             |
| ------------------------------------------------------------- | :---------: | :-------------------------------------: |
| [Roblox Verification](/game-integrations/roblox-verification) |      ❌      | <mark style="color:green;">**✔**</mark> |

## Community Engagement

| Module                                                                      |               Free Access               |                  Premium Access                 |
| --------------------------------------------------------------------------- | :-------------------------------------: | :---------------------------------------------: |
| [Starboard](/community-engagement/starboard)                                |                    ❌                    |     <mark style="color:green;">**✔**</mark>     |
| [Leveling](/community-engagement/leveling)                                  | <mark style="color:green;">**✔**</mark> |     <mark style="color:green;">**✔**</mark>     |
| [Leveling - Level Card](/community-engagement/leveling#level-card-settings) |                    ❌                    |     <mark style="color:green;">**✔**</mark>     |
| [Leveling - Voice XP](/community-engagement/leveling#voice-xp-settings)     |                    ❌                    |     <mark style="color:green;">**✔**</mark>     |
| [Leveling - Role Rewards](/community-engagement/leveling#role-rewards)      |                 Up to 3                 | <mark style="color:green;">**Up to 100**</mark> |
| [Leveling - XP Boosters](/community-engagement/leveling#xp-boosters)        |                 Up to 1                 | <mark style="color:green;">**Up to 100**</mark> |
| [Temp Voice Channels](/community-engagement/temp-voice-channels)            |                    ❌                    |     <mark style="color:green;">**✔**</mark>     |
| [Invite Tracker](/community-engagement/invite-tracker)                      |                    ❌                    |     <mark style="color:green;">**✔**</mark>     |
| [Suggestions](/community-engagement/suggestions)                            |                    ❌                    |     <mark style="color:green;">**✔**</mark>     |
| [Question Of The Day](/community-engagement/question-of-the-day)            |                    ❌                    |     <mark style="color:green;">**✔**</mark>     |

## Fun

| Module                                                                                  |               Free Access               |                 Premium Access                 |
| --------------------------------------------------------------------------------------- | :-------------------------------------: | :--------------------------------------------: |
| [Counting](/fun-modules/counting)                                                       |                    ❌                    |     <mark style="color:green;">**✔**</mark>    |
| [Economy & Minigames](/fun-modules/economy-and-minigames)                               | <mark style="color:green;">**✔**</mark> |     <mark style="color:green;">**✔**</mark>    |
| [Economy & Minigames - Economy Roles](/fun-modules/economy-and-minigames#economy-roles) |                 Up to 1                 | <mark style="color:green;">**Up to 10**</mark> |
| [Birthdays](/fun-modules/birthdays)                                                     | <mark style="color:green;">**✔**</mark> |     <mark style="color:green;">**✔**</mark>    |
| [Birthdays - Birthday Card](/fun-modules/birthdays#birthday-card)                       |                    ❌                    |     <mark style="color:green;">**✔**</mark>    |
| [Music](/fun-modules/music)                                                             |                    ❌                    |     <mark style="color:green;">**✔**</mark>    |

## Utilities

| Module                              |               Free Access               |              Premium Access             |
| ----------------------------------- | :-------------------------------------: | :-------------------------------------: |
| [Translation](/utility/translation) |                    ❌                    | <mark style="color:green;">**✔**</mark> |
| [Weather](/utility/weather)         | <mark style="color:green;">**✔**</mark> | <mark style="color:green;">**✔**</mark> |

This page is for informational purposes only, and the listed information may be inaccurate or out of date. No rights are associated with the information provided on this page.

{% hint style="info" %}
Should you have any questions about BotGhost's billing or subscription, please check out our [Help Center](https://help.botghost.com/support/home).
{% endhint %}


# Premium & Priority Hosting Plans

The following Payment Methods can be used to purchase a Premium subscription

## Premium & Priority Hosting Plans

We have several different subscription plans for you to choose from to match your expectations and preferences. You can buy a premium or priority hosting subscription by clicking on the 'Premium' and 'Priority Hosting' page in the left menu on the [BotGhost dashboard](https://dashboard.botghost.com/dashboard).

### <mark style="color:red;">Single Bot Subscriptions</mark> <a href="#single-bot-pricing" id="single-bot-pricing"></a>

The Single Bots Package provides you with **one premium token** that can be used to upgrade **one** of BotGhost's bots to the premium version. This subscription is availble in both monthly and yearly.

<mark style="color:red;">**Monthly Single Bot**</mark> - The Monthly Single Bot subscription is billed monthly, and grants you access to BotGhost's premium features to one bot as long as the subscription is not cancelled.

<mark style="color:red;">**Yearly Single Bot**</mark> - The Yearly Single Bot subscription is billed yearly, and grants you access to BotGhost's premium features to one bot as long as the subscription is not cancelled.

### <mark style="color:yellow;">Unlimited Bots Subscriptions</mark>

The **Unlimited** Bots Package provides you with an **infinite number of premium tokens** that can be used to upgrade any of BotGhost bots to the premium version. This subscription is availble in both monthly and yearly.

<mark style="color:yellow;">**Monthly Unlimited Bots**</mark> - The Monthly Unlimited Bots plan is billed monthly, and grants you access to BotGhost's premium features to all your bots as long as the subscription is not cancelled.

<mark style="color:yellow;">**Yearly Unlimited Bots**</mark> - The Yearly Unlimited Bots plan is billed yearly, and grants you access to BotGhost's premium features to all your bots as long as the subscription is not cancelled.

### <mark style="color:blue;">Priority Hosting</mark>

Priority hosting upgrades your entire bot fleet to our exclusive high-performance servers with enhanced features and VIP community access. Ideal for serious developers with bots in thousands of servers requiring enterprise-grade reliability available in both monthly and yearly.&#x20;

<mark style="color:blue;">**Monthly Priority Hosting**</mark> - The Monthly Priority Hosting plan is billed monthly, and grants you access to BotGhost's priority hosting features to all your bots as longas  the subscription is not cancelled.&#x20;

<mark style="color:blue;">**Yearly Priority Hosting**</mark> - The Yearly Priority Hosting plan is billed yearly, and grants you access to BotGhost's priority hosting features to all your bots as long as the subscription is not cancelled.&#x20;

{% hint style="warning" %}
Prices can be found on the 'Premium' and 'Priority Hosting' page in the left menu on the [BotGhost dashboard](https://dashboard.botghost.com/dashboard) and may vary over time. All available plans are listed in USD; any other currency will be automatically converted during the checkout process. Your bank or the payment method you're using is responsible for the exchange rate and possible additional fees. Contact your bank or the payment service you're using for more information on this.
{% endhint %}

{% hint style="info" %}
Should you have any questions about BotGhost's billing or subscription, please check out our [Help Center](https://help.botghost.com/support/home).
{% endhint %}


# Upgrade Your Bot

Not able to figure out how you can upgrade your bot to premium? Below you can find the instructions!

## How to upgrade your bot

### *<mark style="color:yellow;">Premium Subscriptions purchased post (after) March 15th 2025:</mark>*&#x20;

**Just upgraded to a premium subscription? Awesome!**\
All the bots on your account have been automatically upgraded, no extra steps needed. Just refresh your browser, and start enjoying all the premium features of BotGhost!

{% hint style="info" %}
**The following bots are not upgraded:**

* Bots that are already upgraded with premium
* Bots that you are a collaborator of. Only bots created on your BotGhost account can be upgraded with your Premium subscription.&#x20;
  {% endhint %}

{% hint style="info" %}
Should you have any questions about BotGhost's billing or subscription, please check out our [Help Center](https://help.botghost.com/support/home).
{% endhint %}

### *<mark style="color:red;">Premium subscriptions purchased pre (before) March 15th, 2025</mark>:*

{% hint style="info" %}
The following bots **can't** be upgraded:

* Bots that are already upgraded with premium,
* Bots that you are a collaborator of. You can only upgrade the bots on your BotGhost account.

If your bot is upgraded with premium, you must wait till this runs out to use your (other) premium subscription.&#x20;
{% endhint %}

Just purchased a premium subscription and want to upgrade your bot? Follow these steps to upgrade your bot:

{% stepper %}
{% step %}
First, you'll need to locate your [BotGhost Dashboard settings](https://btghst.info/settings) in order to upgrade your bot:&#x20;

![](/files/j53nvJDATDYklbyHSJxM)
{% endstep %}

{% step %}
At the top of your settings page, you should see an orange box with the message 'Premium Tokens Available'. To activate premium on that specific bot, press the 'Upgrade Bot' button! &#x20;

![Note: Ensure you've selected the right bot before interacting with this button](/files/1pra9qxTTjp1eyCIL8Yg)
{% endstep %}
{% endstepper %}

## Experiencing issues with upgrading your bot

**W**e're sorry to hear that you are experiencing this issue. Please contact us via our [Help Center](https://help.botghost.com/support/home). We're happy to assist you further!

{% hint style="info" %}
Should you have any questions about BotGhost's billing or subscription, please check out our [Help Center](https://help.botghost.com/support/home).
{% endhint %}


# Beta Features

Are you interested in testing our newest features? Read here how you can turn on beta features!

{% hint style="warning" %}
An active [Premium](/premium/premium-and-priority-hosting-plans#premium-plans) subscription is required in order to enable Beta Features.&#x20;
{% endhint %}

## How to enable beta features?

{% stepper %}
{% step %}
First, you'll need to locate your [BotGhost Dashboard settings](https://btghst.info/settings) in order to enable this feature:&#x20;

![](/files/ISPcj58OHNKm2Y3jZvMU)
{% endstep %}

{% step %}
Once you've entered the settings page, scroll down till you see the 'Bot Options' section. Underneath the 'Restart Bot' tab there's an option called 'Enable Beta Features'. Click on the toggle till it's orange to enable beta features for your bot.

<div align="right"><img src="/files/Skq3jnmm99oqmoXCxgKD" alt=""></div>
{% endstep %}
{% endstepper %}

## What is beta?

Once enabled, your bot will be connected to the BotGhost beta servers and you will get early access to newly released features before anyone else does.&#x20;

**Note:** These features are stable but still require user testing so you may experience bugs and lag during use. You can always turn this setting off in case you're no longer interested.&#x20;

## When are beta features announced?

Newly released beta features will always be announced via our [Discord server](https://discord.gg/botghost) first, but you'll have access to them straight away. You can also report bugs through our #bugs channel in our Discord server and share feedback with our developers!

{% hint style="danger" %}
As beta features is solely for beta additions to BotGhost, you may experience bugs and performance issues while beta mode is enabled. You can disable beta features at any time via the [settings page](https://dashboard.botghost.com/dashboard/settings) on the bots dashboard.
{% endhint %}


# Settings

Your Bots Settings and Presence

The [settings](https://dashboard.botghost.com/dashboard/settings) page in the dashboard allows you to manage your bot's general settings, view and update them. Below you may find some information on each section of the page

## Bot Settings

<figure><img src="/files/Gwe073PPK4NmATKwh5Sm" alt=""><figcaption></figcaption></figure>

These are the general settings of your bot, that determine how your bot's profile appears.

#### Bot Name

This shows your bot's display name. You can this field to update the bot's display name. Preferences are saved automatically: you don't need to click on "Save changes" when updating it. This can also be updated from the [Discord Developer Portal](https://discord.com/developers/applications).

#### Bot Avatar

Here you can update your bot's icon. Click on the "Choose file" button to pick a file from your files archive and upload it to BotGhost. Preferences are saved automatically: you don't need to click on "Save changes" when updating it. This can also be updated from the [Discord Developer Portal](https://discord.com/developers/applications).

#### \[👑] Set Status Message

Update your bot's status to one of your liking. This requires a premium subscription.

## Bot Options

<figure><img src="/files/uksIbQaK2SrCQf8mMyFm" alt=""><figcaption></figcaption></figure>

#### Bot Token

This field contains the token of the bot and allows you to change it if you regenerated it from the [Discord Developer Portal](https://discord.com/developers/applications). Preferences are saved automatically: you don't need to click on "Save changes" when updating it.&#x20;

#### Bot Status

This allows you to Stop or Start the bot. You can also see the current online status (Online/Offline)

#### Restart Bot

The "Restart bot" button allows you to quickly stop and start your bot again. You may use it if you're experiencing issues with the bot.

#### Remove Bot

This button allows you to permanently delete your bot and its connected data. **This action is irreversible and cannot be undone.**

#### \[👑] Enable Beta Features

Enable this option to enable beta features on your bot. Note that some of these features may be unstable, since they're still under a testing phase. If you're experiencing issues, consider disabling this option. This option is available only to premium users, see [Beta Features](/premium/beta-features) for more info. Preferences are saved automatically: you don't need to click on "Save changes" when updating it.

## Account Options

<figure><img src="/files/60I7A7eGfO8qmRnbzWqN" alt=""><figcaption></figcaption></figure>

#### Log Out

Logs you out from your current Discord account. You may use it if you want to switch accounts and use another one.

## Top.gg Integration

<figure><img src="/files/kfUvbJsaYAp9tMBW45W6" alt=""><figcaption></figcaption></figure>

#### Top.gg Token

This setting will automatically post your bot's stats to Top.gg if it has been provided with the token from your Top.gg Dashboard.

## Privileged Intent Options

<figure><img src="/files/H4xSwNPbpNAREBnrMT7D" alt=""><figcaption></figcaption></figure>

Your bot requires certain permissions in order to work as intended. These permissions can be granted to your bot from the [Discord Developer Portal](https://discord.com/developers/applications) in the "Bot" section.

<figure><img src="/files/KvFMZMzngl7phxNINCiW" alt=""><figcaption></figcaption></figure>

By default, BotGhost automatically sets all intents to "Auto" to automatically adapt them basing on what your bot needs to run. If you however want to force enable / disable one or more of them, you can do that here. For example, you can set the "Server Members Intent" to "Always Disable", allowing you to disable it on the Discord Developer Portal. If this change stops your bot from running, this means the bot requires this intent to work, and you should turn it back on.

Below, you may find some information on each intent.

| Intent                                             | Details                                                                                                                                                                          |
| -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <h4>Presence Intent - GUILD\_PRESENCES</h4>        | Allows the bot to receive presence updates. For example, when the status of a user changes.                                                                                      |
| <h4>Server Members Intent - GUILD\_MEMBERS</h4>    | Allows your bot to receive updates on your server members. For example, when an user joins or leaves the server (which makes this intent required for welcome / leave messages). |
| <h4>Message Content Intent - MESSAGE\_CONTENT</h4> | Allows your bot to read messages on your server. For example, you need this intent if you're using the Autoresponder module.                                                     |

All intents can be updated to the following states:

| State         | Details                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Auto          | <p>BotGhost automatically determines if the intent is required for yout bot to work.<br>Note that this only checks if there are any enabled modules or events that require this intent. Variables like <code>{Member.presence}</code> (check out the <a href="/pages/554dHNXfQ4jOP5NQDsmp#member-variable">Member Object</a> page for more information) require you to manually set the intent to "Always Enable", unless you already have one or more events that make use of the required intent.</p> |
| Always Enable | Set the intent's state this option if you want the selected intent to always be required for your bot.                                                                                                                                                                                                                                                                                                                                                                                                  |
| Never Enable  | Pick this option if you want the intent to never be enabled on your bot.                                                                                                                                                                                                                                                                                                                                                                                                                                |

{% hint style="danger" %}
Disabling certain privileged intents will cause some bot functions to not work correctly. Update them at your own risk.
{% endhint %}

## Subscription Options

<figure><img src="/files/eY84JbfT2BrHPjUkcNNu" alt=""><figcaption></figcaption></figure>

Here you may view your subscriptions information and update them on the Chargebee portal by clicking on the "Manage Subscription" button. See [Broken mention](broken://pages/cQdnEMSzuV3PbVYTt4l4) for more info.

## Claim a Premium Code

<figure><img src="/files/CS1m0vYgRzJCBEvArlTC" alt=""><figcaption></figcaption></figure>

If you received one, you may claim the premium code from this section. Make sure you're on the correct bot before claiming it. If it's a `GIFT` code, headover to the [Gifting](https://dashboard.botghost.com/dashboard/gifting) page instead and claim it here.


# Collab

With these features, you can invite others to edit and work on your bot.

## Before Using this Feature!

{% hint style="danger" %}
**MULTIPLE USERS (TWO OR MORE)&#x20;**<mark style="color:red;">**CANNOT**</mark>**&#x20;WORK ON A BOT SIMULTANEOUSLY.** \
\
If a user with an older version of the dashboard saves their changes, it will override the previously saved version. We can't revert the lost progress if this happens!
{% endhint %}

{% hint style="warning" %}
**Premium users&#x20;**<mark style="color:red;">**cannot**</mark>**&#x20;use their premium tokens to upgrade bots created on other accounts.** \
\
Premium users can't use their subscription to upgrade a bot they are a collaborator to. This is to prevent users from selling BotGhost bots, which is against our [***terms of service***](https://botghost.com/tos).
{% endhint %}

## Collaborations

Using Collab, known as co-create by older members of BotGhost, you can invite others (collaborators) to edit and work on your bot. This feature can be used to grant the admins,  co-owners, or anyone else access to the bot. Collaborators don't need a BotGhost account to accept an invite link.

## Amount of Collaborators

All BotGhost users, both free and Premium, can invite an unlimited number of collaborators to any bot they have.

## Limitations of Collaborators

Collaborators can't:\
\- Delete the bot\
\- View or change the bot's token\
\- Manage the bot's Premium subscription\
\- Access the Collaboration page

## Invite Link

You can create an invite link to invite collaborators to your bot. You can either 'Copy' the current invite URL or 'Generate' a new one. When you regenerate the invite URL, the old one will become invalid and unusable. Collaborators invited with the old URL will not be removed when the URL is regenerated.

<figure><img src="/files/qUSVa3YQ3ocSGRRvhrSN" alt=""><figcaption></figcaption></figure>

## Collaborators

You can see who can currently edit your bot as a collaborator. Use the 'Remove' button to remove a collaborator. Once removed, the collaborator can no longer access the bot from their dashboard, unless they use the (new) invite link again.&#x20;

This tab **only shows** collaborators for your currently selected bot. You can switch bots using the menu in the top left corner of your dashboard.

{% hint style="info" %}
Anyone using the current invite URL can join/rejoin as a collaborator, even if you've removed them earlier.&#x20;
{% endhint %}

<figure><img src="/files/duqovpjKVR4cEd2Smsc3" alt=""><figcaption></figcaption></figure>

## Bot Collaborations

You can see which bots you are a collaborator on. Use the 'Leave' button to remove a bot from your dashboard. Once removed, you can no longer access the bot, unless you accept the invite URL of the bot again.&#x20;

<figure><img src="/files/2P09QlIFgeweiHyFbceo" alt=""><figcaption></figcaption></figure>

{% hint style="danger" %}
Users granted access to your bot can do everything you can do on your bot, *except for a few limitations listed at the top of this page*. Ensure you do not grant access to people you don't trust! \
\
We can't revert changes made by collaborators to your bot's features or settings. Use this module at your own risk.
{% endhint %}


# Status

Change the "Listening to 👻 Made with BotGhost.com 👻" status to something of your own!

<figure><img src="/files/hzNZeJgmg1eOIWTkuL5q" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
This module requires a [Premium Subscription](/premium/premium-and-priority-hosting-plans#premium-plans) to function.
{% endhint %}

The [Status module](https://dashboard.botghost.com/dashboard/module/42056fd5-1c1d-4f89-8db7-794fe732424c/status) allows you to change the status on your bot to something of your own. You can also configure a command that allows you to change it directly from your server.

## Settings

### Status Mode and Settings

<figure><img src="/files/tG1bBDrdHLf3c4BNukTE" alt=""><figcaption></figcaption></figure>

#### Status Mode

This setting allows you to set the status mode you prefer. Below you may find some information on each mode.

{% tabs %}
{% tab title="Disabled" %}
When selecting this option, the status of the bot will be disabled, and no status will be shown in the bot's profile.

<figure><img src="/files/bMiUjMyduRt9HczM0LHK" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Fixed" %}
The fixed option allows you to set your bot's status in a fixed state, which means it will always remain the same until changed from the dashboard.

<figure><img src="/files/egwgDnQcFovh4gtVxFSB" alt=""><figcaption></figcaption></figure>

#### Status Type

This setting allows you to set the status type. You can set it to "Listening", "Playing" or "Watching".

<figure><img src="/files/xGcFhTkC09H0CwYt5MsG" alt=""><figcaption></figcaption></figure>

#### Status Text

Here, you can set your own custom text for the status, and will appear right next to the selected status type.

<figure><img src="/files/hw5fhCvaiKaRmcAQxzr2" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Rotating" %}
The Rotating mode allows the bot to cycle through several statuses in the order they were added at a specified duration.

<figure><img src="/files/QhuG4o2TnoPXhg9hIJVS" alt=""><figcaption></figcaption></figure>

### Adding Rotating Statuses

Once you set the status mode to "Rotating" a new menu will appear, allowing you to setup up to 100 rotating statuses. Below you can find all available settings.

<figure><img src="/files/wIMRceqgd9CZG3aGtf5N" alt=""><figcaption></figcaption></figure>

#### Status Duration

The status duration field allows you to input the time in seconds you want the status to show in the bot's profile. The minimum duration is 30 seconds, and the maximum is 86400 seconds (1 day)

<figure><img src="/files/OK3rimird9xferxHkSie" alt=""><figcaption></figcaption></figure>

#### Remove Status

Here you may toggle whether the bot will have a status/presence showing during this status rotation. Turn the option on to remove the status.

<figure><img src="/files/6qhvWgpBXAGR4uv9eSGz" alt=""><figcaption></figcaption></figure>

#### Status Type

This setting allows you to set the status type. You can set it to "Listening", "Playing" or "Watching".

<figure><img src="/files/TfBiDp4kd1NbLqL4mnRM" alt=""><figcaption></figcaption></figure>

#### Status Text

Here, you can set your own custom text for the status, and will appear right next to the selected status type.

<figure><img src="/files/x533pcso7tJA1G5GuccQ" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
To save the rotating status's settings, you need to click "Add" in the bottom-right corner of the settings. This will reset the fields so you can set up another rotating status.
{% endhint %}

### Viewing Active Rotating Statuses

You can edit all active rotating statuses through a list right below the menu.

{% hint style="info" %}
To save the edits you made on the rotating status's settings, you need to click "Edit" in the bottom-right corner of the settings.
{% endhint %}

<figure><img src="/files/MJXcyagtH7p7CHzQAc6B" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Command" %}
This mode enables a `/status` command that can be used in your server to update the status of your bot.

#### Embeds Color

This setting allows you to customize the color of responses of the bot.

<figure><img src="/files/Ez0RrD6E5gjTJSsee8Rq" alt=""><figcaption></figcaption></figure>

#### Status Command Channel Restrictions

You can setup channel restrictions to allow the usage of the `/status` command only in certain channels.

| Blacklist Type                | Information                                                                                                             |
| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| No channel restrictions       | Set this blacklist type if you want the command to work in all channels.                                                |
| Disable for these channels... | Set this blacklist type if you want the command to work in all channels except the channels provided in the menu below. |
| Enable for these channels...  | Set this blacklist type if you want the command to work only in the channels provided in the menu below.                |

<figure><img src="/files/Uy8ZB7UFzT3mi7HkjkZW" alt=""><figcaption></figcaption></figure>

#### Status Command Role Restrictions

You can setup role restrictions to allow the usage of the `/status` only to certain roles.

| Blacklist Type             | Information                                                                                                                                    |
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| No role restrictions       | Set this blacklist type if you want everyone to be able to use this command.                                                                   |
| Disable for these roles... | Set this blacklist type if you want the command to work for all users, except users with at least one of the roles provided in the menu below. |
| Enable for these roles...  | Set this blacklist type if you want the command to work only for users with at least one of the roles provided in the menu below.              |

<figure><img src="/files/dfL6PwpybfED29SBkSfi" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

***

## Commands

In this area, you can view and modify the commands of the Status module. Below you may find some information on each command of the module.

<figure><img src="/files/yFieXKwlYtyGJPuIY9m4" alt=""><figcaption></figcaption></figure>

<details>

<summary>/status</summary>

The `/status` command allows you to update or reset the status of the bot from your Discord server. The "Command" mode is required to be enabled in the settings page of the module.

![](/files/M30NFsXVVBqE5keUtMOO)

</details>

## Events

In this area, you can view and modify the events of the Status module. Below you may find some information on each event of the module.

<figure><img src="/files/U1HjCdCE9hsONoIiZADn" alt=""><figcaption></figcaption></figure>

<details>

<summary>Restarts Handler</summary>

This event updates the status of the bot when it is restarted.

</details>

<details>

<summary>Updates Handler</summary>

This event makes sure the status is updated when changes are saved or the status is updated through the dashboard.

</details>

<details>

<summary>Rotating Status Handler</summary>

This timed event allows the rotating status feature to work as intended and update the status when the set time has passed. Make sure to not delete the associated timed event in the [timed events](/custom-commands-and-events/events/timed-events) module.

</details>

***

{% hint style="danger" %}
It's advised that you do not edit the commands and events unless you have a good understanding of BotGhost and its Command Builder. If you encounter any issues, you might want to reset the module for it to work again as intented.

Additionally, a copy of the edited commands / events will be created if you update the module.
{% endhint %}


# Marketplace

Get the perfect commands for your server, already built for you.

{% hint style="info" %}
Make sure to always follow the marketplace guidelines while using the website. You can check all the marketplace guidelines [here](https://botghost.com/market/guidelines).
{% endhint %}

## What is BotGhost Marketplace?

BotGhost Marketplace is a service for sharing and importing custom BotGhost commands and bots. With the BotGhost marketplace, you can now find the commands you need faster than ever before. You can additionally share your hard-made custom commands with others to import into their own bots.

## Add Commands with Marketplace

#### Step 1. Select a Command

On the [BotGhost Marketplace](https://botghost.com/market) page, click the top right **Add Command**. Once on the add command page, you will get a drop-down menu where you select a command you have made with your bot(s). It will show a list full of all of the custom commands you have made across all bots.

![](/files/7m5DrF5X4ogrzcGoKX97)

#### Step 2. Add Commands Details

**Select a Command:** Add a name for your command. This will be displayed on the main page and in the search bar. Ensure that the name of the command is related to its function. \
\
**Add Details:** Add a tagline for your command. This will be the 'short description' if displayed on the main page. It is best to include a short description of your command to entice users into viewing it. \
\
**Long Description:** Add a long description for your command. This will provide a detailed explanation of your command when someone views your command. It is best to include all the features of the commands to entice users to import your command. \
\
**Add Tags:** Add tags for your command. This is important to get more views on your command. Adding tags to your command will boost it being seen in the search and main page. This is one of the most important aspects of your commands to reach other users.

**Add Images:** Add images for your command. Show off your command in image form to all viewers to see, these images will need to be approved by a staff member! Make sure to keep all images following the [BotGhost Market Guidelines](https://botghost.com/market/guidelines).

## Edit Commands with Marketplace

If you have something you would like to change about your command, you can do this by editing your command. You can do this by doing the following:

1. Click your profile on the top right corner. This will direct you to your profile and list all the commands you've posted.&#x20;
2. Select the command you would like to edit and click the **Edit** button. Once in the edit page, you can change any setting of the command you would like.

## Delete Commands with Marketplace

If you do not like the command you've posted, you can always delete it. You can do this by doing the following:

1. Click your profile on the top right corner. This will direct you to your profile and list all the commands you've posted.&#x20;
2. Select the command you'd like to delete, click the **Edit** button. Once in the edit page, scroll down and you will see an option to remove the command.

## Import Commands with Marketplace

If you find a command you like on BotGhost Marketplace, you can do this by doing the following:

1. Select the command you would like to import and click the **Add Command** button.&#x20;
2. Once pressed the button, select which bot you would like the command to be added.
3. Congratulations! The command should have been added on your bot via Custom Command module. You can check via Dashboard.


# Command & Event Builder

Create your very own commands and events!

{% embed url="<https://youtu.be/lv7D-983yMU>" %}
Hint: Watch this video to find out how to use the command builder or follow the steps below:
{% endembed %}

The Custom [Commands](https://dashboard.botghost.com/dashboard/customcommands) & [Events](https://dashboard.botghost.com/dashboard/customevents) modules allow you to create custom commands or run actions when something happens on your server.&#x20;

## The "Tree" - Actions, Options and Conditions

When you have entered the command builder, you will be able to add and connect [actions](https://docs.botghost.com/custom-commands-and-events/actions) to the main yellow block. These actions will make your bot take actions (such as reply, set variables or send API Requests), they run in the order they are connected, starting at the yellow base block. You can also add [options](https://docs.botghost.com/custom-commands-and-events/options) to your command, they can be used to input values when using the command in Discord, they can be referred to as {option\_option-name}. [Conditions](https://docs.botghost.com/custom-commands-and-events/conditions) can be used to run different actions basing on the result of a comparison between two or more values, splitting the tree in more branches.

## The Sidebar

<div align="center" data-full-width="false"><figure><img src="/files/eMixfGVghTxD8CuGSer2" alt="" width="229"><figcaption></figcaption></figure></div>

The sidebar is the section of your builder that allows you to add blocks, variables to your tree or view or update information.

It consists of 6 sections: the first one, is dedicated to all [options](/custom-commands-and-events/options), [actions](/custom-commands-and-events/actions) and [conditions](/custom-commands-and-events/conditions) you can add to your tree. Variables allows you to view or edit your [custom variables](/custom-commands-and-events/data-storage) or create more. You can also check out all error logs in the Error Logs tab, represented by the red icon. The fourth section allows you to view the list of your commands or events while being in the command and event builder respectively. The timed events section allows you to, just like variables, view, edit and create [timed events](/custom-commands-and-events/events/timed-events). Last but not least, there's a section to view all your [templates](/custom-commands-and-events/command-and-event-builder/sharing-commands-and-events#templates).

## Connecting Blocks

### Desktop / PC

Simply press and hold the top circle on the action block to start the connection line, from here you can simply drag the connection line to the connection circle on the bottom of the block you wish to connect your action to, to complete the circuit and connect the blocks together.

<figure><img src="/files/mea3kCFJlWBP0ViPyPri" alt=""><figcaption></figcaption></figure>

### Mobile

Simply press the top circle on the action block to start the connection line, from here you can simply press the connection circle on the bottom of the block you wish to connect your action to, to complete the circuit and connect the blocks together.

<figure><img src="/files/4C75tSe9z75mDqP53zfr" alt=""><figcaption></figcaption></figure>

## Variables and Data storage

Variables are the first step in unlocking the ability for your bot to be better used in multi-server settings. Custom variables allow you to store data to be used by your bot through creating custom Global, Server Specific, Channel Specific or User specific variables. You can read more information about them in the [Variables](/custom-commands-and-events/variables) and [Data Storage](/custom-commands-and-events/data-storage) pages.

## Block Labels

When adding blocks to the command/event builder, you will notice every block has a setting called 'Label'. This will change the name of the block from its default name to something of your choice, this is incredibly handy for pointing out key parts of the command/event, or if you are working with multiple [Collab](/general-settings-and-collaboration/collab) users.&#x20;

<figure><img src="/files/qYddTbUGJSVGIzq2Udwt" alt=""><figcaption></figcaption></figure>

## More about the BotGhost Builder

<table><thead><tr><th data-type="content-ref">Page</th><th>Info</th></tr></thead><tbody><tr><td><a href="/pages/5BMrOzShdUde2LICJdut">/pages/5BMrOzShdUde2LICJdut</a></td><td>Learn how to share commands or copy trees across your commands and events!</td></tr><tr><td><a href="/pages/iJQiQGDyeSZBPTWTvJE7">/pages/iJQiQGDyeSZBPTWTvJE7</a></td><td>Learn how to use BotGhost's builder advanced customization options and keybinds!</td></tr></tbody></table>

## Command Builder

### How to create a command

{% stepper %}
{% step %}
To create a custom command, first head over to the [command builder](https://dashboard.botghost.com/dashboard/customcommands) on the dashboard.
{% endstep %}

{% step %}
To create a new custom command, click on the big "Command Builder" box to open the Command Builder itself.
{% endstep %}

{% step %}
Click on the yellow block: it represents the start of the command, and includes all general settings for your custom command. Ensure to assign your command a unique name and a description.
{% endstep %}

{% step %}
After that, you can customize the settings of your command, you can view some information on these settings below.

| Setting Name       | Function                                                                                                                                    |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
| Hide bot's replies | Toggle to hides the replies of the bot from everyone except the person who triggered the command.                                           |
| Cooldown           | The cooldown of the command, this can be set to user specific or for the whole server.                                                      |
| Permission Options | Here you can select roles that are allowed to use the command, banned roles, required permissions to use the command an/or banned channels. |
| {% endstep %}      |                                                                                                                                             |

{% step %}
You can now add [actions](/custom-commands-and-events/actions), [options](#options) and [conditions](/custom-commands-and-events/conditions) to your command by dragging blocks from the left sidebar on the command builder and [connect](#connecting-blocks) them together.
{% endstep %}
{% endstepper %}

### Options

Options are the purple in color blocks and are used for users to input values into the command, which can then be referenced anywhere within the command with the variable {option\_option-name}. Options function when a command is about to be executed, which creates fields to be able to input values into. Additionally, options are automatically connected to the command when added. They are also only available in the command builder but are not required to be in the command. Check out the [options](https://docs.botghost.com/custom-commands-and-events/options) page to learn more.

### Subcommands

<figure><img src="/files/ivsPhUjrkFnrVK6iY1Ez" alt=""><figcaption></figcaption></figure>

Subcommands are a great way to group your commands into small categories. You can for example use "economy" as the first word of all the commands of your economy system to group them together. To do so, simply add in the trigger the name of the "category" you want the command to be in with a space, followed by the command's name. You can have up to 25 subcommands per command.

{% hint style="danger" %}
You cannot have a command with the same name of a subcommand "category". This means that if you have two subcommands named `/item add` and `/item remove`, you cannot have a command named `/item`.
{% endhint %}

<figure><img src="/files/RTHIwxGxUaFDXfAEw8Xv" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/SBDvPMXs6j5Rt2HPf16H" alt=""><figcaption></figcaption></figure>

## Event Builder

Events can be used to execute actions when an something happens in your Discord server. You can let them trigger with channel creations & deletions, when a user gets kicked or banned, when a role is created or deleted and much more!

### How to create an event

{% stepper %}
{% step %}
To create a custom event, first head over to the [Custom Events](https://dashboard.botghost.com/dashboard/customevents) module on the dashboard.
{% endstep %}

{% step %}
Then click on the big "Event Builder" box to open the builder.
{% endstep %}

{% step %}
Now select an event type, this will determine on what will trigger your event. For instance, if a user joins your server, you can then have the bot greet them, like the announcement module, and DM them.
{% endstep %}

{% step %}
You can now add [actions](/custom-commands-and-events/actions) and [conditions](/custom-commands-and-events/conditions) to your event by dragging blocks from the left sidebar on the command builder and [connect](#connecting-blocks) them together.
{% endstep %}
{% endstepper %}

To learn more about custom events, visit the [events](https://docs.botghost.com/custom-commands-and-events/events) page.


# Sharing Commands and Events

## Share Codes

Share codes can be used to create a copy of a custom command or event. You can use it to import custom commands and events into other bots, or even other accounts. These share codes have different formats, a code that starts with "CMD" is a custom command while a code that starts with "EVENT" is a custom event. The steps below work for either a command or event.

### Sharing a command to someone

To share a command to someone, you first need to create a share code. You can do so by pressing the "Generate Share Code" button on your custom command from the builder menu.

<figure><img src="/files/DcXcPcjf4nPrqsDXyAtw" alt=""><figcaption></figcaption></figure>

### Importing a Command

To import a custom command, you can create a new command and press "Import command", you can then paste a share code. Then press "Import", it will then import a copy of the command.&#x20;

<figure><img src="/files/bauvqiJ6AXqY6EXGHVu0" alt=""><figcaption></figcaption></figure>

## Templates

Block Templates can be used to share a group of blocks from the command and event builder across your all of your bots. The blocks you can save include actions and conditions.

### Creating and Saving a Template

To create a block template, you must hold the SHIFT key on your keyboard and use your mouse's left click to select the blocks you would like to save into your new template. After selecting the blocks you'd like to save, let go off your mouse's left click and then press the "Save as Template" button in the bottom right of the builder.

<figure><img src="/files/gDXrRqMBTwmpdlXDadKV" alt=""><figcaption></figcaption></figure>

After pressing the "Save as Template" button, a menu will appear to finish saving. Here you may chose to edit an existing template you've created or create a brand new one. If you select to edit an existing template, your currently selected blocks will override the previous blocks and delete the previous blocks. The final step of saving your template is providing a name and description for the template. After doing so, you may press the "Save Template" button to finish the process of creating your block template.

<figure><img src="/files/q4njbP3DynhZAAC7zSLU" alt=""><figcaption></figcaption></figure>

### Importing a Template

In order to use one of your created block templates in the command and event builder, you must click on the "Block Templates" button in the bottom left of the builder. After pressing this button, all of your created templates will appear here, you may click and drag onto one of your templates and drop it inside of your builder to add the template's saved blocks into your current command or event.

<figure><img src="/files/RQG5qkbzgHc7nLBSNd3G" alt=""><figcaption></figcaption></figure>

### Deleting a Template

If you would like to delete one of your saved template's you must open the templates menu by clicking on the "Block Templates" button in the bottom left of the builder. After doing so, find the template you would like to delete and click on it. Once you click on your template you want to delete, a menu will appear making you confirm the deletion of your template, here you must press the "Delete Template" button to officially delete your template.

<figure><img src="/files/Tupuh9SGLB2ZlFEAnghr" alt=""><figcaption></figcaption></figure>


# Advanced Options

## Settings

The command and event builders have some settings to customize the builder to your liking. They can be found by pressing the "Settings" button in the top left of the builder.&#x20;

When you open the settings page you will be able to switch to the general settings, block colors, block defaults and keybinds sections with the menu on the left.&#x20;

You can also restore the settings to their default by pressing the button in the bottom left.&#x20;

<figure><img src="/files/EaGBgYuF8LKNFQpgZUSN" alt=""><figcaption></figcaption></figure>

### General Settings

| Available Setting                                                 | Function                                                                                                                                  |
| ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| Auto Save \[👑]                                                   | Automatically saves your command or event with a selected interval.                                                                       |
| Mobile Builder \[<mark style="color:yellow;">Experimental</mark>] | Enables the new mobile builder interface, better for mobile users. The desktop mode will remain the same when this is enabled.            |
| Hide Legacy Reply Actions                                         | Hides the old reply actions when enabled. Learn more about those blocks [here](/custom-commands-and-events/actions/legacy-reply-actions). |

### Block Colors

This setting will change the default colors of the [action](/custom-commands-and-events/actions), [condition](/custom-commands-and-events/conditions), [option](/custom-commands-and-events/options), root and selected blocks.

<figure><img src="/files/qZlbcYNrECjtKJrkzTcI" alt=""><figcaption></figcaption></figure>

### Block Defaults

| Available Setting      | Function                                                                                                                                    |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| Default Embed Color    | Select a default colour for embeds, new embeds will have this color by default                                                              |
| Default Condition Type | Select a default [comparison type](/custom-commands-and-events/conditions/comparison-condition#comparison-type) for conditions to be set to |

### Keybinds

Keybinds allow you to quickly perform specific actions while using the command builder. The available keybinds are listed in the table below.

{% hint style="info" %}
Keybinds require a physical keyboard to function.
{% endhint %}

{% tabs %}
{% tab title="Windows/ChromeOS" %}

<table><thead><tr><th width="138">Keybind</th><th width="159">Operation</th><th>Description</th></tr></thead><tbody><tr><td>Del or Backspace</td><td>Delete Blocks</td><td>Deletes the selected block(s).</td></tr><tr><td>Ctrl + C</td><td>Copy Block</td><td>Copies the selected block or selected text to your clipboard. Cannot be used with the <a href="#bulk-operations">Mass Select</a> feature.</td></tr><tr><td>Ctrl + V</td><td>Paste Block</td><td>Pastes the copied block or copied text into the builder.</td></tr><tr><td>Ctrl + S</td><td>Save Command / Event</td><td>Triggers a save on your command or event.</td></tr><tr><td>Ctrl + Z</td><td>Undo</td><td>Undoes the most recent block addition or connection. This means the last block you added / connected will be removed from the tree.</td></tr><tr><td>Ctrl + Y</td><td>Redo</td><td>Redoes the most recent block deletion or undo. This keybind can be used on up to 100 of your most recent block deletions, which persist through saves.</td></tr><tr><td>Shift + Drag</td><td><a href="#bulk-operations">Mass Select</a></td><td>Allows you to select multiple blocks at a time by dragging your cursor over each of the blocks you wish to select.</td></tr></tbody></table>
{% endtab %}

{% tab title="MacOS" %}

<table><thead><tr><th width="138">Keybind</th><th width="158">Operation</th><th>Description</th></tr></thead><tbody><tr><td>delete</td><td>Delete Block</td><td>Deletes the selected block(s).</td></tr><tr><td>Cmd + C</td><td>Copy Block</td><td>Copies the selected block or selected text to your clipboard. Cannot be used with the <a data-mention href="#mass-select">#mass-select</a> feature.</td></tr><tr><td>Cmd + V</td><td>Paste Block</td><td>Pastes the copied block or copied text into the builder.</td></tr><tr><td>Cmd + S</td><td>Save Command / Event</td><td>Triggers a save on your command or event.</td></tr><tr><td>Cmd + Z</td><td>Undo</td><td>Undoes the most recent block addition or connection.</td></tr><tr><td>Cmd + Y</td><td>Redo</td><td>Redoes the most recent block deletion or Undo. This keybind can be used on up to 100 of your most recent block deletions, which persist through saves.</td></tr><tr><td>Shift + Drag</td><td><a href="#mass-select">Mass Select</a></td><td>Allows you to select multiple blocks at a time by dragging your cursor over each of the blocks you wish to select.</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

## Bulk Operations

In the [Command and Event Builder](#command-builder), you can select multiple blocks at once. This feature will allow you to move them, duplicate them, save them as a Block Template, and even delete them. To perform a Mass Select you can hold down the shift key, left click, and drag your cursor over the blocks you wish to select.

<figure><img src="/files/4BthvCXBpm16N4rKj3Ub" alt=""><figcaption></figcaption></figure>

There are 4 operations you can perform on mass-selected blocks. Below you can find detailed information on each operation and how to use it.

<table><thead><tr><th width="180">Operation</th><th width="293">How to Use</th><th>What it Does</th></tr></thead><tbody><tr><td>Deselect</td><td>Click the gray "Deselect" button at the bottom of the screen.</td><td>Removes the selection from the selected blocks, and the buttons from the bottom of the screen.</td></tr><tr><td>Save as Template</td><td>Click the red "Save as Template" button at the bottom of the screen.</td><td>Saves the selected blocks as a Block Template. This will also deselect the blocks. Check out the <a data-mention href="/pages/5BMrOzShdUde2LICJdut#templates">/pages/5BMrOzShdUde2LICJdut#templates</a> page for more info.</td></tr><tr><td>Duplicate Blocks</td><td>Click the gray "Duplicate Blocks" button at the bottom of the screen.</td><td>Creates an identical copy of the selected blocks to their right. This will also deselect the blocks.</td></tr><tr><td>Delete Blocks</td><td>Click the Delete key or Backspace key on your physical keyboard.</td><td>Removes the selected blocks from the command or event. This will also deselect the blocks.</td></tr></tbody></table>


# Message Builder

The Message Builder module allows you to create Discord messages and embeds visually without writing code. It provides a live preview, full embed configuration, and the ability to save completed messages as templates that can be reused throughout your bot. Messages built here follow Discord’s structure and limits, and the editor includes validation to help ensure the final result matches what will be sent.

<figure><img src="/files/YugYoRa5csLfNZiIhjp0" alt=""><figcaption></figcaption></figure>

The builder supports message content and up to ten embeds per message. Embeds can include titles, descriptions, fields, colors, images, thumbnails, and timestamps.&#x20;

### Sending your messages

Messages created in the Message Builder can either be sent directly from the message builder page or you can save them as templates and use them inside commands and events. Templates can be loaded in the [Send or edit a Message](/custom-commands-and-events/actions/message-actions/send-or-edit-a-message) action, allowing you to send or update messages directly through your bot. Once a template is loaded, its structure and embed configuration are applied automatically. Templates can be edited or overwritten at any time from the Message Builder.

<figure><img src="/files/BoGm0kbbgjvnxRSCocKr" alt=""><figcaption></figcaption></figure>

For the full list of available message and embed inputs, check out [Send or Edit a Message](/custom-commands-and-events/actions/message-actions/send-or-edit-a-message#message-content).


# Actions

These blocks are blue in color and are the heart of the command builder, as they define the behaviour of the bot. An action block can execute a wide range of actions such as sending messages, making API calls, managing the guild etc. By connecting action blocks together, you can create things like conversational flows that respond to user inputs and carry out specific tasks and more.

## Connecting Action Blocks

You can connect action blocks by following these simple steps:

### Mobile

Simply press the top circle on the action block to start the connection line, from here you can simply press the connection circle on the bottom of the block you wish to connect your action to, to complete the circuit and connect the blocks together.

<figure><img src="/files/NSJ15727PnKPc0lToV4B" alt=""><figcaption></figcaption></figure>

### Desktop/PC

Simply press and hold the top circle on the action block to start the connection line, from here you can simply drag the connection line to the connection circle on the bottom of the block you wish to connect your action to, to complete the circuit and connect the blocks together.

<figure><img src="/files/KOyzWMkOYIcS5R4OdUtM" alt=""><figcaption></figcaption></figure>

## Helper Text

Helper text is a very useful tool if you are looking for a way to add notes to actions and conditions in your command or event builder.&#x20;

<figure><img src="/files/gXpG1LUxwZMOqB6YoEj2" alt=""><figcaption></figcaption></figure>

Helper text can be enabled by pressing the "Add Helper Text" button. You can then enter your text, select a colour, an icon and choose on what side of the block the text will show.&#x20;

<figure><img src="/files/SBn0cg9VlwLOdWUQUma2" alt=""><figcaption></figcaption></figure>

## Actions List

<table><thead><tr><th data-type="content-ref">Action Type</th><th>Information</th></tr></thead><tbody><tr><td><a href="/pages/FmzJ3PtraJyOujsQPZHq">/pages/FmzJ3PtraJyOujsQPZHq</a></td><td>Message actions allow you to reply to an user's interaction. For example, you can use them when a command is used, an event has been triggered or a button / select menu has been clicked.</td></tr><tr><td><a href="/pages/t4mQx27XIO4p0XYKZTeV">/pages/t4mQx27XIO4p0XYKZTeV</a></td><td>You can use custom variable actions to update and assign data to your <a href="/pages/Zu80JcAtYLH1imVsklT0">custom variables</a>.</td></tr><tr><td><a href="/pages/U3mKpoTBXJzP78bs1RTa">/pages/U3mKpoTBXJzP78bs1RTa</a></td><td>API actions allow you to interact with external services and post / retrieve data.</td></tr><tr><td><a href="/pages/F6zPghGLwH6UMljP7nZb">/pages/F6zPghGLwH6UMljP7nZb</a></td><td>Using loop actions, you can easily run a set of actions multiple times.</td></tr><tr><td><a href="/pages/HYKOD2STBYNRCIUTw6jV">/pages/HYKOD2STBYNRCIUTw6jV</a></td><td>Voice actions allow you to run common actions such as joining a voice channel or muting an user.</td></tr><tr><td><a href="/pages/3qCMBpVY3jUrzOCGWVbc">/pages/3qCMBpVY3jUrzOCGWVbc</a></td><td>With role actions you can update an user's role or create / update a given role.</td></tr><tr><td><a href="/pages/X6BUcSmLaHXX3DUHIzHU">/pages/X6BUcSmLaHXX3DUHIzHU</a></td><td>Channel actions allow you to create a channel or update an existing one.</td></tr><tr><td><a href="/pages/aw6Wg3b55KUDXwhOz9yy">/pages/aw6Wg3b55KUDXwhOz9yy</a></td><td>Thread actions allow you to create a thread or update an existing one.</td></tr><tr><td><a href="/pages/FSzJQHonv3G3OpXDQXHA">/pages/FSzJQHonv3G3OpXDQXHA</a></td><td>With the help of those actions you can do general server actions such as updating an user's nickname, banning them from the server or creating a server invite.</td></tr><tr><td><a href="/pages/tSvTMeNoqYVDIATQ2bQm">/pages/tSvTMeNoqYVDIATQ2bQm</a></td><td>This section contains miscellanous and more advanced actions, such as waiting before the next action, setting a command specific variable or manipulating some text using special functions.</td></tr></tbody></table>


# Message Actions

The command builder offers multiple message actions. They allow you to send reply to the current interaction (command, button, select menu or even event trigger), send messages to a channel or a user or delete / update existing messages. Below you may find some general information about each block. Click on its name for more information.

<table><thead><tr><th data-type="content-ref">Block</th><th>Information</th></tr></thead><tbody><tr><td><a href="/pages/dPkZ6ehZxhDkuNancECQ">/pages/dPkZ6ehZxhDkuNancECQ</a></td><td>The Send or Edit a message allows you to send a fully customizable message as a response, to a channel or as a DM. You can also attach buttons and select menus to it. With this action you can even edit a message that was previously sent by the bot.</td></tr><tr><td><a href="/pages/u9LXPPMPw5RBSLuIAMel">/pages/u9LXPPMPw5RBSLuIAMel</a></td><td>The Edit a Button or Select Menu action allows you to update one or more components (buttons or select menus) of a message you've previously sent with your command or event.</td></tr><tr><td><a href="/pages/0Jm7VftuKJYiHSolg7k5">/pages/0Jm7VftuKJYiHSolg7k5</a></td><td>The send a form action allows you to send to the user who ran a command, clicked a button or a select menu a custom form (also known as modal) in which the user can fill some inputs.</td></tr><tr><td><a href="/pages/QFmU1CTTvGU5kqMdzIfq">/pages/QFmU1CTTvGU5kqMdzIfq</a></td><td>The delete a message action allows you to delete a message or a reply. You can either select one that gets sent through the same command / event or provide a specific message ID.</td></tr><tr><td><a href="/pages/DUV78CuT9kSUK7Jn1r2L">/pages/DUV78CuT9kSUK7Jn1r2L</a></td><td>The publish a message action allows you to publish messages sent in announcement channels given their ID.</td></tr><tr><td><a href="/pages/zX6aV2DXq3lgskD1bm41">/pages/zX6aV2DXq3lgskD1bm41</a></td><td>This action allows you to react with a Discord or custom emoji to any message.</td></tr><tr><td><a href="/pages/VBl7iHvf3ZNa49Vv0E3n">/pages/VBl7iHvf3ZNa49Vv0E3n</a></td><td>The pin a message action allows you to pin a message that has been sent with the same command / event.</td></tr><tr><td><a href="/pages/a1ey8bsuQEGICYFUkiPr">/pages/a1ey8bsuQEGICYFUkiPr</a></td><td>With the create a transcript action you can create a powerful transcript of up to 1000 messages.</td></tr></tbody></table>


# Send or Edit a Message

<figure><img src="/files/uDF33n0MXnfgOwR7FO1n" alt=""><figcaption></figcaption></figure>

The Send or Edit a Message action lets you send a message or edit an already existing message with content, embeds, or components.

## Message Builder

The Message Builder allows you to create a message for your bot to send when the action is ran. You can build it via a traditional message builder or by using the more flexible and customizable Components V2.

<figure><img src="/files/3fwaPR0ppisqYdjcqthS" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Message Builder" %}
The message builder allows you to build a message with content, valid embeds, or components.

<figure><img src="/files/7W4guhFjxv5FpU5pIyXL" alt=""><figcaption></figcaption></figure>

### Message Content

The message content is the plain text attached to your message, has a max of 2000 characters. It can contain mentions that will ping the user / role. However, if the [#response-type](#response-type "mention") is set to a reply, no ping will be issued.

<figure><img src="/files/ZSaM1KMw7oOnQy4RPBoe" alt=""><figcaption></figcaption></figure>

### Embeds

Embeds are a stylish way to show content with your bot. Below you may find information on each part of an embed.

<figure><img src="/files/IZjhbaO9KESuBQSQvnpH" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ddBvo1wRffETLwNKHHkd" alt=""><figcaption></figcaption></figure>

#### Author

<figure><img src="/files/Oa8EckLEOKKXRlOKGu7y" alt=""><figcaption></figcaption></figure>

<details>

<summary>Author</summary>

The author text inside of your embed which appears at the top of your embed, has a limit of 256 characters.

</details>

<details>

<summary>Author URL</summary>

The link that users can press on the author text in order to be redirected to the URL.

</details>

<details>

<summary>Author Icon URL</summary>

The link that will display as the image next to the author, must be a valid URL of an image.

</details>

#### Basic Fields

<figure><img src="/files/ibaQ0ykEXRIw70nCygbr" alt=""><figcaption></figcaption></figure>

<details>

<summary>Title</summary>

The title of your embed which appears as the largest text of all embed parts, has a limit of 256 characters.

</details>

<details>

<summary>Description</summary>

The main text of your embed which is in the center, has a limit of 4096 characters.

</details>

<details>

<summary>URL</summary>

The title URL for your embed, that users can press on the author text in order to be redirected to the URL.

</details>

#### Embed Color

<figure><img src="/files/OGTLfSXh92Cun9QPjqZj" alt=""><figcaption></figcaption></figure>

<details>

<summary>Picker</summary>

The HEX color picker for your embed, you may insert a valid HEX code or select one using the small color menu.

</details>

<details>

<summary>Color</summary>

The decimal number for the color of your embed. You can use this if you want to use a variable as a color. When left blank, the color in the picker will be used.

</details>

#### Fields

Fields are a type of content you can add right below the description of your embed. You can add up to 25 fields per embed, and give each one a name and a value

<figure><img src="/files/6g5gazTGhokV4RbUBHXz" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Click "Add Field" in your embed's settings to add a new field. Below you may find a list of all settings you can use for your field.
{% endhint %}

<details>

<summary>Name</summary>

A title for your field. The maximum length is 256 characters.

</details>

<details>

<summary>Value</summary>

The value is basically the content to show inside the field. The max length is 1024 characters.

</details>

<details>

<summary>Inline Field</summary>

Enable this option to make the field appear inline with the previous one, instead of adding it below.&#x20;

</details>

#### Images

<figure><img src="/files/QMdjHOvpizmjNTViNzjl" alt=""><figcaption></figcaption></figure>

<details>

<summary>Image URL</summary>

The URL for the image that will appear in the bottom of your embed.

</details>

<details>

<summary>Thumbnail URL</summary>

The URL for the image that will appear in the top right of your embed.

</details>

#### Footer

<figure><img src="/files/jTwrTbuiTEXz22AOm0pK" alt=""><figcaption></figcaption></figure>

<details>

<summary>Footer Text</summary>

The text that will appear in the bottom of your embed, which has a limit of 2048 characters.

</details>

<details>

<summary>Footer Icon URL</summary>

The URL for the image that will appear in the bottom right of your embed, left of the footer text.

</details>

#### Time

<figure><img src="/files/qdjWy4QiJm7Z8K6KJ7wj" alt=""><figcaption></figcaption></figure>

<details>

<summary>Timestamp</summary>

The timestamp of your embed which will appear in the bottom next to your footer, you can select the time here with a menu.

</details>

<details>

<summary>Timestamp Variable</summary>

The timestamp variable of your embed which will appear in the bottom next to your footer, you can input a variable that is either ISO or UNIX in order to display a timestamp. You can use this if you want to use a variable as a timestamp, if you'd like to display the current time you can use the `{time_now_unix}` variable here.

</details>

#### Other

<details>

<summary>Hide Embed</summary>

Option to save embeds for later and not make them appear, input "true" in the text box in order to do this.

</details>
{% endtab %}

{% tab title="Components V2" %}
Components V2 allows you to build a more structured and customizable message, allowing you to put embeds (which are named containers instead), plain content, attachments, buttons and select menus in the order you prefer.\
Fields such as titles or footers do not exist in this version of the message builder, and are replaced by headers and subtexts respectively. Learn more [here](https://support.discord.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline).

<figure><img src="/files/l4TB5b1y0DtWlYPu6pRd" alt=""><figcaption></figcaption></figure>

#### Components

Messages are built with elements named "components". To add a component, simply drag it to the canvas in the position you wish it to appear, or select it from the suggested options. You can then configure it from the right sidebar.

There are various components, divided in 3 main sections:

| Type                                                                                                  | Description                                                                                                   |
| ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| [Layout](/custom-commands-and-events/actions/message-actions/send-or-edit-a-message/layout)           | Layout blocks, such as containers, define how other components should appear and how the message should look. |
| [Content](/custom-commands-and-events/actions/message-actions/send-or-edit-a-message/content)         | Content components allow you to display actual information, such as text or attachments.                      |
| [Interactive](/custom-commands-and-events/actions/message-actions/send-or-edit-a-message/interactive) | Components that can be pressed by users: buttons and select menus                                             |

<figure><img src="/files/KDfn9tkZzzlD6SjnrOMO" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

### Response Type

The send or edit a message action offers multiple response types, which allow you to decide where and how your message should be sent. There are 4 categories of response types, all of them are listed and explained below.

{% tabs %}
{% tab title="Reply" %}

<table><thead><tr><th data-type="content-ref">Response Type</th><th>Information</th></tr></thead><tbody><tr><td><a href="/pages/dPkZ6ehZxhDkuNancECQ#reply-to-the-command">/pages/dPkZ6ehZxhDkuNancECQ#reply-to-the-command</a></td><td>The message will simply reply to the command / event or the most recent interaction.</td></tr><tr><td><a href="/pages/dPkZ6ehZxhDkuNancECQ#reply-to-a-specific-message">/pages/dPkZ6ehZxhDkuNancECQ#reply-to-a-specific-message</a></td><td>The message will reply to a specific message and ping the author of the message it replies to.</td></tr><tr><td><a href="/pages/dPkZ6ehZxhDkuNancECQ#send-the-message-to-the-channel-the-command-was-used-in">/pages/dPkZ6ehZxhDkuNancECQ#send-the-message-to-the-channel-the-command-was-used-in</a></td><td>The message will be sent to the channel where the command was used in, the event was triggered in or the last interaction was triggered in.</td></tr></tbody></table>

***

### Reply to the command

The message will simply reply to the command / event or the most recent interaction.

<figure><img src="/files/RsL8cXUGFvZLzck9xr06" alt=""><figcaption></figcaption></figure>

***

### Reply to a specific message

The message will reply to a specific message and ping the author of the message it replies to.

<figure><img src="/files/gVBwuzWbmA9R1NfNAE2V" alt=""><figcaption></figcaption></figure>

#### Channel ID

Here you can set the ID of the channel where the message you're replying to is in. You can do this by pasting an ID directly from Discord (learn how [here](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID)) or using a variable that returns a channel ID. These can be easily added through the variable selector by clicking the **Clipboard** button.

#### Message ID

Here you can set the ID of the message the message will reply to. You can do this by pasting an ID directly from Discord (learn how [here](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID)) or using a variable that returns a message ID. These can be easily added through the variable selector by clicking the **Clipboard** button.

***

### Send the message to the channel the command was used in

The message will be sent to the channel where the command was used in, the event was triggered in or the last interaction was triggered in.

<figure><img src="/files/NhsFnFH4ARau150rrX5H" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Specific" %}

| Response Type                                                                                                                                           | Information                                                                                                                 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| [Send the message to a specific channel](#send-the-message-to-a-specific-channel)                                                                       | The message will be sent to a specific channel from an ID of a channel.                                                     |
| [Send the message to a channel option](/custom-commands-and-events/actions/message-actions/send-or-edit-a-message#send-the-message-to-a-channel-option) | The message will be sent to the selected channel in a [channel option](/custom-commands-and-events/options/channel-option). |
| [Send the message in a new forum post](#send-the-message-in-a-new-forum-post)                                                                           | Send the message in a forum post.                                                                                           |

***

### Send the message to a specific channel

The message will be sent to a specific channel from an ID of a channel.

<figure><img src="/files/qk9QTA8qKu0SvgqosN7c" alt=""><figcaption></figcaption></figure>

#### Channel ID

Here you can set the ID of the channel where the message will be sent to. You can do this by pasting an ID directly from Discord (learn how [here](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID)) or using a variable that returns a channel ID. These can be easily added through the variable selector by clicking the **Clipboard** button.

***

### Send the message to a channel option

The message will be sent to the selected channel in a [channel option](/custom-commands-and-events/options/channel-option).

<figure><img src="/files/oQ2Vm5k3h8yFYt0v8GgE" alt=""><figcaption></figcaption></figure>

#### Channel Option

The [channel option](/custom-commands-and-events/options/channel-option) of a text channel, such as `{option_channel}`. If you want to use a variable, use the [#send-the-message-to-a-specific-channel](#send-the-message-to-a-specific-channel "mention") response type

***

### Send the message in a new forum post

The message will be sent to a new form post created in the specified forum channel.

<figure><img src="/files/C887b7mbKWPsAUV7Q6EU" alt="" width="397"><figcaption></figcaption></figure>

#### Forum ID

Here you can set the ID of the forum that the post will be created in. You can do this by pasting an ID directly from Discord (learn how [here](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID)) or using a [variable](/custom-commands-and-events/variables) that returns a channel ID. These can be easily added through the variable selector by clicking the Clipboard button.

#### Post Title

The title for the new forum post. You can use plain text or variables that return plain text here.
{% endtab %}

{% tab title="Direct Message" %}

<table><thead><tr><th data-type="content-ref">Response Type</th><th>Information</th></tr></thead><tbody><tr><td><a href="/pages/dPkZ6ehZxhDkuNancECQ#direct-message-the-user-who-used-the-command">/pages/dPkZ6ehZxhDkuNancECQ#direct-message-the-user-who-used-the-command</a></td><td>The message will be sent directly to the user who used the command, triggered the event, pressed a button, or selected a menu.</td></tr><tr><td><a href="/pages/dPkZ6ehZxhDkuNancECQ#direct-message-a-user-option">/pages/dPkZ6ehZxhDkuNancECQ#direct-message-a-user-option</a></td><td>The message will be sent directly to the user who was selected in a <a href="/pages/ZhQ5jMoK7Xkumz8bqnts">user option</a>.</td></tr><tr><td><a href="/pages/dPkZ6ehZxhDkuNancECQ#direct-message-a-specific-user">/pages/dPkZ6ehZxhDkuNancECQ#direct-message-a-specific-user</a></td><td>The message will be sent directly to the specified user ID.</td></tr></tbody></table>

***

### Direct message the user who used the command

The message will be sent directly to the user who used the command, triggered the event, pressed a button, or selected a menu.

<figure><img src="/files/AWTHDrI0Je5BoI2zJF09" alt=""><figcaption></figcaption></figure>

***

### Direct message a user option

The message will be sent directly to the user who was selected in a [user option](/custom-commands-and-events/options/user-option).

<figure><img src="/files/Zqg6mswwrwc52AXggs7C" alt=""><figcaption></figcaption></figure>

#### User Option

The user option that will be directly message, such as `{user_option}`.

<figure><img src="/files/7jryWFAsJzf29MKVgmPm" alt=""><figcaption></figcaption></figure>

***

### Direct message a specific user

The message will be sent directly to the specified user ID.

<figure><img src="/files/UmcT1ZmHpEVG6k6XGn3S" alt=""><figcaption></figcaption></figure>

#### DM User ID

The user ID of a member inside of your server that will be getting the DM.

<figure><img src="/files/S0mWrU1WcJCEPONC9zLm" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Edit" %}

<table><thead><tr><th data-type="content-ref">Response Type</th><th>Information</th></tr></thead><tbody><tr><td><a href="/pages/dPkZ6ehZxhDkuNancECQ#edit-a-message-sent-by-another-action">/pages/dPkZ6ehZxhDkuNancECQ#edit-a-message-sent-by-another-action</a></td><td>The message you created will be the edited version of a previous sent message in your command or event's tree.</td></tr><tr><td><a href="/pages/dPkZ6ehZxhDkuNancECQ#edit-a-specific-message">/pages/dPkZ6ehZxhDkuNancECQ#edit-a-specific-message</a></td><td>The message you created will edit another previously sent message with a channel and message ID.</td></tr></tbody></table>

***

### Edit a message sent by another action

The message you created will be the edited version of a previous sent message in your command or event's tree.

<figure><img src="/files/HXce0eWRoUQ0CJRjMA7I" alt=""><figcaption></figcaption></figure>

#### Response Action

The message action from your tree that will be edited to the message you have setup.

<figure><img src="/files/qZENP0Ra2FxFgKQ9oqKN" alt=""><figcaption></figcaption></figure>

#### Keep Components

This option allows you to keep the buttons or select menu options of the original message you're editing.

<figure><img src="/files/sfhI6hYqqm7ULbnrqlnH" alt=""><figcaption></figcaption></figure>

***

### Edit a specific message

The message you created will edit another previously sent message with a channel and message ID.

<figure><img src="/files/JYvDCtCRYhipWCEWdFaR" alt=""><figcaption></figcaption></figure>

#### Channel ID

Here you can set the ID of the channel where the message you're replying to is in. You can do this by pasting an ID directly from Discord (learn how [here](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID)) or using a variable that returns a channel ID. These can be easily added through the variable selector by clicking the **Clipboard** button.

#### Message ID

Here you can set the ID of the message the message will reply to. You can do this by pasting an ID directly from Discord (learn how [here](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID)) or using a variable that returns a message ID. These can be easily added through the variable selector by clicking the **Clipboard** button.

<figure><img src="/files/kbV324TOuF5CXzc7WMKQ" alt=""><figcaption></figcaption></figure>

#### Keep Components

This option allows you to keep the buttons or select menu options of the original message you're editing.

<figure><img src="/files/sfhI6hYqqm7ULbnrqlnH" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Optional Variable

You can also create your own variable that can be used anywhere in the command to get the ID of the message sent by the action. This is useful when using [Send an API Request](/custom-commands-and-events/actions/api-actions/send-an-api-request) in your command / event and you need the ID of the message. Make sure that the name of the variable does not correspond to the name of a default variable or of an another action.

You can copy the variable by clicking the clipboard icon in the section right below the optional variable field.

<figure><img src="/files/0p2Hx7VUwBPIYz0rtwXn" alt=""><figcaption></figcaption></figure>

## Allowed Mentions

In this section you can control which mentions are allowed to ping users. By default, all mentions have been allowed. If you want to change this, press the "Configure Mentionables" button to configure it. This setting is optional.

<figure><img src="/files/0qtLe7sBoIRQqw4TvbYC" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Simple Mode" %}
Simple mode is shown by default when you press the "Configure Mentionables" button above.&#x20;

<figure><img src="/files/iJZF8xcmh1c2nvMHTyWJ" alt="" width="415"><figcaption></figcaption></figure>

### Allowed Mention Types

#### @everyone and @here

This toggle will enable or disable the @everyone and @here mentions for the message.

#### Role Mentions

The role mentions toggle will enable or disable @role mentions for the message.&#x20;

#### User Mentions

This toggle will enable or disable the @user mentions in the message.
{% endtab %}

{% tab title="Advanced Mode" %}
Advanced mode can be accessed by selecting it in the Configuration Mode.

<figure><img src="/files/qin8b0Vrex1wg2InkPPH" alt="" width="404"><figcaption></figcaption></figure>

### Specific Mentionables

#### Allowed role IDs

In this field you can enter role IDs or variables that are allowed to be pinged in the message. Seperate each with a comma (`,`).&#x20;

#### Allowed user IDs

In this field you can enter user IDs or variables that are allowed to be pinged in the message. Seperate each with a comma (`,`).&#x20;

#### Mention Replied User

Enabling this option will allow the user the bot is replying to to be pinged.&#x20;
{% endtab %}
{% endtabs %}

## Adding Components

{% hint style="info" %}
This feature is only available while using the Message Builder mode. If you wish to add buttons or menus while using the Components V2 mode, add an [Action Row](/custom-commands-and-events/actions/message-actions/send-or-edit-a-message/layout#action-row) and a [component](/custom-commands-and-events/actions/message-actions/send-or-edit-a-message/interactive) (button or select menu) through the [Components V2 Builder](#components-v2).
{% endhint %}

In order to add a button or select menu to your message, you must click on either of the buttons on your "Send or Edit a Message" action block.

### Adding a Button

If you would like to add a button, you must press the button in the bottom left of your block with the plus sign titled "Button". After you press this, a button will be added to your message and will be attached to it. For more information about buttons, check out the [Button](/custom-commands-and-events/actions/message-actions/send-or-edit-a-message/interactive/button) page.

<figure><img src="/files/QUUUIyMRjcYAKc65bn3w" alt=""><figcaption></figcaption></figure>

### Adding a Select Menu

If you would like to add a select menu, you must press the button in the bottom right of your block with the plus sign titled "Menu". After you press this, a select menu will be added to your message and will be attached to it. For more information about Select Menus, check out the [Select Menu](/custom-commands-and-events/actions/message-actions/send-or-edit-a-message/interactive/select-menu) page.

<figure><img src="/files/XPXPG4EkBWnKn1tRTvsx" alt=""><figcaption></figcaption></figure>

## Requirements and Limits

Inside of your message, there are requirements and limits that Discord has in place. Your message must follow these requirements and limits in order for it to function properly.

{% tabs %}
{% tab title="Message Builder" %}

### General

* Your message must include valid message content, an embed, or a component in order for your message to send.&#x20;

### Message

* You may only have up to 10 embeds on your message.
* The total number of characters in the title, description, field.name, field.value, footer.text, and author.name fields across all embeds in a message must not go above 6000 characters.&#x20;
* When adding an embed, at least one of the following fields is required: title, description, or author.
* If you have a footer icon, you must have footer text.
* If you have a author icon, you must have a author text.
* Each embed field requires a title and some content.
* Single spaces cannot bypass any of the requirements listed above.

### Components

* You can only have up to 5 action rows.
* You can only have up to 5 buttons per row.
* You can only have 1 select menu per row.
* You can't have a select menu and a button in the same row.
  {% endtab %}

{% tab title="Components V2" %}

### General

* All messages require at least one component
* You can add up to 40 components

### Layout

* Containers must contain at least 1 component, which can be anything but another container.
* Sections must contain from 1 to 3 text containers.
* Sections must contain one accessory, which can be a image or a button.
* You can have up to 5 action rows.
* Action rows can contain one or more buttons or a select menu, but not both at the same time.

### Content

* Text display can contain up to 4000 characters.
* You can add up to 10 images to a media gallery.

### Interactive

* You can add up to 5 buttons to an action row.
* You can only add one select menu to an action row.
  {% endtab %}
  {% endtabs %}


# Layout

Layout components allow you to adjust the layout of a Components V2 message. There are four types of layout components:

| Component                 | Description                                  |
| ------------------------- | -------------------------------------------- |
| [Container](#container)   | Root container for components.               |
| [Section](#section)       | Text with required accessory (button/image). |
| [Separator](#separator)   | Visual divider between content.              |
| [Action row](#action-row) | Container for buttons (max 5)                |

***

## Container

<figure><img src="/files/Q7GEyZ0apY5XB76LV4oZ" alt=""><figcaption></figcaption></figure>

Containers can be used to create a container around a collection of components. They can optionally have an accent color set or be a spoiler.

<figure><img src="/files/qly3YOJ8NEGjdhjlkI4Q" alt=""><figcaption></figcaption></figure>

### Accent Color

Optionally enter the hex color of the accent bar. Any variables that return a hex color can be used here.

<figure><img src="/files/yJjAC1O1zVZBEQdL9dPW" alt=""><figcaption></figcaption></figure>

### Spoiler

If this value is set to `true`, the container will appear as a spoiler (blurred out). Defaults to false. Variables can be used here.

<figure><img src="/files/EGpd73qqKBtNzlKNKGEo" alt=""><figcaption></figcaption></figure>

***

## Section

<figure><img src="/files/C32Z2hWIPhNLt0kXSoNO" alt=""><figcaption></figcaption></figure>

A section is a component that allows you to contextually associate up to three text components with either an thumbnail image or a button.&#x20;

<figure><img src="/files/7KuZDPjMpbnrrP7UlisH" alt=""><figcaption></figcaption></figure>

***

## Separator

<figure><img src="/files/SH5DBrE8HXwQWbdhBiVt" alt=""><figcaption></figcaption></figure>

Separators can be used to visually separate two components with vertical padding and an optional divider line.

<figure><img src="/files/ExbmHEkDzUHWy7u23UNB" alt=""><figcaption></figcaption></figure>

### Spacing Size

Separators can have either small or large spacing size. Set this to `SMALL` to create a compact visual break. Set it to `LARGE` to create a more prominent divider. Variables that return either `SMALL` or `LARGE` can be used here. Defaults to small spacing.

<figure><img src="/files/AXMg8m5F2TmZRQjCPvhv" alt=""><figcaption></figcaption></figure>

### Show Divider Line

Set this to `true` to create a small divider line in between sections. Variables that return either `true` or `false` can be used here. Defaults to false.

<figure><img src="/files/S3A04J6JPdtTMrAy0SJy" alt=""><figcaption></figcaption></figure>

***

## Action Row

<figure><img src="/files/dO9g1ROIBM9ueS4ofIuq" alt=""><figcaption></figcaption></figure>

Action rows are containers for components and can contain up to five buttons or a single select menu. A maximum of five can be present in a single message.

<figure><img src="/files/4cXIqBNrSk05K74PnLq9" alt=""><figcaption></figcaption></figure>


# Content

Content components define what appears visually inside your message - including text, media, and files.\
They represent the main body of your message and are used to display information to users.

### Component Overview

| Component                       | Description                      |
| ------------------------------- | -------------------------------- |
| [Text Display](#text-display)   | Markdown text content            |
| [Media Gallery](#media-gallery) | Multiple images in a grid layout |
| [File](#file)                   | Display for attached files       |

***

## Text Display

<figure><img src="/files/d6yPnBruYHOVOOMHY9mR" alt=""><figcaption></figcaption></figure>

Text Displays are used to show formatted text within a message. They support Discord Markdown, mentions, emojis, and variables.

<figure><img src="/files/RQDMaAJ1ERht5SlFPY9a" alt=""><figcaption></figcaption></figure>

### Content

Enter the text to display. Supports Markdown formatting and variables.

<figure><img src="/files/p837xSDrkOeVUXwHxT1H" alt=""><figcaption></figcaption></figure>

### Character Limit

The character limit for a Text Display is 4000 characters.

***

## Media Gallery

<figure><img src="/files/Su9A6lURgh9ETp6037hr" alt=""><figcaption></figcaption></figure>

The Media Gallery component lets you display **multiple images** in a grid layout, ideal for showing collections, previews, or thumbnails.

<figure><img src="/files/TwKaDlUsbWPnXIzWzTUb" alt=""><figcaption></figcaption></figure>

### **Images**

Add one or more image URLs or variables returning image links.

<figure><img src="/files/Jyy7UgN8GxDJph5AwWE1" alt=""><figcaption></figcaption></figure>

### Image Description

Optional text shown as the image description or alternative text. Supports variables.

<figure><img src="/files/9bdxMeJRBo4S7HfYbEpp" alt=""><figcaption></figcaption></figure>

### Spoiler

If this value is set to `true`, the Images will appear as a spoiler (blurred until revealed). Defaults to false, Variables can be used here.

<figure><img src="/files/6D4Q5SGSRBQbE1g30Ozt" alt=""><figcaption></figcaption></figure>

### Image Limit

The Image Limit for a Media Gallery is 10 images.

***

## File

<figure><img src="/files/KRTWQYkTnWsrAF3awATh" alt=""><figcaption></figcaption></figure>

The File component lets you attach files to a message, ideal for sharing documents, archives, or other downloadable content.

<figure><img src="/files/jbl3BiOFefhd7TdS93oB" alt=""><figcaption></figcaption></figure>

### File

Provide a direct file URL or upload a file. Variables that return a file URL can also be used.

<figure><img src="/files/fl4ps2BDI2Tn0ZdqdpG6" alt=""><figcaption></figcaption></figure>

### Spoiler

If this value is set to `true`, the File will appear as a spoiler (blurred until revealed). Defaults to false, Variables can be used here.

<figure><img src="/files/MACDOenSAZbd2zm7fyKF" alt=""><figcaption></figcaption></figure>

### Storage

Uploaded files are securely stored on **BotGhost’s S3 servers**.

### File Information

Discord automatically detects and displays the file type.\
The file name and size are extracted automatically.


# Interactive

Interactive components let users interact directly with a message. This category includes [Buttons](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-attached-buttons/buttons) and [Select Menu](/custom-commands-and-events/actions/message-actions/send-or-edit-a-message/interactive/select-menu), which allow users to trigger actions or make selections.

### Component Overview

| Component                                                                                                         | Description                                                |
| ----------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| [Button](/custom-commands-and-events/actions/message-actions/send-or-edit-a-message/interactive/button)           | Clickable element that triggers an action or opens a link. |
| [Select Menu](/custom-commands-and-events/actions/message-actions/send-or-edit-a-message/interactive/select-menu) | Dropdown menu for selecting one or more options.           |

Both components are automatically wrapped in an **Action Row** when using Components V2 and have their own pages with detailed settings.

Buttons and select menus are created directly inside the builder:

* Dropping one onto the canvas automatically creates an Action Row
* Each Action Row can contain up to 5 buttons or 1 select menu (not both)
* Buttons can also be added as accessories inside sections
* The builder automatically validates and prevents invalid configurations


# Button

<figure><img src="/files/9kFQ6SsakfU2NaKKTHai" alt=""><figcaption></figcaption></figure>

Inside of the Send or Edit a Message block, you can add buttons onto your message.

## Button Text

Assign some text that will show in the button.

<figure><img src="/files/8r6dEcWZxzvvJE4nxwHo" alt=""><figcaption></figcaption></figure>

## Emoji ID

The emoji that will appear on the button on your message, you must provide a valid emoji id or a unicode formatted emoji for default discord emojis. This is an optional setting.

<figure><img src="/files/1cFzq701AYcfrdjWlEhG" alt=""><figcaption></figcaption></figure>

## Button Style

The style of your button, you can choose between 5 types of styles. The Link button allows you to redirect users to a custom link when the button is clicked.&#x20;

<figure><img src="/files/QuDoPMqtLammmdnNWTu1" alt=""><figcaption></figcaption></figure>

## Custom Button Style

You can also use variables to determine the color of your button. Set the value to the color "Name" in the table below. Leave empty to follow the button style selected in the [#button-style](#button-style "mention") setting.

<figure><img src="/files/6gX8jhIXlCNqFLQWjw9G" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Action Button" %}
Below you may find some information on clickable buttons and their settings. The table below shows a list of all available button styles and their name, which can be used in the [#custom-button-style](#custom-button-style "mention") setting.

| Color | Name        | Example                                                             |
| ----- | ----------- | ------------------------------------------------------------------- |
| Blue  | `PRIMARY`   | ![](/files/hWb5N9n4ovXQPcjzgjf3)                                    |
| Grey  | `SECONDARY` | <img src="/files/wigWIH2z771aSKxv3kKV" alt="" data-size="original"> |
| Red   | `DANGER`    | <img src="/files/ttPquIPAz7KW7kNizgyl" alt="" data-size="original"> |
| Green | `SUCCESS`   | <img src="/files/xvoLF8jQMNCPwotpXxwi" alt="" data-size="original"> |

## Show Button Replies

The option to decide if interaction replies to the button are public as in visible to all users, or hidden and only can be seen by the user who caused the reply.&#x20;

<figure><img src="/files/lo7YiSC6uhN5GDnhHGxi" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Link Button" %}
Link buttons redirect to a custom link when clicked. They can only be grey.

<figure><img src="/files/Nex8BCdlhKwk1gvoHw5q" alt=""><figcaption></figcaption></figure>

## Button URL

The URL that users will be redirected to if they click on the button, this only appears if you have enabled your button to be link type. Variables work here, they must provide a valid URL.

<figure><img src="/files/4EwdKDlTvX1mRD5tYZ7p" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## **Disable Button by Default**

This option allows you to decide if your button is disabled by default on the message being sent, set the text to `true` if you would like it to be disabled. This is an optional setting and defaults to `false`.

<figure><img src="/files/TvDL4RXNnRdpn22foYEz" alt=""><figcaption></figcaption></figure>

## Enable Component Ordering

Enable this option to order components by assigning each button a row and a weight.

### Row

The row that the button will be placed on, insert 1 to have the button placed on the first row of buttons. A message can have up to 5 rows of either a select menu or 1 to 5 buttons, which is also known as lines of components.

<figure><img src="/files/BknDjFTYqqtGYVnaU8C2" alt=""><figcaption></figcaption></figure>

### Position Weight

The position that the button will be ordered in on the row it was placed inside of. Buttons that have a higher weight, meaning a higher number, will be placed first, before other buttons with lower weights. If you insert `-1`, this button will not be added to your message.

<figure><img src="/files/Xpg9tepDwo3ir3CHVPeO" alt=""><figcaption></figcaption></figure>

## Remove Button

{% hint style="info" %}
This setting is only available in the [Edit a Button or Select Menu](/custom-commands-and-events/actions/message-actions/edit-a-button-or-select-menu) action block.
{% endhint %}

The Remove Button setting allows you to remove the button from the message when the setting is set to `true`. Once removed, it can't be brought back.

<figure><img src="/files/JEsT28q6Q5YQzWrGLvvW" alt=""><figcaption></figcaption></figure>


# Select Menu

<figure><img src="/files/QwzIplPFmUW8rqrg0PBW" alt=""><figcaption></figcaption></figure>

Inside of the Send or Edit a Message block, you are able to add select menus to your message.

## Accessing Select Options

In order to access the options that were selected in your message, there are a few variables that you can utilize.

| Variable                    | Information                                                                                                                                                                                          |
| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `{selected_option}`         | Returns the option that was selected, only appears when you have "Single Select" enabled. Example Return: `17392374`                                                                                 |
| `{selected_options}`        | Returns the options that were selected in an array format, only appears when you have "Multi Select" enabled. Example Return: `123,852,187`                                                          |
| `{selected_options.length}` | Returns the length of options that were selected, only appears when you have "Multi Select" enabled.                                                                                                 |
| Custom variable             | The custom variable you setup in the [#custom-variable-name](#custom-variable-name "mention") section. It works just like `{selected_option}` (or `{selected_options}` when multi select is enabled. |

## Placeholder

The placeholder text that will appear on your menu without any options being selected. [Variables](/custom-commands-and-events/variables) are supported here.

<figure><img src="/files/dtDXMh68bpRQ9XtdeUEg" alt=""><figcaption></figcaption></figure>

## Menu Type

The type of select menu that will appear on your message. All Discord's select menus are available.

<figure><img src="/files/bl3AZ7LgumgoXHL7HYVk" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Basic (Text)" %}
Your menu will have simple text options which you can customize the label, description, emoji, and more.

<figure><img src="/files/qPMxBhzQxTSdrE416bYB" alt=""><figcaption></figcaption></figure>

Each basic select menu allows you to add up to 25 options. Here you can add and customize options of your select menu. Variables are supported in all fields.&#x20;

<figure><img src="/files/kcRBzKIlN8I5QVQAtp2h" alt=""><figcaption></figcaption></figure>

## Label

The text that will be displayed on the option in your menu.&#x20;

<figure><img src="/files/zkxz3hTBYGKJOGFPQXqJ" alt=""><figcaption></figcaption></figure>

## Description

Additional information about your option that will appear on it's description once a user has opened the menu.

<figure><img src="/files/LKFzRrRvQIYWVulNvWvR" alt=""><figcaption></figcaption></figure>

## Value

The value that is attached to this option, which will be used while accessing the option(s) that were selected on your option with the menu's variable. This is an optional setting, if no value is set then your option's label will be used as it's value.

<figure><img src="/files/lbTCcDyaDTvoU7A5zwbD" alt=""><figcaption></figcaption></figure>

## Emoji ID

The emoji that will appear on your menu's specific option, you must provide a valid emoji id or a unicode formatted emoji for default discord emojis. This is an optional setting.

<figure><img src="/files/PFPmA16KOPjuA8FaUnun" alt=""><figcaption></figcaption></figure>

## Hide Option

The option to make this specific option of your menu hidden or not, meaning it will not appear on your menu. Input `true` in order to hide the option or input `false` to show this option. If no value is set here, it will appear by default.

<figure><img src="/files/qrakO9Saarwvgy4ls2qk" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Role" %}
Your menu will have roles as selectable options, you may setup roles that are selected by default and more.

<figure><img src="/files/4qsJqMaeWHQ8C1p8cJjP" alt=""><figcaption></figcaption></figure>

## Default Selected Roles

Here you may select roles that you would like to appear by default on your menu.

<figure><img src="/files/OPF1BRGVAEzj637azB2N" alt=""><figcaption></figcaption></figure>

## Default Selected Additional Roles

Here you may input role IDs or variables that you would like to appear by default on your menu. Separate each role ID or variable by commas in order to format successfully.

<figure><img src="/files/3F1AkDP2CWZhbqnffBfu" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Channel" %}
Your menu will have channels as selected options, you may setup channels that are selected by default and more.

<figure><img src="/files/QcCoU5dDu1EgAZIWmBmS" alt=""><figcaption></figcaption></figure>

## Default Selected Channels

Here you may select the channels that will appear by default on your menu.

<figure><img src="/files/V5CjdCLpD3zBvsCk9O12" alt=""><figcaption></figcaption></figure>

## Default Selected Additional Channels

Here you may input channel IDs or variables that will appear by default on your menu. Separate each value with commas in order to format successfully.

<figure><img src="/files/Y957doD101rOSr3Kc0aD" alt=""><figcaption></figcaption></figure>

## Default Channel Types

Here you may select the channel types that will appear on your menu only.

<figure><img src="/files/bc8oXsd0C4jLFm80SxzW" alt=""><figcaption></figcaption></figure>

## Default Additional Channel Types

Here you may input channel type integers or variables that will appear on your menu only. For a list of channel type integers, see the [Discord API documentation](https://discord.com/developers/docs/resources/channel#channel-object-channel-types).

<figure><img src="/files/YTjwHASxEgX1qtqTkxCu" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="User" %}
Your menu will have users in your server as selected options, you may setup server members that are selected by default and more.

<figure><img src="/files/S4RTF7AVLLTnv4KCQfnF" alt=""><figcaption></figcaption></figure>

## Default Selected Users

Here you may input user IDs or variables that will appear as selected users on your menu by default.

<figure><img src="/files/YLsromZKyX2wTDDslqnh" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Mentionable" %}
Your menu will have roles and users in your server as selected options, you may setup server roles and members that are selected by default and more.

<figure><img src="/files/PQGaMvDcGl11vbMmOBE5" alt=""><figcaption></figcaption></figure>

## Default Selected Roles

Here you may select roles that you would like to appear by default on your menu.

<figure><img src="/files/bXB0JStYlzwj3Gbxmn6Q" alt=""><figcaption></figcaption></figure>

## Default Selected Additional Roles

Here you may input role IDs or variables that you would like to appear by default on your menu. Separate each role ID or variable by commas in order to format successfully.&#x20;

<figure><img src="/files/GfUAqLUoJlZSYIK9yNYw" alt=""><figcaption></figcaption></figure>

## Default Selected Users

Here you may input user IDs or variables that will appear as selected users on your menu by default.

<figure><img src="/files/qarhqEvxylkkf0aHdAfq" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Enable Multiselect

This option allows users to select more than 1 option on your menu.

{% tabs %}
{% tab title="Single Select" %}

<figure><img src="/files/PbRkSebl5vkk8SsgGI6J" alt=""><figcaption></figcaption></figure>

If this option is selected, users may only select 1 option at a time on your menu.

<figure><img src="/files/uQ4fPzNLBOUayM5AxoxQ" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Multi Select" %}

<figure><img src="/files/LMsdnANfJ71U0hDC70FC" alt=""><figcaption></figcaption></figure>

If this option is selected, users may select as many options as you allow them to.

<figure><img src="/files/xlFfZdvallBKagORZm3u" alt=""><figcaption></figcaption></figure>

## Minimum Options

The minimum amount of options users can select at a time. Input must be greater than or equal to 0.

<figure><img src="/files/RAdeZ8O66B7fPK2ToH0A" alt=""><figcaption></figcaption></figure>

## Maximum Options

The maximum amount of options users can select at a time. The maximum value for this setting is 25.
{% endtab %}
{% endtabs %}

## Custom Variable Name

Here you can assign a custom variable name to access the chosen option(s) of your menu. If you don’t specify one, the default variable `{selected_option}` will be used. This is an optional setting.

<figure><img src="/files/p7QCOIP1b93YySZS4LG7" alt=""><figcaption></figcaption></figure>

## Disable Select Menu by Default

This field allows you to decide whether your select menu should be disabled by default.. Set the value to `true` if you'd like to disable your menu by default. This is an optional setting and defaults to `false` when left blank.

<figure><img src="/files/XkcdVvU4LTn9zBOf7DGw" alt=""><figcaption></figcaption></figure>

## Show Select Menu Replies

The option to show or hide replies to the menu of your message. If you select this to "Hide Replies", only the user who used the menu can see replies to the menu. If selected to "Show Replies", replies to your menu will be able to be seen by everyone.

<figure><img src="/files/vSEz8Ywfa6xGWVsPpOmh" alt=""><figcaption></figcaption></figure>

## Enable Component Ordering

Enabled this option to order select menus in a specific row.

### Row

The row that the menu will be placed on, insert 1 to have the menu placed on the first row of components. A message can have up to 5 rows of either a select menu or 1 to 5 buttons, which is also known as lines of components.

<figure><img src="/files/8cIA9AhR8rzc39qkqnM1" alt=""><figcaption></figcaption></figure>

### Position Weight

The position that the menu will be ordered in on the row it was placed inside of. Menus that have a higher weight, meaning a higher number, will be placed first before other menus with lower weights. If you insert `-1`, this menu will not be added to your message.

<figure><img src="/files/KJTATNvNuf68DJ3wGqGZ" alt=""><figcaption></figcaption></figure>

## Remove Menu

{% hint style="info" %}
This setting is only available in the [Edit a Button or Select Menu](/custom-commands-and-events/actions/message-actions/edit-a-button-or-select-menu) action block.
{% endhint %}

The Remove Menu setting allows you to remove the select menu from the message when the setting is set to `true`. Once removed, it can't be brought back.

<figure><img src="/files/sNRpu7iE0ui2F3HW9T5M" alt=""><figcaption></figcaption></figure>


# Edit a Button or Select Menu

<figure><img src="/files/Ztr2BeFnFK5SipE6yhQc" alt=""><figcaption></figcaption></figure>

The Edit a Button or Select Menu block allows you to modify a button or select menu sent in your command or event after it has originally been sent.&#x20;

## Target Message

Inside of this option, you may select the message block that you would like to edit the components of from the dropdown. To easily find the action that you would like to edit, it's recommended to label the original block with the **Block Label** option.

<figure><img src="/files/or1v1B2YkkjAbj3g0lbP" alt=""><figcaption></figcaption></figure>

## Available Components

In this section, all components that you are allowed to edit will appear here. To select the component to edit, simply click on the component's option as seen in the image below. Once you select a component, the option will be highlighted in red. To unselect a component, simply click it again. Options colored in gray will not get edited.

<figure><img src="/files/DcTgTMZHgEXSm79MUUB3" alt=""><figcaption></figcaption></figure>

## Selected Components

In this section, you may adjust the settings for each component that you would like to edit. To select a certain component to edit, simply click on the dropdown arrow to view all the settings of that edited version of the component. In order to remove an edited component, simply click the "Remove" text highlighted in red. Refer to the Send or Edit a Message's [Button](/custom-commands-and-events/actions/message-actions/send-or-edit-a-message/interactive/button) and [Select Menu](/custom-commands-and-events/actions/message-actions/send-or-edit-a-message/interactive/select-menu) documentation pages to learn about all the settings that you can modify.

{% hint style="success" %}
Fields you leave empty will remain unchanged when editing the component.
{% endhint %}

<figure><img src="/files/aEYI9y0Lwdj37acolTzF" alt=""><figcaption></figcaption></figure>


# Send a Form

<figure><img src="/files/4jhdvRLUUn9e9jazkVO1" alt=""><figcaption></figcaption></figure>

The send a form action sends a form or modal to a user and awaits their response. You can add up to 5 inputs to a form and use the responses to these inputs in other actions and conditions.

## Send a Form Connection Requirements

Form actions must **be the first reply to an interaction.** An interaction occurs when:

* A command is used
* A button is pressed
* A select menu option is selected

{% hint style="info" %}
Sending a message to a specific channel does not count as a reply.
{% endhint %}

## Form Name

The form name serves as a variable to access the responses the user enters after they submit the form. BotGhost uses dot notation to access the individual responses to the inputs of the form. The variable always follows the format of the form name followed by the input variable.

<figure><img src="/files/dZXVpqAtWkiZg34Tg8BF" alt=""><figcaption></figcaption></figure>

For example, if you named your form **my-form** and had an input with the variable of **age-input**, you could access the response in other actions and conditions by using the variable **{my-form.age-input}**.

## Form Builder

Clicking the Form Builder button after setting a form name opens up the BotGhost form builder. From here you can add up to 5 inputs to your form and configure each input individually. Any changes you make will be automatically reflected in the Form Preview to give you an idea what your form will look like in Discord.

<figure><img src="/files/PFltm2o9jZ5MAz2cFa6a" alt=""><figcaption></figcaption></figure>

The form builder comes preloaded with one input by default.

### Form Title

The form title is the header text of the form. This is displayed to users at the top of the form. All variables and options can be used.

<figure><img src="/files/TWRDTNKNKj0Dddy1OAw5" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/F3SrXoxV3i3yXD0N6tAc" alt=""><figcaption></figcaption></figure>

### Adding Form Fields

Form fields are the individual inputs of the form. To add an input, click the **Add Field** button. You can have up to 5 inputs per form.

<figure><img src="/files/4ViMI20Jk4k6h8bUZaeN" alt=""><figcaption></figcaption></figure>

### Configuring Form Fields

Each field has 8 configurable options. Only the input label, input type and variable name are required.

#### Input Label

The input label is the text above the actual input of the field. All variables and options can be used in this field. This field is required.

<figure><img src="/files/9r1PRvZLiZdbCpSzYUx6" alt=""><figcaption></figcaption></figure>

#### Placeholder

The placeholder is the background text of the input when the input is blank. All variables and options can be used in this field.

<figure><img src="/files/bHZW5VfJWyPT5y9M3N7p" alt=""><figcaption></figcaption></figure>

#### Minimum Length

The minimum length is the minimum number of characters that the user is required to input into this field. Ensure that the minimum length is not higher than the maximum length of the field.&#x20;

#### Maximum Length

The maximum length is the maximum number of characters that the user is able to input into this field. Ensure that the minimum length is not higher than the maximum length of the field.&#x20;

#### Input Style

There are two input styles to choose from, either a short input or a long input. Short inputs are simple text boxes while a long input is a larger text area. You can see the size difference in the preview after changing the style.

<figure><img src="/files/XAu0uTOeNny78qFjWU3U" alt=""><figcaption><p>A Short Input</p></figcaption></figure>

<figure><img src="/files/CbTZN2ANAPs1efiQ2XWr" alt=""><figcaption><p>A long input</p></figcaption></figure>

#### Required

The required option toggles whether or not the user must input an answer for this field. If the field is set to required, the user will not be able to submit the form without providing an answer.

<figure><img src="/files/XKC3SK6qORApwJEUBMCZ" alt=""><figcaption></figcaption></figure>

#### Default Value

The default value is the prefilled value of an input. If you set a default value when the user is shown the form that value will be prefilled for that field.&#x20;

<figure><img src="/files/teqesVmVKwaFzIhqYhF2" alt=""><figcaption></figcaption></figure>

#### Variable Name

The variable name is how the value inputted by the user for that field can be accessed and used in other actions and conditions. This value is used with the form name in a variable with dot notation. After setting a variable name, you will see the associated variable to get the value of that field.

<figure><img src="/files/mWyCqj4bDBIoOKVMO89b" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/Eaviy1SOeyGiaUfZjXef" alt=""><figcaption><p>A variable name of age and a form name of my-form.</p></figcaption></figure>

## Using Form Responses

After completing all the required fields for your form a green check mark will appear showing that the form is complete.

<figure><img src="/files/zqpLfsLRjIgbtTnPBZwK" alt=""><figcaption></figcaption></figure>

You can use the values submitted by the user by combining the form name with the variable name of the inputs. For example, if you had a form named **my-form** and an input with the variable name **age** you can access this response by using the variable **{my-form.age}.**

You can also see a list of all the input variables below the Form builder once you have finished configuring the required settings for your form.

<figure><img src="/files/dRl50CEUBTXX5FU9JaDs" alt=""><figcaption></figcaption></figure>

These values will be specific to your form and will change for every form.


# Delete a Message

<figure><img src="/files/XQIhw2uIbtmSJB8HACyz" alt=""><figcaption></figcaption></figure>

When triggered, the Delete a Message action deletes any message in a Discord server. This message can either be a message associated with the command or event it is used in, or set by its channel and message ID. All variables and options can be used in the channel and message ID fields.

## Delete by Message ID or another Action

In the Delete a Message action, you have the choice for the message to be from another action, or set by its message ID.

{% tabs %}
{% tab title="Message ID" %}

<figure><img src="/files/8A5XXVGADtl5HC5jAybh" alt=""><figcaption></figcaption></figure>

### Channel ID

Here you can set the ID of the channel the message you're deleting is in. You can do this by pasting an ID directly from Discord (learn how [here](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID)) or using a variable that returns a channel ID. These can be easily added through the variable selector by clicking the **Clipboard** button.

### Message ID

Here you can set the ID of message you're deleting. You can do this by pasting an ID directly from Discord (learn how [here](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID)) or using a variable that returns a message ID. These can be easily added through the variable selector by clicking the **Clipboard** button.
{% endtab %}

{% tab title="Another Action" %}

<figure><img src="/files/lReL8DIvYB87A1oby0f5" alt=""><figcaption></figcaption></figure>

### Response Type

In this section, you can manage which message the bot will delete. You can select from a dropdown that will display the bot's messages, as well as any related to the event, if applicable. The selected message will be highlighted in red.

<figure><img src="/files/sXCRFf4HaymTXUij0JsH" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

***

Below is an example of a simple command that sends an [Embed Reply](/custom-commands-and-events/actions/legacy-reply-actions/embed-reply), uses [Wait before running another action](/custom-commands-and-events/actions/other-actions/wait-before-running-another-action) to wait 1 second, and deletes the message.

<figure><img src="/files/AesXK2B6LJLEbw8jwjVh" alt=""><figcaption></figcaption></figure>


# Publish a Message

<figure><img src="/files/N7CXFzzfP6XkaHJl1GtL" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
This feature is only available in [announcements channels](https://support.discord.com/hc/en-us/articles/360032008192-Announcement-Channels).
{% endhint %}

When triggered, the Publish a Message action crossposts, or publishes, a message across other servers and channels that follow its channel. This message can be set by its channel and message ID. All variables and options can be used in the channel and message ID fields.

<figure><img src="/files/MM5mXhNKHxS1I0kOhdrL" alt=""><figcaption></figcaption></figure>

## Channel ID

Here you can set the ID of the channel the message you're publishing is in. You can do this by pasting an ID directly from Discord (learn how [here](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID)) or using a variable that returns a channel ID. These can be easily added through the variable selector by clicking the **Clipboard** button.

## Message ID

Here you can set the ID of message you're publishing. You can do this by pasting an ID directly from Discord (learn how [here](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID)) or using a variable that returns a message ID. These can be easily added through the variable selector by clicking the **Clipboard** button.

***

Below is an example of a simple command that uses [Send a message to a channel ](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-to-a-channel)and publishes the message.

<figure><img src="/files/PVwfOkqPI2D6HZpu3nBu" alt=""><figcaption></figcaption></figure>


# React to a Message

<figure><img src="/files/BRwXyEIyMJSdsHsd7A4i" alt=""><figcaption></figcaption></figure>

This action block will react with an emoji to any message in the builder or a specific message.

## Target Message

From this dropdown you can select what type of message the block should target in order to react to.

<figure><img src="/files/ixVa3gxbDFSWXZqVuZNs" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Message sent by another action" %}
If this type is chosen then you may select a block from the builder to be targeted for the reaction.

## Response Action

Pick the message action you want reactions to be added to from this menu.

<figure><img src="/files/1v3gsBStAiWKxxkoIDWO" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Specific message ID" %}
When this type is selected, it will allow you to choose a specific message to add a reaction to in your discord server by specifying the IDs.

### Channel ID

In this field is where you input the channel ID of where the message is located to target it. This field also only accepts a plain channel ID with no extra symbols or spaces / [variables](/custom-commands-and-events/variables).

<figure><img src="/files/XkrjO0Mqiqcspp8d9eTA" alt=""><figcaption></figcaption></figure>

### Message ID

In this field is where you input the message ID of the message you want to react to. This field also only accepts a plain message ID or a [variable](/custom-commands-and-events/variables) that contains one.

<figure><img src="/files/BjHFw5yv8EfP47pNOPxi" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Reactions

In this section is where you can choose and apply which reactions will be added to the targeted message. Click the "+" icon to add the reactions. This field only allows you to add default emojis.

<figure><img src="/files/fbk7fWU5YZ6MbZbmy8F0" alt=""><figcaption></figcaption></figure>

## Additional Reactions

Since you can't pick custom emojis from the [#reactions](#reactions "mention") field, this input allows you to add custom reactions to the message. Separate the reactions with commas and you can learn more about how to input a custom emoji [here](/getting-started/standard-practices/advanced-practices#how-can-i-get-a-custom-emojis-id).

<figure><img src="/files/FFAKQWlUE8xnQsJoiMvN" alt=""><figcaption></figcaption></figure>


# Pin a Message

<figure><img src="/files/QGdNHmJ7mQrXc9Pm5hEa" alt=""><figcaption></figcaption></figure>

When triggered, the Pin a Message action pins a message associated with the command or event it is used in. This will also trigger a system message in the channel showing that a message has been pinned.

## Response Action

In this section, you can manage which message the bot will pin. You can select from a dropdown that will display the bot's messages, as well as any related to the event, if applicable. The selected message will be highlighted in red.&#x20;

<figure><img src="/files/PHqpYOC2qnL4KQ68cwP6" alt=""><figcaption></figcaption></figure>

***

Below is an example of a simple command that sends a [Plain Text Reply](/custom-commands-and-events/actions/legacy-reply-actions/plain-text-reply) and pins it.

<figure><img src="/files/eEPx0DoCqSJ0BjUmxkLk" alt=""><figcaption></figcaption></figure>


# Create a Transcript

<figure><img src="/files/5fZFPlfgJbSfoVJYQM5D" alt=""><figcaption></figcaption></figure>

The create transcript action lets you create and view a transcript containing up to 1000 messages. You can review all transcripts you have created in the [trancripts module](https://dashboard.botghost.com/dashboard/transcripts).&#x20;

## Settings

### Variable Name

In the variable field you can enter the variable that you want to use to access information about the transcript.&#x20;

<figure><img src="/files/HdMEM5KoBUbKrRqQgekr" alt=""><figcaption></figcaption></figure>

### Target Channel

The target channel is the channel that you will get the transcript from.

{% tabs %}
{% tab title="Current Channel" %}
If you wish to get a transcript of the channel the command was used in, select "Current Channel" in the Target Channel field.&#x20;

<figure><img src="/files/4I1wIZ98IBkGr4BLJWJw" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Channel ID" %}
If you wish to get a transcript of a specific channel, select "Channel ID" in the Target Channel field.

#### Channel ID

In this field you can enter the ID of the channel you want to get the transcript of. You can use variables in this field.&#x20;

<figure><img src="/files/D0CQWyxhGWNfKOaVPEDn" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

### Transcript Name

This will be the name of your transcript. It will be shown on the top of your channel's transcript.&#x20;

<figure><img src="/files/0Yk6gm1b4Tzqepm1v9fg" alt=""><figcaption></figcaption></figure>

### Tag

The tag setting is an optional field where you can enter a tag to easily sort out your transcripts.&#x20;

<figure><img src="/files/Zugz3z3TUyCTC54H5LFN" alt=""><figcaption></figcaption></figure>

### Message limit

In this setting, you can enter how many messages you want to include in your channel transcript. It can be as less as 1 and as much as 1000.&#x20;

<figure><img src="/files/UiOWAVkPNEud5n7RRtKM" alt=""><figcaption></figcaption></figure>

### Bot Messages

In this menu you can select whether or not you want the transcript to ignore bot messages. If you choose to ignore bot messages, they will not be shown in the transcript.&#x20;

<figure><img src="/files/0sIm4chXGVfFDFqzChUF" alt=""><figcaption></figcaption></figure>

### Data Range Filter

When you enable this toggle, you will be able to choose a date range from when you want to transcript messages. Messages before and after will be ignored.&#x20;

<figure><img src="/files/VhKYzDnijqJxM0cMZ5tN" alt=""><figcaption></figcaption></figure>

### Theme

In the theme field you can set up how you want the transcript to look.&#x20;

{% tabs %}
{% tab title="Simple Theme" %}
The simple theme can be accessed by selecting "Simple Theme" in the Theme field.

<figure><img src="/files/vKKunCatBTbSlA6yVrxL" alt=""><figcaption></figcaption></figure>

#### Brand Name

In this field you can optionally enter your brand's (or bot's) name. This will be shown at the top of the transcript.&#x20;

#### Primary Color

Here you can enter what color you want to primarily use.&#x20;

#### Density

Here you can select the spaces between messages in the transcript.&#x20;
{% endtab %}

{% tab title="Discord Theme" %}
The Discord theme can be accessed by selecting "Discord Theme" in the Theme field.

<figure><img src="/files/p6Mvg4BcsejVzWSsjARb" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

### Password Protection

If you wish, you can protect your transcript with a password. This way, only people that know this password can review the transcript.&#x20;

<figure><img src="/files/DdPZYVVzv5rJbjCx2blH" alt=""><figcaption></figcaption></figure>

## Variables

This block comes with a few variables that you can use:

<figure><img src="/files/ac6jIINMuf1dMJhiiHdE" alt=""><figcaption></figcaption></figure>

| Variable                    | Details                                                                                     |
| --------------------------- | ------------------------------------------------------------------------------------------- |
| `{trancript}`               | This variable is used to access the URL link to your transcript.                            |
| `{trancript.url}`           | This variable is used to access the URL link to your transcript.                            |
| `{trancript.download_url}`  | This variable will return a link to download the transcript.                                |
| `{trancript.raw_url}`       | When used, this variable will return an URL that can be used as an attachment for messages. |
| `{trancript.id}`            | This variable will return the ID of the transcript.                                         |
| `{trancript.message_count}` | When used, this variable returns the count of messages in the transcript.                   |
| `{trancript.name}`          | This variable will return the name of your transcript.                                      |
| `{trancript.channel_id}`    | This variable is used to access the ID of the channel where the transcript has been made.   |
| `{trancript.guild_id}`      | This variable is used to access the ID of the server where the transcript has been made.    |


# Custom Variable Actions

The command builder offers multiple custom variable actions. They allow you to store and manage already stored information. Below you may find some general information about each block. Click on its name for more information.

<table><thead><tr><th data-type="content-ref">Block</th><th>Information</th></tr></thead><tbody><tr><td><a href="/pages/WfS2s7L9tqmZmgMEaPtP">/pages/WfS2s7L9tqmZmgMEaPtP</a></td><td>The set variable action allows you to set or change the value of a custom variable by using a preset string, variables, or a combination of both.</td></tr><tr><td><a href="/pages/UTV4CC1DS8BEwAz1In3R">/pages/UTV4CC1DS8BEwAz1In3R</a></td><td>The run equation on variable action allows you to modify the value of a custom variable by applying a numerical equation to the current value.</td></tr><tr><td><a href="/pages/Biy0WEQMie7xjWbxba41">/pages/Biy0WEQMie7xjWbxba41</a></td><td>The delete variable action allows you to reset the value of a custom variable back to its default value.</td></tr></tbody></table>


# Set Variable

<figure><img src="/files/vZKXLv10WxCsSK7lGprr" alt=""><figcaption></figcaption></figure>

The Set Variable action when triggered sets or changes the value of any custom variable. It can be referenced in any action or condition throughout your bot's commands and events. All variables and options can be used in the content of the value.

## Custom Variable

In this section, you can manage which variable the bot will set. You can select from a dropdown that will display the bot's variables. Variables on this list can be added, edited, and removed using the [Data Storage](/custom-commands-and-events/data-storage) module.

<figure><img src="/files/TWz64NfeVH1SDXBzOSYU" alt=""><figcaption></figcaption></figure>

## Targets

When using the Run Equation on Variable action on a user or channel variable, a Targets section will be displayed. This will allow you to set the user or channel to set the variable for.

### User Target

{% hint style="info" %}
User Target only appears for user variables.
{% endhint %}

The Set Variable action has three options that change to whom the variable of the action is stored. Below you can find detailed information about each option and how it can be used.

<figure><img src="/files/nqtkrTk2VWh6Wa4E5Yrx" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="User who used the command" %}
By selecting this option your Variable will be stored to the user who used the most recent interaction; for example, the most recent button press, select menu choice, command run or the user who triggered the custom event.
{% endtab %}

{% tab title="User option" %}
In commands, by selecting this option your Variable will be stored to a user selected in a user option.

<figure><img src="/files/hyeA8jOm56D9vYE63rIm" alt=""><figcaption></figcaption></figure>

### User Option

Here you can set the option variable for the [#user-option](#user-option "mention") (purple blocks) you are using. These can be easily added through the variable selector by clicking the **Clipboard** button.
{% endtab %}

{% tab title="User ID" %}
By selecting this option your Variable will be stored to a user specified via their user ID.

<figure><img src="/files/pRGcROJBnbSM5isavezu" alt=""><figcaption></figcaption></figure>

### User ID

Here you can set the ID of the user to set a variable for. You can do this by pasting an ID directly from Discord (learn how [here](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID#h_01HRSTXPS5H5D7JBY2QKKPVKNA)) or using a variable that returns a user ID. These can be easily added through the variable selector by clicking the **Clipboard** button.
{% endtab %}
{% endtabs %}

### Channel Target

{% hint style="info" %}
Channel Target only appears for channel variables.
{% endhint %}

The Set Variable action has two options that change to which channel the variable of the action is stored. Below you can find detailed information about each option and how it can be used.

<figure><img src="/files/Q5FN18CwlhbItPs2PxyX" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Specific channel or variable" %}
By selecting this option your Variable will be stored to a channel specified via its ID.

<figure><img src="/files/1vSWJwN7GclZeoeKyAb6" alt=""><figcaption></figcaption></figure>

### Channel ID or Variable

Here you can set the ID of the channel to set a variable for. You can do this by pasting an ID directly from Discord (learn how [here](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID#h_01HRSTXPS5H5D7JBY2QKKPVKNA)) or using a variable that returns a channel ID. These can be easily added through the variable selector by clicking the **Clipboard** button.
{% endtab %}

{% tab title="Channel the command was used in" %}
By selecting this option your Variable will be stored to the channel the most recent interaction was used in; for example, the most recent button press, select menu choice, command run or the channel of the custom event.
{% endtab %}
{% endtabs %}

### Server Target

{% hint style="info" %}
Server Target does not appear for global variables.&#x20;
{% endhint %}

You can optionally target a specific server with the Set Variable action. If you enter a server ID in this field, the variable will be set for that server.&#x20;

<figure><img src="/files/TDCzkVL9IV3AuEEYL4OG" alt=""><figcaption></figcaption></figure>

***

Some Variable Types will display differently than others. Below you may find some general information about each type. Click on its name for more information on setting it.

| Variable Type                                            | Information                                                                                                                             |
| -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| [#text-variables](#text-variables "mention")             | A text variable stores a string of text for a server or the bot.                                                                        |
| [#number-variables](#number-variables "mention")         | A number variable stores a number for a server or the bot.                                                                              |
| [#collection-variables](#collection-variables "mention") | A collection variable stores multiple text values as an array. These arrays can be managed by their values and the positions of values. |
| [#object-variables](#object-variables "mention")         | An object variable stores a string of text by setting key value pairs. These strings can be accessed by dot notations.                  |

## Text Variables

A text variable stores a string of text for a server or the bot.

### Value

The value of the action is the actual message that the bot should store when the action is triggered. You can use any variable or option in the content of this value. These can be easily added through the variable selector by clicking the **Clipboard** button.

<figure><img src="/files/1DUVzLK2sEoOOw6Hwp61" alt=""><figcaption></figcaption></figure>

## Number Variables

A number variable stores a number for a server or the bot.

### Value

The value of the action is the actual number that the bot should store when the action is triggered. You can use any variable or option in the content of this value. These can be easily added through the variable selector by clicking the **Clipboard** button.

<figure><img src="/files/GrM5Ua98mmPibhgfYwoi" alt=""><figcaption></figcaption></figure>

## Collection Variables

{% hint style="info" %}
Collections start at position 0.
{% endhint %}

A collection variable stores multiple values as an array. These arrays can be managed by their values and the positions of values.

### Collection Operation

The manipulation type with the provided 'Custom Variable' field. There are several operations to choose from. Below you can find detailed information about each operation and how it can be used.

{% tabs %}
{% tab title="Push value to front" %}
The Push value to front operation allows you to add a value at the first position, `0`, of a collection. This will increase the position of each value ahead of it by 1.&#x20;

### Value

The value of the action is the actual message or number that the bot should store when the action is triggered. You can use any variable or option in the content of this value. These can be easily added through the variable selector by clicking the **Clipboard** button.

<figure><img src="/files/aUqbxG7Hxq6Yp13f3ID8" alt=""><figcaption></figcaption></figure>

### Examples

| Before                         | Value                              | After                                                    |
| ------------------------------ | ---------------------------------- | -------------------------------------------------------- |
| `[Value 0,Value 1]`            | `Hello`                            | `[Hello,Value 0,Value 1]`                                |
| `[Hello,Value 0,Value 1]`      | `{user_name}`                      | `[User,Hello,Value 0,Value 1]`                           |
| `[User,Hello,Value 0,Value 1]` | `I was stored from {channel_name}` | `[I was stored from general,User,Hello,Value 0,Value 1]` |
| {% endtab %}                   |                                    |                                                          |

{% tab title="Push value to end" %}
The Push value to end operation allows you to add a value at the last position of a collection.

### Value

The value of the action is the actual message or number that the bot should store when the action is triggered. You can use any variable or option in the content of this value. These can be easily added through the variable selector by clicking the **Clipboard** button.

<figure><img src="/files/q8x2W8fwI3uVUnuGDEVS" alt=""><figcaption></figcaption></figure>

### Examples

| Before                         | Value                              | After                                                    |
| ------------------------------ | ---------------------------------- | -------------------------------------------------------- |
| `[Value 0,Value 1]`            | `Hello`                            | `[Value 0,Value 1,Hello]`                                |
| `[Value 0,Value 1,Hello]`      | `{user_name}`                      | `[Value 0,Value 1,Hello,User]`                           |
| `[Value 0,Value 1,Hello,User]` | `I was stored from {channel_name}` | `[Value 0,Value 1,Hello,User,I was stored from general]` |
| {% endtab %}                   |                                    |                                                          |

{% tab title="Remove first value" %}
The Remove first value operation allows you to remove a value at the first position, `0`, of a collection. This will decrease the position of each value ahead of it by 1.

### Examples

| Before                                                   | After                          |
| -------------------------------------------------------- | ------------------------------ |
| `[I was stored from general,User,Hello,Value 0,Value 1]` | `[User,Hello,Value 0,Value 1]` |
| `[User,Hello,Value 0,Value 1]`                           | `[Hello,Value 0,Value 1]`      |
| `[Hello,Value 0,Value 1]`                                | `[Value 0,Value 1]`            |
| {% endtab %}                                             |                                |

{% tab title="Remove last value" %}
The Remove last value operation allows you to remove a value at the last position of a collection.

### Examples

| Before                                                   | After                          |
| -------------------------------------------------------- | ------------------------------ |
| `[Value 0,Value 1,Hello,User,I was stored from general]` | `[Value 0,Value 1,Hello,User]` |
| `[Value 0,Value 1,Hello,User]`                           | `[Value 0,Value 1,Hello]`      |
| `[Value 0,Value 1,Hello]`                                | `[Value 0,Value 1]`            |
| {% endtab %}                                             |                                |

{% tab title="Set value at position" %}
The Set value at position operation allows you to add a value at any position of a collection. This will replace the old value of the collection at that position.

### Value

The value of the action is the actual message or number that the bot should store when the action is triggered. You can use any variable or option in the content of this value. These can be easily added through the variable selector by clicking the **Clipboard** button.

<figure><img src="/files/TuKxDw4VRYET7c3Kmk2w" alt=""><figcaption></figcaption></figure>

### Position

The position of the action is the numbered location of the value you're adding. Collection values start at 0 and increase by 1 for each value before them. You can use any variable or option in the content of this position. These can be easily added through the variable selector by clicking the **Clipboard** button.

### Examples

| Before                 | Value                              | Set at Position | After                                    |
| ---------------------- | ---------------------------------- | --------------- | ---------------------------------------- |
| `[Value 0,Value 1]`    | `Hello`                            | 0               | `[Hello,Value 1]`                        |
| `[Hello,Value 1]`      | `{user_name}`                      | 2               | `[Hello,Value 1,User]`                   |
| `[Hello,Value 1,User]` | `I was stored from {channel_name}` | 1               | `[Hello,I was stored from general,User]` |
| {% endtab %}           |                                    |                 |                                          |

{% tab title="Remove value at position" %}
The Remove value at position operation allows you to remove a value at any position of a collection. This will decrease the position of each value ahead of it by 1.

### Position

The position of the action is the numbered location of the value you're removing. Collection values start at 0 and increase by 1 for each value before them. You can use any variable or option in the content of this position. These can be easily added through the variable selector by clicking the **Clipboard** button.

### Examples

| Before                                                   | Position | After                          |
| -------------------------------------------------------- | -------- | ------------------------------ |
| `[Hello,Value 0,User,Value 1,I was stored from general]` | 4        | `[Hello,Value 0,User,Value 1]` |
| `[Hello,Value 0,User,Value 1]`                           | 2        | `[Hello,Value 0,Value 1]`      |
| `[Hello,Value 0,Value 1]`                                | 0        | `[Value 0,Value 1]`            |
| {% endtab %}                                             |          |                                |

{% tab title="Remove value in collection" %}
The Remove value in collection operation allows you to remove the first occurrence of a value in a collection. This will decrease the position of each value ahead of it by 1.

### Value

The value of the action is the actual message or number that the bot should remove from the collection when the action is triggered. You can use any variable or option in the content of this value. These can be easily added through the variable selector by clicking the **Clipboard** button.

<figure><img src="/files/TuKxDw4VRYET7c3Kmk2w" alt=""><figcaption></figcaption></figure>

### Examples

<table><thead><tr><th width="180">Before</th><th>Value</th><th>After</th></tr></thead><tbody><tr><td><code>[Value 0,Value 1,Hello,User,I was stored from general]</code></td><td><code>I was stored from {channel_name}</code></td><td><code>[Value 0,Value 1,Hello,User]</code></td></tr><tr><td><code>[Value 0,Value 1,Hello,User]</code></td><td><code>Hello</code></td><td><code>[Value 0,Value 1,User]</code></td></tr><tr><td><code>[Value 0,Value 1,User]</code></td><td><code>Value 1</code></td><td><code>[Value 0,User]</code></td></tr></tbody></table>
{% endtab %}

{% tab title="Clear collection" %}
The Clear a collection operation allows you to empty, or remove all values of, a collection variable.

### Examples

<table><thead><tr><th width="245">Before</th><th>After</th></tr></thead><tbody><tr><td><code>[Value 0,Value 1,Hello,User,I was stored from general]</code></td><td><code>[]</code></td></tr><tr><td><code>[Value 0,Value 1,Hello,User]</code></td><td><code>[]</code></td></tr><tr><td><code>[Value 0,Value 1,User]</code></td><td><code>[]</code></td></tr></tbody></table>
{% endtab %}
{% endtabs %}

## Object Variables

An [object](/custom-commands-and-events/data-storage/objects) variable stores a string of text by setting key value pairs. These strings can be accessed by dot notations.

### Key

The key of the [object](/custom-commands-and-events/data-storage/objects) property to change the value from. You can use any existing or new key from the object variable to set a value.

<figure><img src="/files/btEcIEtKvQQF2LPKYepj" alt=""><figcaption></figcaption></figure>

### Value

The value of the action is the actual message that the bot should store when the action is triggered. You can use any [variable](/custom-commands-and-events/variables) or [option](/custom-commands-and-events/options) in the content of this value. These can be easily added through the variable selector by clicking the **Clipboard** button.

<figure><img src="/files/RNJqKq0EugaKj2QbXxF8" alt=""><figcaption></figcaption></figure>


# Run Equation on Variable

<figure><img src="/files/BHBsv9LNam5KQB9URwoI" alt=""><figcaption></figcaption></figure>

The Run Equation on Variable action when triggered applies a numerical equation to the value of any custom variable. It can be referenced in any action or condition throughout your bot's commands and events. All variables and options can be used in the content of the equation.

{% hint style="info" %}
This action cannot modify collection variables.
{% endhint %}

## Custom Variable

In this section, you can manage which variable the bot will set. You can select from a dropdown that will display the bot's variables. Variables on this list can be added, edited, and removed using the [Data Storage](/custom-commands-and-events/data-storage) module.

<figure><img src="/files/Gf04KqEukJZXkZdGbr3g" alt=""><figcaption></figcaption></figure>

## Targets

When using the Run Equation on Variable action on a user or channel variable, a Targets section will be displayed. This will allow you to set the user or channel to reset the variable for.

### User Target

{% hint style="info" %}
User Target only appears for user variables.
{% endhint %}

The Run Equation on Variable action has three options that change to whom the variable of the action is stored. Below you can find detailed information about each option and how it can be used.

<figure><img src="/files/nqtkrTk2VWh6Wa4E5Yrx" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="User who used the command" %}
By selecting this option your variable will be stored to the user who used the most recent interaction; for example, the most recent button press, select menu choice, command run or the user who triggered the custom event.
{% endtab %}

{% tab title="User option" %}
In commands, by selecting this option your variable will be stored to a user selected in a user option.

<figure><img src="/files/hyeA8jOm56D9vYE63rIm" alt=""><figcaption></figcaption></figure>

### User Option

Here you can set the option variable for the [#user-option](#user-option "mention") (purple blocks) you are using. These can be easily added through the variable selector by clicking the **Clipboard** button.
{% endtab %}

{% tab title="User ID" %}
By selecting this option your variable will be stored to a user specified via their user ID.

<figure><img src="/files/pRGcROJBnbSM5isavezu" alt=""><figcaption></figcaption></figure>

### User ID

Here you can set the ID of the user to set a variable for. You can do this by pasting an ID directly from Discord (learn how [here](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID#h_01HRSTXPS5H5D7JBY2QKKPVKNA)) or using a variable that returns a user ID. These can be easily added through the variable selector by clicking the **Clipboard** button.
{% endtab %}
{% endtabs %}

### Channel Target

{% hint style="info" %}
Channel Target only appears for channel variables.
{% endhint %}

The Run Equation on Variable action has two options that change to which channel the variable of the action is stored. Below you can find detailed information about each option and how it can be used.

<figure><img src="/files/Q5FN18CwlhbItPs2PxyX" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Specific channel or variable" %}
By selecting this option your Variable will be stored to a channel specified via its ID.

<figure><img src="/files/1vSWJwN7GclZeoeKyAb6" alt=""><figcaption></figcaption></figure>

### Channel ID or Variable

Here you can set the ID of the channel to set a variable for. You can do this by pasting an ID directly from Discord (learn how [here](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID#h_01HRSTXPS5H5D7JBY2QKKPVKNA)) or using a variable that returns a channel ID. These can be easily added through the variable selector by clicking the **Clipboard** button.
{% endtab %}

{% tab title="Channel the command was used in" %}
By selecting this option your Variable will be stored to the channel the most recent interaction was used in; for example, the most recent button press, select menu choice, command run or the channel of the custom event.
{% endtab %}
{% endtabs %}

### Server Target

{% hint style="info" %}
Server Target does not appear for global variables.&#x20;
{% endhint %}

You can optionally target a specific server with the Set Variable action. If you enter a server ID in this field, the variable will be set for that server.&#x20;

<figure><img src="/files/TDCzkVL9IV3AuEEYL4OG" alt=""><figcaption></figcaption></figure>

## Objects

{% hint style="info" %}
These fields only appear for object variables.
{% endhint %}

[Object](/custom-commands-and-events/data-storage/objects) type variables in the run equation block function the same as they would in the [set variable](/custom-commands-and-events/actions/custom-variable-actions/set-variable) block. In this case it runs an equation on a specific key that is accessible via dot notation. Once the command / event is triggered, it sets the result / value for that key.

### Key

This field targets the key of the [object](/custom-commands-and-events/data-storage/objects) property's value to run the equation on. You can use any existing or new key from the object variable.

<figure><img src="/files/UIYMzMuPYjGWLIF3uhPE" alt=""><figcaption></figcaption></figure>

### Value

The value is the actual equation that the bot should store when the action is triggered. You can use any [variable](/custom-commands-and-events/variables) or [option](/custom-commands-and-events/options) in the content of this value. These can be easily added through the variable selector by clicking the **Clipboard** button.

<figure><img src="/files/eE9fgTEzdH97xM3ZqRxq" alt=""><figcaption></figcaption></figure>

## Round Result

The Run Equation on Variable action has two options that change whether decimals can be stored in the variable of the action. Below you can find detailed information about each option and how it can be used.

<figure><img src="/files/iBijHDTLhawqjailwBPe" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Yes" %}
By selecting this option your Variable will be stored as the nearest whole number, regardless of whether the equation's solution contains a decimal.

{% hint style="info" %}
The number will be rounded up if mathematically correct.
{% endhint %}
{% endtab %}

{% tab title="No" %}
By selecting this option your Variable will be stored as the solution to the equation, without being rounded. This will allow any potential decimal found in the result to be stored in the variable of the action.
{% endtab %}
{% endtabs %}

## Equation

The equation of the action is the actual expression that the bot should calculate and store when the action is triggered. The result can be negative, and the equation will respect order of operations. You can use any variable or option in the content of this reply. These can be easily added through the variable selector by clicking the **Clipboard** button.

<figure><img src="/files/3Y8GZ9YuwUrlwU8Sjqlj" alt=""><figcaption></figcaption></figure>

Below is a reference of the signs that can be used in the equation:

| Signs | Information                                                                                      |
| ----- | ------------------------------------------------------------------------------------------------ |
| var   | Represents the current value of the [#custom-variable](#custom-variable "mention") you selected. |
| +     | Represents addition.                                                                             |
| -     | Represents subtraction.                                                                          |
| \*    | Represents multiplication.                                                                       |
| /     | Represents division.                                                                             |
| ^     | Represents exponentiation.                                                                       |
| ( )   | Represents brackets. Using them will affect the order of operations in your equation.            |

Below is a list of some examples for equations:

| Equation     | Value of "var" | Result |
| ------------ | -------------- | ------ |
| var + 5      | 1              | 6      |
| var \* 2     | 4              | 8      |
| var / 2      | 8              | 4      |
| var - 5      | 6              | 1      |
| var ^ 3      | 2              | 8      |
| var^(1/3)    | 8              | 2      |
| var \* (5+2) | -2             | -14    |


# Delete Variable

<figure><img src="/files/gMd2VOKq2WUESMCyj4xU" alt=""><figcaption></figcaption></figure>

The Delete Variable action when triggered resets the value of any custom variable to the base value defined in its settings. It can be referenced in any action or condition throughout your bot's commands and events.

## Custom Variable

In this section, you can manage which variable the bot will reset. You can select from a dropdown that will display the bot's variables. Variables on this list can be added, edited, and removed using the [Data Storage](/custom-commands-and-events/data-storage) module.

<figure><img src="/files/DRNVZEaxhhPpCiX8Rh7C" alt=""><figcaption></figcaption></figure>

## Targets

When using the Delete Variable action on a user or channel variable, a Targets section will be displayed. This will allow you to set the user or channel to reset the variable for.

### User Target

{% hint style="info" %}
User Target only appears for user variables.
{% endhint %}

The Delete Variable action has three options that change to whom the variable of the action is stored. Below you can find detailed information about each option and how it can be used.

<figure><img src="/files/fEA75EbmFPIsnQrRzLkS" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="User who used the command" %}
By selecting this option your variable will be stored to the user who used the most recent interaction; for example, the most recent button press, select menu choice, command run or the user who triggered the custom event.
{% endtab %}

{% tab title="User option" %}
In commands, by selecting this option your variable will be stored to a user selected in a user option.

<figure><img src="/files/hyeA8jOm56D9vYE63rIm" alt=""><figcaption></figcaption></figure>

### User Option

Here you can set the option variable for the [#user-option](#user-option "mention") (purple blocks) you are using. These can be easily added through the variable selector by clicking the **Clipboard** button.
{% endtab %}

{% tab title="User ID" %}
By selecting this option your variable will be stored to a user specified via their user ID.

<figure><img src="/files/pRGcROJBnbSM5isavezu" alt=""><figcaption></figcaption></figure>

### User ID

Here you can set the ID of the user to set a variable for. You can do this by pasting an ID directly from Discord (learn how [here](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID#h_01HRSTXPS5H5D7JBY2QKKPVKNA)) or using a variable that returns a user ID. These can be easily added through the variable selector by clicking the **Clipboard** button.
{% endtab %}

{% tab title="All Users" %}
By selecting this option the value of the variable will be reset for all users who have a record in the variable.
{% endtab %}
{% endtabs %}

### Channel Target

{% hint style="info" %}
Channel Target only appears for channel variables.
{% endhint %}

The Delete Variable action has two options that change to which channel the variable of the action is stored. Below you can find detailed information about each option and how it can be used.

<figure><img src="/files/RUZtNVmRZFhPYovQLM45" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Channel the command was used in" %}
By selecting this option your variable will be stored to the channel the most recent interaction was used in; for example, the most recent button press, select menu choice, command run or the channel of the custom event.
{% endtab %}

{% tab title="Specific channel or variable" %}
By selecting this option your variable will be stored to a channel specified via its ID.

<figure><img src="/files/1vSWJwN7GclZeoeKyAb6" alt=""><figcaption></figcaption></figure>

### Channel ID or Variable

Here you can set the ID of the channel to set a variable for. You can do this by pasting an ID directly from Discord (learn how [here](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID#h_01HRSTXPS5H5D7JBY2QKKPVKNA)) or using a variable that returns a channel ID. These can be easily added through the variable selector by clicking the **Clipboard** button.
{% endtab %}

{% tab title="All channels" %}
By selecting this option the value of the variable will be reset for all channels that have a record in the variable.
{% endtab %}
{% endtabs %}

### Server Target

{% hint style="info" %}
Server Target does not appear for global variables.&#x20;
{% endhint %}

You can optionally target a specific server with the Set Variable action. If you enter a server ID in this field, the variable will be set for that server.&#x20;

<figure><img src="/files/TDCzkVL9IV3AuEEYL4OG" alt=""><figcaption></figcaption></figure>

## Objects

{% hint style="info" %}
This only works for object type custom variables.
{% endhint %}

Likewise to other variable actions, for [objects](/custom-commands-and-events/data-storage/objects) the delete variable action will target a specific key or all keys to delete a value from.

<figure><img src="/files/ppl9ojeJlmxsMHy3dozk" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Specific key" %}
Targeting a specific key will delete a value from a specific key entered in the field below.

### Key

This field only accepts the name of the key that was made in data storage. See the [objects](/custom-commands-and-events/data-storage/objects) page for more info.

<figure><img src="/files/uUPWXozbHibwIb8J8SAF" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="All Keys" %}
This selection will delete all the values from all the keys of the [object](/custom-commands-and-events/data-storage/objects).
{% endtab %}
{% endtabs %}


# API Actions

The command builder offers multiple API actions. They allow you to send and retrieve information for external websites. Below you may find some general information about each block. Click on its name for more information.

<table><thead><tr><th data-type="content-ref">Block</th><th>Information</th></tr></thead><tbody><tr><td><a href="/pages/ZC1UoW6R0L07jIOglsPz">/pages/ZC1UoW6R0L07jIOglsPz</a></td><td>The send an API request action allows you to run a GET, POST, PUT, PATCH, DELETE, or HEAD request to an external website.</td></tr><tr><td><a href="/pages/XFq8gA9l3RBNYwzR97Aw">/pages/XFq8gA9l3RBNYwzR97Aw</a></td><td>The execute an IFTTT trigger action allows you to trigger an applet linked to your <a href="/pages/CywdQiw8jmG3ktryclQ1">IFTTT</a> account.</td></tr></tbody></table>


# Send an API Request

<figure><img src="/files/eCN4BC9ZJ2ybdheBVxfm" alt=""><figcaption></figcaption></figure>

API Request actions allow you to run a http request when the action is executed. API Requests allow you to access and interact with the resources of another server outside of BotGhost. You can then use the returned information in your custom commands and events.&#x20;

{% embed url="<https://www.youtube.com/watch?t=1566s&v=uQpeBERJvVI>" %}

{% hint style="info" %}
For the safety of your bot token you can use **{TOKEN\_SECRET}** in the HTTP Header instead of copy & pasting your bot token when sending requests to the [Discord API](https://discord.com/developers/docs/intro).
{% endhint %}

## Setting a request name

API request actions use a custom variable that you can use to access the data returned by the request. You must first set a unique name that will be used as the variable for this request.

<figure><img src="/files/SDxko6UKbXj1Ld6BABfJ" alt=""><figcaption><p>Setting a name for the API Request</p></figcaption></figure>

This name must be different from any other API request in the command or event.

## Building your request

Once you have set the name for this action you will be able to start building your API request. Click the **Request Builder** to start building out your request.

<figure><img src="/files/DtRWrRY9kPPhz27UpyCQ" alt=""><figcaption><p>The Request Builder</p></figcaption></figure>

This will open up the Request Builder modal which has six main components.

&#x20;

<figure><img src="/files/Bte2hAETaWYf486SKT2Y" alt=""><figcaption></figcaption></figure>

### Request URL

At the top of the window you must first enter the URL of the API you wish to send a HTTP request to. If you would like to find some APIs to play around with check out this [collection](https://rapidapi.com/collection/cool-apis). Paste the URL of the API endpoint in the URL field at the top.\
\
Next, select the request type of the URL you are trying to interact with. Consult the documentation for the API you are trying to interact with for this field, but in general a GET request retrieves data and a POST request sends data.

<figure><img src="/files/ueW6vbz05OMHKvMoUPac" alt=""><figcaption></figcaption></figure>

### URL Params

URL parameters or query strings are the way to structure additional information for the URL. These are generally added to the end of the Request URL after a ? symbol. You can add these by clicking the Add button on the **URL Params** menu.

<figure><img src="/files/CEnBRIiwXMhJYvJ91pc6" alt=""><figcaption></figcaption></figure>

These values will be added to the end of the URL and encoded correctly. You can use all variables in both the key and value.

### HTTP Headers

Some APIs require you to pass headers along with the request to identify who the request is coming from or other information specific to that API. To add a header click on the **HTTP Headers** option in the menu and then click **Add.** You can use all variables in both the key and value.

<figure><img src="/files/XkOX73tIjiFOP1hbqNfZ" alt=""><figcaption></figcaption></figure>

This will create a new empty Header for your request. Enter the key and value for your header as defined by the APIs documentation. For example if the API requires Basic Authorization, your header might look like this:

<figure><img src="/files/3pXkZn3ZqLZaKFQnL8A9" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
For the safety of your bot token you can use **{TOKEN\_SECRET}** in the HTTP Header instead of copy & pasting your bot token when sending requests to the [Discord API](https://discord.com/developers/docs/intro). The value of the "Authorization" key should look like this: `Bot {TOKEN_SECRET}`
{% endhint %}

### Request Body

If you select a request type that requires some data to be sent along with it, you may attach this data through adding data to your **Request Body.** To add new data to your request's body, click the **Request Body** menu option and then click **Add.**

<figure><img src="/files/mGgjfpegIfOQWBVG3069" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
You can switch to **Raw JSON Body** mode to send data as JSON instead of using key-value fields. This is useful if an API needs a certain JSON format.

![](/files/j14BOWXYlmTeNY2A9PWT)
{% endhint %}

Similarly to headers, fill in the key and value of the data you wish to add to the request body. You can use all variables in both the key and value.

### Options

The request builder has a set of options that change how your request is executed by the BotGhost backend.&#x20;

<figure><img src="/files/c4QKvDUX0GAn5fhYI7Zx" alt=""><figcaption></figcaption></figure>

| Option                                      | Explanation                                                                                                                                            |
| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Automatically exclude fields that are empty | This field will remove headers and body fields that are empty from the request.                                                                        |
| Replace variables in the URL                | Enabling this option will mean BotGhost will search for and replace variables in the URL of the request.                                               |
| Replace variables in the URL Params         | Enabling this option will mean BotGhost will search for and replace BotGhost variables in the URL Params.                                              |
| Replace variables in the HTTP Headers       | Enabling this option will mean BotGhost will search for and replace variables in the Headers of the request                                            |
| Replace variables in Request Body           | Enabling this option will mean BotGhost will search for and replace variables in the Request Body.                                                     |
| Sanitize response data                      | Response data will be sanitized to ensure that any variables (i.e. `{user_id}`) are not resolved when used in other options (recommended for security) |

## Testing your request

You are able to simulate and test how your API Request action will respond and test the potential value of a variable returned by the API. After you have filled out the above options, click the **Test Request** button to run a test request.

<figure><img src="/files/fLQkb2LBjeDUyfRETFgr" alt=""><figcaption></figcaption></figure>

This will return the response, status and status text of the API request.&#x20;

## API Action Variables

You can access the data returned by using the name you set earlier and **dot notation.** Click on the value you want to automatically copy the variable required to return that data.\
\
For example using the above example with a name of calculator:

* `{calculator.response.age}` - 64
* `{calculator.response.name}` - Tom
* `{calculator.status}` - 200
* `{calculator.statusText}` - OK

{% hint style="success" %}
You can click on any value in the response to get the variable required to return that data
{% endhint %}

You can test the value of any variable by putting it into the Test Variable input field. &#x20;

<figure><img src="/files/QnH4rUp3QyKa2EOwC4Uc" alt=""><figcaption></figcaption></figure>

If the Variable Result returns either undefined or \[object Object] double check the variable you are trying to test. Only text and numbers can be returned. **You can click on any value in the response to get the variable required to return that data.**

**These variables can then be used in any action or condition.**


# Execute an IFTTT Trigger

<figure><img src="/files/B9JTFkgkhYGcGADmkWgp" alt=""><figcaption></figcaption></figure>

In the Custom Commands and Custom Events Builders, the IFTTT Trigger Action may be used to send data from your BotGhost Bot to IFTTT applets.

Read more about the IFTTT trigger action on the [IFTTT documentation page](/custom-commands-and-events/ifttt#execute-an-ifttt-trigger-action).


# Loop Actions

The command builder offers multiple loop actions. They allow you to start and stop actions from repeating for a set number of times. Below you may find some general information about each block. Click on its name for more information.

<table><thead><tr><th data-type="content-ref">Block</th><th>Information</th></tr></thead><tbody><tr><td><a href="/pages/DpSVk6MeWWDptU9dqhXp">/pages/DpSVk6MeWWDptU9dqhXp</a></td><td>The run a loop action allows you to trigger actions that will repeat for a set number of times.</td></tr><tr><td><a href="/pages/hUGq6b1rSrRnBiEd24eN">/pages/hUGq6b1rSrRnBiEd24eN</a></td><td>The stop a loop action allows you to break out of any active loops within the command or event, and trigger blocks that fall under the "After loop" section.</td></tr></tbody></table>


# Run a Loop

<figure><img src="/files/IFJ8piegyYtTHWenhJ35" alt=""><figcaption></figcaption></figure>

Loops allow you to repeat connected actions and conditions a set amount of times. You can change the number of times a loop is run by setting the loop count with a number or variable. Actions and conditions connected to the Loop X Times block will then be run that many times. Once the loop has finished actions and conditions connected to the 'After Loop' block will be run like normal. This block will open a world of possibilities for users to explore.&#x20;

<figure><img src="/files/fMv2jkaFTdXcNl3K6iYn" alt=""><figcaption></figcaption></figure>

## Settings

### Loop Count

<figure><img src="/files/Fxz3c9Ox6y3bY6p5pO0r" alt=""><figcaption></figcaption></figure>

The "Loop count" section will determine the number of times the actions that follow should repeat. By default this is set to a count of 5, however, you can loop actions up to 1000 times. All [variables](/custom-commands-and-events/variables) can be used. If you want to loop through all values of a collection, you can use the `{lengthOfCollection()}` variable to loop as many times as the length of the collection.

### Timeout

<figure><img src="/files/4VG6iIDeTKOJZ0qpF6t7" alt=""><figcaption></figcaption></figure>

This setting lets you specify the timeout between loop iterations. This means that once one iteration is completed, the bot will wait the provided amount of ms before starting the next iteration. The minimum timeout is 10 milliseconds and the maximum is 600000 milliseconds (10 minutes). Remember that 1 seconds equals to 1000 milliseconds (or ms).

## Limitations

There are a few limitations on loops to discourage abuse of the system:

* Loops have a minimum timeout of 10 ms between each loop and a maximum of 600000 milliseconds (10 minutes).
* You can not run loops inside of loops.
* A max loop count of 1000 exists.

{% hint style="info" %}
These limitations may change as we monitor how people are using loops.
{% endhint %}

## **Loop Variables**&#x20;

This action comes with two variables, they are:

| Variable       | Description                                                                                     |
| -------------- | ----------------------------------------------------------------------------------------------- |
| `{loop_count}` | Returns the current loop count. Starts at 1.                                                    |
| `{loop_index}` | Returns the current loop index. Starts at 0 and is useful for when looping through collections. |

## **Stop a Loop Action**

Loops have a unique [**Stop a Loop** ](/custom-commands-and-events/actions/loop-actions/stop-a-loop)action that can be run to stop any running loop. This action can be used with conditions to conditionally stop a loop.


# Stop a Loop

<figure><img src="/files/9JxlvEOIoew8LBH390NI" alt=""><figcaption></figcaption></figure>

The Stop a Loop block will allow users to stop a loop before it has looped the total count set in the **Run a Loop block**, this will be incredibly helpful when you only want the loop to keep going if a condition is not met.

{% hint style="info" %}
This block has to be under the "Loop x times" block, which means you can't use it before the loop itself or under the "After loop" block
{% endhint %}

<figure><img src="/files/nKgCmp7XqbNhJA3ezNrI" alt=""><figcaption></figcaption></figure>

This block requires no settings as it works directly with the [**Run a Loop**](/custom-commands-and-events/actions/loop-actions/run-a-loop) block. You can use this block with conditions to do a conditional stop on a loop before it has looped through the total loop count set on the **Run a Loop** block.


# Music Actions

{% hint style="warning" %}
Music blocks require a [Premium Subscription](/premium/premium-and-priority-hosting-plans#premium-plans) to function.
{% endhint %}

The command builder offers multiple music blocks. They allow you to play and control music in voice channels in your discord server. Below you may find some general information about each block. Click on its name for more information.

| Block                                                                                                  | Information                                                                                                                                                                                                                                                                                                                         |
| ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Create Music Player](/custom-commands-and-events/actions/music-actions/create-music-player)           | The create a music player action allows you to create a music player for a voice channel, which is required before adding tracks or playing music.                                                                                                                                                                                  |
| [Add to Queue](/custom-commands-and-events/actions/music-actions/add-to-queue)                         | The add to queue action allows you to search for a song and add it to the queue. Requires an active music player.                                                                                                                                                                                                                   |
| [Play Queue](/custom-commands-and-events/actions/music-actions/play-queue)                             | The play queue action starts playing the songs in the music queue. Requires songs to be added through the `Add to Queue` block first.                                                                                                                                                                                               |
| [Pause Music](/custom-commands-and-events/actions/music-actions/pause-music)                           | The pause music action allows you to pause the current music playback. Use `Resume Music` to resume the music playback.                                                                                                                                                                                                             |
| [Resume Music](/custom-commands-and-events/actions/music-actions/resume-music)                         | The resume music action allows you to resume playback that was paused with the `Pause Music` action.                                                                                                                                                                                                                                |
| [Stop Music](/custom-commands-and-events/actions/music-actions/stop-music)                             | The stop music action allows you to stop the current playback and optionally clear the queue.                                                                                                                                                                                                                                       |
| [Disconnect from Voice](/custom-commands-and-events/actions/music-actions/disconnect-from-voice)       | The disconnect from voice action allows you to force the bot to disconnect from the voice channel and optionally destroy the music player. Note that this is different from [Leave a Voice Channel](/custom-commands-and-events/actions/voice-actions/leave-a-voice-channel)as that action is not associated with the music module. |
| [Skip Track](/custom-commands-and-events/actions/music-actions/skip-track)                             | The skip track action allows you to skip to the next track or to a specific position in the queue.                                                                                                                                                                                                                                  |
| [Set Track Position / Seek](/custom-commands-and-events/actions/music-actions/set-track-position-seek) | The set track position (seek) action allows you to change the playback position of the current track, with options for absolute or relative positions.                                                                                                                                                                              |
| [Set Volume](/custom-commands-and-events/actions/music-actions/set-volume)                             | The set volume action allows you to change the playback volume to a number between 0 and 200.                                                                                                                                                                                                                                       |
| [Set Loop Mode](/custom-commands-and-events/actions/music-actions/set-loop-mode)                       | The set loop mode action allows you to set the loop/repeat mode for the music player, with options for no loop, loop track, or loop queue.                                                                                                                                                                                          |
| [Set AutoLeave](/custom-commands-and-events/actions/music-actions/set-autoleave)                       | The set auto-leave action allows you to enable or disable auto-leave, which will disconnect the bot when there are no more tracks in the queue.                                                                                                                                                                                     |
| [Replay Track](/custom-commands-and-events/actions/music-actions/replay-track)                         | The replay track action allows you to restart the current track from the beginning.                                                                                                                                                                                                                                                 |
| [Remove from Queue](/custom-commands-and-events/actions/music-actions/remove-from-queue)               | The remove from queue action allows you to remove a specific song from the queue based on its position, remove a range of songs, or clear the queue entirely.                                                                                                                                                                       |
| [Shuffle Queue](/custom-commands-and-events/actions/music-actions/shuffle-queue)                       | The shuffle queue action allows you to shuffle the music queue in a random order.                                                                                                                                                                                                                                                   |
| [Apply Audio Filter](/custom-commands-and-events/actions/music-actions/apply-audio-filter)             | The apply audio filter action allows you to apply an audio filter (such as bassboost, nighcore, vaporwave, 8d, etc.) to the music player. These can be removed with the `Clear Filters` action.                                                                                                                                     |
| [Clear Filters](/custom-commands-and-events/actions/music-actions/clear-filters)                       | The clear filters action allows you to remove all filters that were added with `Apply Audio Filter` from the music player.                                                                                                                                                                                                          |
| [Search Tracks](/custom-commands-and-events/actions/music-actions/search-tracks)                       | The search tracks block allows you to search for tracks without adding them to the queue, and access them via the {MusicSearch.\*} variables.                                                                                                                                                                                       |


# Create Music Player

{% hint style="warning" %}
This action requires a [Premium Subscription](/premium/premium-and-priority-hosting-plans#premium-plans) to function.
{% endhint %}

<figure><img src="/files/Hs1o3BFdvT2YnmvadvVU" alt="" width="465"><figcaption></figcaption></figure>

The Create Music Player block allows you to create a music player for the server. This must be done before using other music actions.

## Voice Channel

This setting allows you to target a voice channel. You have two options to select from:

{% tabs %}
{% tab title="Current Voice Channel" %}

<figure><img src="/files/knny3rREDrN0mum6aaMS" alt="" width="369"><figcaption></figcaption></figure>

When you select the 'Current Voice Channel' option, the music player will be created in the voice channel the user running the command is currently in.
{% endtab %}

{% tab title="Voice Channel ID" %}

<figure><img src="/files/MZXPSsUSpxzl5cZex21q" alt="" width="375"><figcaption></figcaption></figure>

When you select the 'Voice Channel ID' option, the music player will be created in the voice channel with the specified ID.

### Voice Channel ID

In this field you can enter the ID of the voice channel where you want to create the music player. Variables can be used in this field.
{% endtab %}
{% endtabs %}

## Auto Connect

<figure><img src="/files/6H8dPAhOnIzc8ybIvF3L" alt="" width="365"><figcaption></figcaption></figure>

This option allows you to specify if you would like the bot to automatically connect to the voice channel that the player is created in.

## Initial Volume

<figure><img src="/files/tffMyIt02EVjJ9WI3a8o" alt="" width="374"><figcaption></figcaption></figure>

This option allows you to specify the initial volume of the music player as a percentage from between 0-1000.

* `0` mutes the audio
* `100` sets normal volume
* Values above `100` amplify the volume (e.g., 200 doubles the volume).&#x20;

This can be changed after creation with the [Set Volume](/custom-commands-and-events/actions/music-actions/set-volume) action. Variables can be used in this field.&#x20;

## Initial Loop Mode

<figure><img src="/files/ym7o29DSYsG7Yh1TRuOd" alt="" width="375"><figcaption></figcaption></figure>

This option allows you to set the loop mode of the player.

| Name       | Raw Value | Description                |
| ---------- | --------- | -------------------------- |
| Off        | 0         | Disables looping.          |
| Loop Track | 1         | Repeats the current track. |
| Loop Queue | 2         | Repeats the entire queue.  |

This can be changed after the player is created by using the [Set Loop Mode](/custom-commands-and-events/actions/music-actions/set-loop-mode) action. You can choose this with the dropdown menu, or use a variable that returns the raw value (i.e. 0 1 or 2) of the loop mode you would like to set in the "Loop Mode Variable" setting.

## AutoLeave

<figure><img src="/files/iR7kGOOjtmsLk9SeI7XV" alt="" width="375"><figcaption></figcaption></figure>

This option allows you to enable or disable AutoLeave. When enabled, the bot will automatically leave the voice channel when the queue finishes. This can be changed after the player is created with the [Set AutoLeave](/custom-commands-and-events/actions/music-actions/set-autoleave) action. You can choose this with the dropdown menu, or use a variable that returns true or false in the "AutoLeave Variable" field.


# Add to Queue

{% hint style="warning" %}
This action requires a [Premium Subscription](/premium/premium-and-priority-hosting-plans#premium-plans) to function.
{% endhint %}

<figure><img src="/files/daF4Rh4AzV3a9EIEVfBW" alt=""><figcaption></figcaption></figure>

The Add to Queue action lets you search for tracks or paste a URL and add them to the music player’s queue.

## Server

This setting allows you to target a server. You have two options to select from:

{% tabs %}
{% tab title="Current Server" %}

<figure><img src="/files/AwoU2UKcfbmtcE9P6qob" alt=""><figcaption></figcaption></figure>

When you select the 'Current Server' option, the track will be added to the queue of the current server.
{% endtab %}

{% tab title="Server ID" %}

<figure><img src="/files/BL5Y9J0bEnnF8I9pqxZZ" alt=""><figcaption></figcaption></figure>

When you select the 'Server ID' option, the track will be added to the queue of the provided server ID.

### Server ID

In this field you can enter the ID of the server where you want to add the track to the queue. Variables can be used in this field.
{% endtab %}
{% endtabs %}

## **Search Query or URL**

<figure><img src="/files/LvTkY4ALMfJutd4hg4Jz" alt=""><figcaption></figcaption></figure>

Enter a song name, artist, or paste a direct URL from any supported platform. The search supports normal text queries as well as links from Spotify, Apple Music, and SoundCloud, automatically detecting and loading the correct track based on what you enter.

## Remove Mode

This setting lets you choose how tracks should be removed from the music queue. You have three options to select from:

{% tabs %}
{% tab title="Add to End of Queue" %}

<figure><img src="/files/b36cwbOxSbUqI2vMJSQq" alt=""><figcaption></figcaption></figure>

Adds a track to the end of the queue.
{% endtab %}

{% tab title="Add to start of Queue" %}

<figure><img src="/files/PJ4UKzL2VDgvvnmHRj3R" alt=""><figcaption></figcaption></figure>

Adds a track to the start of the queue so it plays next.
{% endtab %}

{% tab title="Add at a Specific position" %}

<figure><img src="/files/k8QGMoDlh7RpK9nfaD8H" alt=""><figcaption></figcaption></figure>

Adds a track to the queue at a specific position.

### Queue Position

Use the Queue Position field to specify which track should be removed. Position values start at 0, where 0 is the first track and 1 is the second track.
{% endtab %}
{% endtabs %}

## Playlist Load Limit

<figure><img src="/files/487O7warSa2YOM3ikoEQ" alt=""><figcaption></figcaption></figure>

Maximum number of tracks to load from playlists. Accepts values from 1 to 250.


# Play Queue

{% hint style="warning" %}
This action requires a [Premium Subscription](/premium/premium-and-priority-hosting-plans#premium-plans) to function.
{% endhint %}

<figure><img src="/files/ZiWI7Q3uUv2tLZjNqUdV" alt="" width="302"><figcaption></figcaption></figure>

The Play Queue action allows you to begin playing the music that is in the music queue. Ensure you add music to the queue with [add to queue](/custom-commands-and-events/actions/music-actions/add-to-queue) first. You can use the [`{MusicCurrentTrack}`](/custom-commands-and-events/variables#music-objects) object variable to reference the currently playing track.

## Server

This setting allows you to target a server. You have two options to select from:

{% tabs %}
{% tab title="Current Server" %}

<figure><img src="/files/AwoU2UKcfbmtcE9P6qob" alt=""><figcaption></figcaption></figure>

When you select the 'Current Server' option, the music queue of the current server will be played.
{% endtab %}

{% tab title="Server ID" %}

<figure><img src="/files/BL5Y9J0bEnnF8I9pqxZZ" alt=""><figcaption></figcaption></figure>

When you select the 'Server ID' option, the music queue of the provided server ID will be played.

### Server ID

In this field you can enter the ID of the server where you want to play the music queue. Variables can be used in this field.&#x20;
{% endtab %}
{% endtabs %}


# Pause Music

{% hint style="warning" %}
This action requires a [Premium Subscription](/premium/premium-and-priority-hosting-plans#premium-plans) to function.
{% endhint %}

<figure><img src="/files/GVKyxjujREbgtlYnqsXh" alt=""><figcaption></figcaption></figure>

The Pause Music action lets you pause any music track that's playing.&#x20;

## Server

This setting allows you to target a server. You have two options to select from:

{% tabs %}
{% tab title="Current Server" %}

<figure><img src="/files/AwoU2UKcfbmtcE9P6qob" alt=""><figcaption></figcaption></figure>

When you select the 'Current Server' option, the music track of the current server will be paused.&#x20;
{% endtab %}

{% tab title="Server ID" %}

<figure><img src="/files/BL5Y9J0bEnnF8I9pqxZZ" alt=""><figcaption></figcaption></figure>

When you select the 'Server ID' option, the music track of the provided server ID will be paused.&#x20;

### Server ID

In this field you can enter the ID of the server where you want to pause the music track. Variables can be used in this field.
{% endtab %}
{% endtabs %}


# Resume Music

{% hint style="warning" %}
This action requires a [Premium Subscription](/premium/premium-and-priority-hosting-plans#premium-plans) to function.
{% endhint %}

<figure><img src="/files/7ccEyNjbjOgEDdtrPUYm" alt=""><figcaption></figcaption></figure>

The Resume Music action lets you resume the music track after it has been paused.&#x20;

## Server

This setting allows you to target a server. You have two options to select from:

{% tabs %}
{% tab title="Current Server" %}

<figure><img src="/files/AwoU2UKcfbmtcE9P6qob" alt=""><figcaption></figcaption></figure>

When you select the 'Current Server' option, the music track of the current server will be resumed.
{% endtab %}

{% tab title="Server ID" %}

<figure><img src="/files/BL5Y9J0bEnnF8I9pqxZZ" alt=""><figcaption></figcaption></figure>

When you select the 'Server ID' option, the music track of the provided server ID will be resumed.

### Server ID

In this field you can enter the ID of the server where you want to resume the music track. Variables can be used in this field.&#x20;
{% endtab %}
{% endtabs %}


# Stop Music

{% hint style="warning" %}
This action requires a [Premium Subscription](/premium/premium-and-priority-hosting-plans#premium-plans) to function.
{% endhint %}

<figure><img src="/files/322pLrwUp0uGISkTdR2X" alt=""><figcaption></figcaption></figure>

The Stop Music action lets you stop any music track that's playing.&#x20;

## Server

This setting allows you to target a server. You have two options to select from:

{% tabs %}
{% tab title="Current Server" %}

<figure><img src="/files/AwoU2UKcfbmtcE9P6qob" alt=""><figcaption></figcaption></figure>

When you select the 'Current Server' option, the music track of the current server will be stopped.
{% endtab %}

{% tab title="Server ID" %}

<figure><img src="/files/BL5Y9J0bEnnF8I9pqxZZ" alt=""><figcaption></figcaption></figure>

When you select the 'Server ID' option, the music track of the provided server ID will be stopped.&#x20;

#### Server ID

In this field you can enter the ID of the server where you want to stop the music track. Variables can be used in this field.&#x20;
{% endtab %}
{% endtabs %}

## Clear Queue

<figure><img src="/files/rTaPTZzNGjTDPYFWAB17" alt=""><figcaption></figcaption></figure>

In the clear queue option you can choose whether or not you want to clear the server's queue when stopping the music.&#x20;

## Disconnect from Voice

<figure><img src="/files/XximUweo0sMeQiSmkWne" alt=""><figcaption></figcaption></figure>

In this option you can choose whether or not you want to disconnect the bot from the voice channel after the music has been stopped.&#x20;


# Disconnect from Voice

{% hint style="warning" %}
This action requires a [Premium Subscription](/premium/premium-and-priority-hosting-plans#premium-plans) to function.
{% endhint %}

<figure><img src="/files/k09oIDgrCZQsmGNDPvgx" alt=""><figcaption></figcaption></figure>

The Disconnect from Voice action removes the bot from the current voice channel and can optionally destroy the music player.

## Server

This setting selects which server the action applies to. You have two options to choose from:

{% tabs %}
{% tab title="Current Server" %}

<figure><img src="/files/AwoU2UKcfbmtcE9P6qob" alt=""><figcaption></figcaption></figure>

When you choose the Current Server option, the bot will disconnect from the voice channel within the server where the command is executed.
{% endtab %}

{% tab title="Server ID" %}

<figure><img src="/files/BL5Y9J0bEnnF8I9pqxZZ" alt=""><figcaption></figcaption></figure>

When you select the Server ID option, the bot will disconnect from the voice channel of the server matching the provided ID.

### Server ID

In this field, you can enter the ID of the server where you want the bot to disconnect from the voice channel. Variables can be used in this field.
{% endtab %}
{% endtabs %}

## Destroy Player

<figure><img src="/files/q0QVtGLhOZglvHEoBWZv" alt=""><figcaption></figcaption></figure>

In this option you can choose whether the music player should be fully destroyed and its queue cleared. If set to No, the bot will simply disconnect from voice but keep the existing queue.


# Skip Track

{% hint style="warning" %}
This action requires a [Premium Subscription](/premium/premium-and-priority-hosting-plans#premium-plans) to function.
{% endhint %}

<figure><img src="/files/A247dNGuKMz8OeDLNrzh" alt="" width="375"><figcaption></figcaption></figure>

The skip track action allows you to skip to the next track or to a specific position in the queue.

## Server

This setting allows you to target a server. You have two options to select from:

{% tabs %}
{% tab title="Current Server" %}

<figure><img src="/files/AwoU2UKcfbmtcE9P6qob" alt=""><figcaption></figcaption></figure>

When you select the 'Current Server' option, the music track of the current server will be skipped.&#x20;
{% endtab %}

{% tab title="Server ID" %}

<figure><img src="/files/BL5Y9J0bEnnF8I9pqxZZ" alt=""><figcaption></figcaption></figure>

When you select the 'Server ID' option, the music track of the provided server ID will be skipped.

### Server ID

In this field you can enter the ID of the server where you want to skip the music track. Variables can be used in this field.&#x20;
{% endtab %}
{% endtabs %}

## Skip Mode

This setting allows you to choose whether to skip by a number of tracks or jump to a specific position in the queue.

{% tabs %}
{% tab title="Skip by Amount" %}

<figure><img src="/files/jazxRfRMrERzNanX8SQl" alt="" width="375"><figcaption></figcaption></figure>

Skip by Amount allows you to skip a certain number of tracks.

### Skip Amount

In this field you can set how many tracks you want to skip forward. For example, setting this to "1" would skip forward to the next track.
{% endtab %}

{% tab title="Skip to Position" %}

<figure><img src="/files/duriega8fy2IefnBdcJ5" alt="" width="375"><figcaption></figcaption></figure>

Skip to Position allows you to skip to a specific position in the queue.

### Queue Position

In this field, you can enter the queue position you would like to jump to. Setting this to "0" would skip to the first track in the queue, and "1" would skip to the second.
{% endtab %}
{% endtabs %}


# Set Track Position / Seek

{% hint style="warning" %}
This action requires a [Premium Subscription](/premium/premium-and-priority-hosting-plans#premium-plans) to function.
{% endhint %}

<figure><img src="/files/yMnfmP7x0rMRGoOh5503" alt="" width="411"><figcaption></figcaption></figure>

The Set Track Position / Seek block allows you to set the position in the currently playing track to an absolute position, or relative to the current position in the song.

## Server

This setting allows you to target a server. You have two options to select from:

{% tabs %}
{% tab title="Current Server" %}

<figure><img src="/files/AwoU2UKcfbmtcE9P6qob" alt=""><figcaption></figcaption></figure>

When you select the 'Current Server' option, the track position of the music playing in the current server will be changed.&#x20;
{% endtab %}

{% tab title="Server ID" %}

<figure><img src="/files/BL5Y9J0bEnnF8I9pqxZZ" alt=""><figcaption></figcaption></figure>

When you select the 'Server ID' option, the track position of the music playing in the provided server ID will be changed.

### Server ID

In this field you can enter the ID of the server where you want to change the track position. Variables can be used in this field.&#x20;
{% endtab %}
{% endtabs %}

## Mode

This setting allows you to choose whether to set the absolute position in the track, or seek relative to the song's current position.

{% tabs %}
{% tab title="Set Position" %}

<figure><img src="/files/rZTmSVTz2iaq7YsjCho1" alt="" width="403"><figcaption></figcaption></figure>

Set Position allows you to set the exact position in the song.&#x20;

### Position (Milliseconds)

In this field you can set what position in the song you want to skip to in milliseconds. For example, setting this to `60000` would skip to one minute into the song. Remember that 1 second is equal to 1000 milliseconds.
{% endtab %}

{% tab title="Seek (Relative)" %}

<figure><img src="/files/pTy8Ye1OWsOUGtEafbR8" alt=""><figcaption></figcaption></figure>

Seek (Relative) allows you to seek forward or backward relative to the current position of the song.

### Time Offset (Milliseconds)

In this field, you can set the time offset in milliseconds that you would like to seek to. For example, setting this to `10000` would skip forward 10 seconds, or setting this to `-5000` would rewind by 5 seconds. Remember that 1 second is equal to 1000 milliseconds.
{% endtab %}
{% endtabs %}


# Set Volume

{% hint style="warning" %}
This action requires a [Premium Subscription](/premium/premium-and-priority-hosting-plans#premium-plans) to function.
{% endhint %}

<figure><img src="/files/8aajxwio9qtYJzKQMLYO" alt=""><figcaption></figcaption></figure>

The Set Volume action changes the playback volume of the music player.

## Server

This setting selects which server the action applies to. You have two options to choose from:

{% tabs %}
{% tab title="Current Server" %}

<figure><img src="/files/AwoU2UKcfbmtcE9P6qob" alt=""><figcaption></figcaption></figure>

When you choose the Current Server option, the volume will be adjusted on the server where the command is executed.
{% endtab %}

{% tab title="Server ID" %}

<figure><img src="/files/BL5Y9J0bEnnF8I9pqxZZ" alt=""><figcaption></figcaption></figure>

When you select the Server ID option, the volume will be adjusted in the server matching the provided ID.

### Server ID

In this field, you can enter the ID of the server where you want the volume to be changed. Variables can be used in this field.
{% endtab %}
{% endtabs %}

## Volume

<figure><img src="/files/84iBspLPLWGvVEXdUaIN" alt=""><figcaption></figcaption></figure>

The Volume setting lets you choose the playback volume for the music player.

You can set any value from 0 to over 200, depending on how loud you want the audio to be.


# Set Loop Mode

{% hint style="warning" %}
This action requires a [Premium Subscription](/premium/premium-and-priority-hosting-plans#premium-plans) to function.
{% endhint %}

<figure><img src="/files/fTjbLLgfQa6VnD3c1nYO" alt="" width="333"><figcaption></figcaption></figure>

The Set Loop Mode block allows you to change the loop mode of the music player to off, track, or queue.

## Server

This setting selects which server the action applies to. You have two options to choose from:

{% tabs %}
{% tab title="Current Server" %}

<figure><img src="/files/AwoU2UKcfbmtcE9P6qob" alt=""><figcaption></figcaption></figure>

When you choose the Current Server option, the selected loop mode will be applied to the server where the command is executed.
{% endtab %}

{% tab title="Server ID" %}

<figure><img src="/files/BL5Y9J0bEnnF8I9pqxZZ" alt=""><figcaption></figcaption></figure>

When you select the Server ID option, the selected loop mode will be applied to the server matching the provided ID.

### Server ID

In this field, you can enter the ID of the server where you want the selected loop mode to be applied. Variables can be used in this field.
{% endtab %}
{% endtabs %}

## Loop Mode

<figure><img src="/files/NRDQNZ5mKl6w0WMNwoPS" alt="" width="375"><figcaption></figcaption></figure>

This option allows you to set the loop mode of the player.

| Name       | Raw Value | Description                |
| ---------- | --------- | -------------------------- |
| Off        | 0         | Disables looping.          |
| Loop Track | 1         | Repeats the current track. |
| Loop Queue | 2         | Repeats the entire queue.  |

You can choose this with the dropdown menu, or use a variable that returns the raw value of the loop mode you would like to set in the "Loop Mode Variable" field.


# Set AutoLeave

{% hint style="warning" %}
This action requires a [Premium Subscription](/premium/premium-and-priority-hosting-plans#premium-plans) to function.
{% endhint %}

<figure><img src="/files/e9qXi4kINuzpsiFBe7zc" alt=""><figcaption></figcaption></figure>

The Set AutoLeave action enables or disables the bot’s automatic disconnection from the voice channel when the music queue ends.

## Server

This setting selects which server the action applies to. You have two options to choose from:

{% tabs %}
{% tab title="Current Server" %}

<figure><img src="/files/AwoU2UKcfbmtcE9P6qob" alt=""><figcaption></figcaption></figure>

When you choose the Current Server option, the AutoLeave setting will be applied to the server where the command is executed.
{% endtab %}

{% tab title="Server ID" %}

<figure><img src="/files/BL5Y9J0bEnnF8I9pqxZZ" alt=""><figcaption></figcaption></figure>

When you select the Server ID option, the AutoLeave setting will be applied to the server matching the provided ID.

### Server ID

In this field, you can enter the ID of the server where you want the AutoLeave setting to be applied. Variables can be used in this field.
{% endtab %}
{% endtabs %}

## AutoLeave Status

<figure><img src="/files/FcEiKPLYdxVFR5kiVZ2N" alt=""><figcaption></figcaption></figure>

In this option you can choose whether the bot should automatically leave the voice channel when the music queue ends. If set to Enabled, the bot will disconnect once there are no tracks left to play. If set to Disabled, the bot will remain in the voice channel even after the queue is empty.


# Replay Track

{% hint style="warning" %}
This action requires a [Premium Subscription](/premium/premium-and-priority-hosting-plans#premium-plans) to function.
{% endhint %}

<figure><img src="/files/TLuYLaZBpP4y07jROmJJ" alt=""><figcaption></figcaption></figure>

The Replay Track action restarts the currently playing track from the beginning.

## Server

This setting selects which server the action applies to. You have two options to choose from:

{% tabs %}
{% tab title="Current Server" %}

<figure><img src="/files/AwoU2UKcfbmtcE9P6qob" alt=""><figcaption></figcaption></figure>

When you choose the Current Server option, the current track will be replayed on the server where the command is executed.
{% endtab %}

{% tab title="Server ID" %}

<figure><img src="/files/BL5Y9J0bEnnF8I9pqxZZ" alt=""><figcaption></figcaption></figure>

When you select the Server ID option, the current track will be replayed in the server matching the provided ID.

### Server ID

In this field, you can enter the ID of the server where you want the current track to be replayed. Variables can be used in this field.
{% endtab %}
{% endtabs %}


# Remove from Queue

{% hint style="warning" %}
This action requires a [Premium Subscription](/premium/premium-and-priority-hosting-plans#premium-plans) to function.
{% endhint %}

<figure><img src="/files/aBcO9gm2U4fhx0mOb0aD" alt=""><figcaption></figcaption></figure>

The Remove from Queue action removes track(s) from the music queue.

## Server

This setting selects which server the action applies to. You have two options to choose from:

{% tabs %}
{% tab title="Current Server" %}

<figure><img src="/files/AwoU2UKcfbmtcE9P6qob" alt=""><figcaption></figcaption></figure>

When you choose the Current Server option, the Remove From Queue action will be applied to the server where the command is executed.
{% endtab %}

{% tab title="Server ID" %}

<figure><img src="/files/BL5Y9J0bEnnF8I9pqxZZ" alt=""><figcaption></figcaption></figure>

When you select the Server ID option, the action will be applied to the server matching the provided ID.

### Server ID

In this field, you can enter the ID of the server where you want the track to be removed from the queue. Variables can be used in this field.
{% endtab %}
{% endtabs %}

## Remove Mode

This setting lets you choose how tracks should be removed from the music queue. You have three options to select from:

{% tabs %}
{% tab title="Remove Track at Position" %}

<figure><img src="/files/2H1sP2TJgIJV4edlCu56" alt=""><figcaption></figcaption></figure>

Removes a single track from the queue based on its position.

### Queue Position

Use the Queue Position field to specify which track should be removed. Position values start at 0, where 0 is the first track and 1 is the second track.
{% endtab %}

{% tab title="Remove Range of Tracks" %}

<figure><img src="/files/jBzX496CED88Q6KwFj3l" alt=""><figcaption></figcaption></figure>

Removes multiple tracks at once by specifying a start and end position.

### Start Position

The position of the first track to remove, included.

### End Position

The position of the last track to remove, included.
{% endtab %}

{% tab title="Clear Entire Queue" %}

<figure><img src="/files/zu3AdnA2BDbDVnqJ9yDa" alt=""><figcaption></figcaption></figure>

Removes all tracks from the queue.
{% endtab %}
{% endtabs %}


# Shuffle Queue

{% hint style="warning" %}
This action requires a [Premium Subscription](/premium/premium-and-priority-hosting-plans#premium-plans) to function.
{% endhint %}

<figure><img src="/files/fj9gSs3FarcfBQtDLH0H" alt=""><figcaption></figcaption></figure>

The Shuffle Queue action randomizes the order of all tracks currently in the music queue.

## Server

This setting selects which server the action applies to. You have two options to choose from:

{% tabs %}
{% tab title="Current Server" %}

<figure><img src="/files/AwoU2UKcfbmtcE9P6qob" alt=""><figcaption></figcaption></figure>

When you choose the Current Server option, the music queue will be shuffled on the server where the command is executed.
{% endtab %}

{% tab title="Server ID" %}

<figure><img src="/files/BL5Y9J0bEnnF8I9pqxZZ" alt=""><figcaption></figcaption></figure>

When you select the Server ID option, the music queue will be shuffled in the server matching the provided ID.

### Server ID

In this field, you can enter the ID of the server where you want the music queue to be shuffled. Variables can be used in this field.
{% endtab %}
{% endtabs %}


# Apply Audio Filter

{% hint style="warning" %}
This action requires a [Premium Subscription](/premium/premium-and-priority-hosting-plans#premium-plans) to function.
{% endhint %}

The Apply Audio Filter action applies an audio filter to the current music player.

<div data-full-width="false"><figure><img src="/files/E1JN9UcS6SHNwkQjEbia" alt="" width="375"><figcaption></figcaption></figure></div>

## Server

This setting selects which server the action applies to. You have two options to choose from:

{% tabs %}
{% tab title="Current Server" %}

<figure><img src="/files/AwoU2UKcfbmtcE9P6qob" alt=""><figcaption></figcaption></figure>

When you select the 'Current Server' option, the audio will be applied to the player in the current server.
{% endtab %}

{% tab title="Server ID" %}

<figure><img src="/files/BL5Y9J0bEnnF8I9pqxZZ" alt=""><figcaption></figcaption></figure>

When you select the Server ID option, the audio filter will be applied to the provided server ID's player.

### Server ID

In this field, you can enter the ID of the server where you want the audio filter to be applied to. Variables can be used in this field.
{% endtab %}
{% endtabs %}

## Filter Type

In this field, you can select the type of audio filter to apply to the specified player.

{% tabs %}
{% tab title="Filters" %}

<figure><img src="/files/7ItIrz2Bk6bDCxOfeQIT" alt="" width="375"><figcaption></figcaption></figure>

When you select one of the default filters, the specified filter will be applied to the player. The available filters are:

| Filter Type  | Filter Description                           |
| ------------ | -------------------------------------------- |
| Bass Boost   | Enhances low frequencies for deeper bass     |
| Nightcore    | Faster and higher pitched audio              |
| Vaporwave    | Slower and lower pitched audio (chill vibes) |
| 8D Audio     | Creates spatial/surround sound effect        |
| Tremolo      | Volume oscillation (wobble effect)           |
| Vibrato      | Pitch oscillation (warble effect)            |
| Karaoke      | Attempts to remove vocals from track         |
| Treble Boost | Enhances high frequencies                    |
| Chipmunk     | Very high pitched (Alvin and the Chipmunks)  |
| Daycore      | Opposite of nightcore (slower & lower)       |

### Intensity

In this field, you can choose the intensity level of the filter. This supports low, medium or high.
{% endtab %}

{% tab title="Custom Pitch" %}

<figure><img src="/files/EBCJKxzJ6sx06xZHKysw" alt="" width="375"><figcaption></figcaption></figure>

When you select Custom Pitch, you are able to specify a custom pitch (how high or low the song sounds) for the music player.

### Pitch Value

This field allows you to specify a custom pitch for the music player. A value of 1.0 is normal, a higher value would equal a higher pitch, and a lower value would equal a lower pitch. Variables can be used in this field.
{% endtab %}

{% tab title="Custom Speed" %}

<figure><img src="/files/lXa5rsD9dMAV04gU9L2b" alt="" width="375"><figcaption></figcaption></figure>

When you select Custom Speed, you are able to specify a custom speed for the music player.

### Pitch Value

This field allows you to specify a custom speed for the music player. A value of 1.0 is normal, a higher value play faster, and a lower value would play slower. Variables can be used in this field.
{% endtab %}

{% tab title="Custom Equalizer" %}

<figure><img src="/files/KfItx6gkXQqi6L1D4lIL" alt="" width="375"><figcaption></figcaption></figure>

Custom Equalizer is an advanced feature that allows you to select a custom band and gain for your music player.

### Custom Equalizer Bands

In this field, you can enter a JSON array of band objects. There are 15 bands (0-14), and each band can be adjusted with the gain value. Valid values for gain range from -0.25 to 1.0, where -0.25 means the given band is completely muted, and 0.25 means the band is doubled. This can change the volume of the output.

{% hint style="info" %}
You can see more information on the custom equalizer feature [on LavaLink's docs](https://lavalink.dev/api/rest#equalizer).
{% endhint %}
{% endtab %}

{% tab title="Reset/Clear All" %}

<figure><img src="/files/mADUfgO1x9XBOQqzTOoL" alt="" width="375"><figcaption></figcaption></figure>

Reset / Clear All will clear all filters from the specified player.
{% endtab %}
{% endtabs %}


# Clear Filters

{% hint style="warning" %}
This action requires a [Premium Subscription](/premium/premium-and-priority-hosting-plans#premium-plans) to function.
{% endhint %}

<figure><img src="/files/xl5ZcEsJxMBAa2x8nYKg" alt="" width="341"><figcaption></figcaption></figure>

The Clear Filters action allows you to clear all audio filters that were added to the player with [Apply Audio Filter](/custom-commands-and-events/actions/music-actions/apply-audio-filter).

## Server

This setting allows you to target a server. You have two options to select from:

{% tabs %}
{% tab title="Current Server" %}

<figure><img src="/files/AwoU2UKcfbmtcE9P6qob" alt=""><figcaption></figcaption></figure>

When you select the 'Current Server' option, the audio filters of the player in the current server will be cleared.
{% endtab %}

{% tab title="Server ID" %}

<figure><img src="/files/BL5Y9J0bEnnF8I9pqxZZ" alt=""><figcaption></figcaption></figure>

When you select the 'Server ID' option, the audio filters of the provided server ID's player will be cleared.

### Server ID

In this field you can enter the ID of the server where you want to clear the audio filters of. Variables can be used in this field.&#x20;
{% endtab %}
{% endtabs %}


# Search Tracks

{% hint style="warning" %}
This action requires a [Premium Subscription](/premium/premium-and-priority-hosting-plans#premium-plans) to function.
{% endhint %}

<figure><img src="/files/O93kx5ALas4Xh7ZH5BTV" alt="" width="335"><figcaption></figcaption></figure>

The Search Tracks action allows you to search tracks without adding them to the queue, and make the results available via the `{MusicSearch.*}` [object variable](/custom-commands-and-events/variables#music-objects).

## **Search Query or URL**

<figure><img src="/files/d7YBz51lyk8wMf3QJQ8S" alt="" width="371"><figcaption></figcaption></figure>

This field allows you to input a song name, artist, or direct URL to a supported platform.  This includes playlist and album links from Spotify or Apple Music, as well as individual track URLs from other platforms. Variables can be used in this field.

## Max Results

<figure><img src="/files/Xp4PXBkjFVjLlGNCHIok" alt="" width="369"><figcaption></figcaption></figure>

This field allows you to set the maximum amount of results that the search will return. This can be a natural number from 1-25. Variables that return numbers can be used here.

## Playlist Load Limit

<figure><img src="/files/FG1AKXBQwi1CXaLPanup" alt="" width="374"><figcaption></figcaption></figure>

This field allows you to specify the maximum amount of songs that will be loaded from a playlist or album. This can be a natural number from 1-250. Variables that return numbers can be used here.

## Optional Variable

<figure><img src="/files/85fEEDxXKtXuX1js2uRX" alt="" width="369"><figcaption></figcaption></figure>

This field allows you to specify a custom variable to use instead of the default `{MusicSearch.*}` variable. The tracks will be accessible through dot notation as `{yourVariableName_0.title}`, `{yourVariableName_1.title}`, etc.


# Voice Actions

Voice actions are all meant to target users in a voice channel. These actions can be various things that only affects a user inside a voice channel.

{% hint style="info" %}
Any of these actions can only target voice channel's or be used if a user / bot is in a voice channel.
{% endhint %}

| Block                                                                                                                    | Information                                                                                                    |
| ------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------- |
| [Join a Voice Channel](/custom-commands-and-events/actions/voice-actions/join-a-voice-channel)                           | Using this action you can join the bot to a voice channel on your server.                                      |
| [Leave a Voice Channel](/custom-commands-and-events/actions/voice-actions/leave-a-voice-channel)                         | This block will force the bot to leave a voice channel.                                                        |
| [Voice Move a Member](/custom-commands-and-events/actions/voice-actions/voice-move-a-member)                             | With this block you are able to move any user to a different voice channel than the one they are currently in. |
| [Voice Kick a Member](/custom-commands-and-events/actions/voice-actions/voice-kick-a-member)                             | This block will force kick a user from a voice channel.                                                        |
| [Voice Mute or Unmute a Member](/custom-commands-and-events/actions/voice-actions/voice-mute-or-unmute-a-member)         | Using this block you can mute or unmute a user who is currently participating in a voice channel.              |
| [Voice Deafen or Undeafen a Member](/custom-commands-and-events/actions/voice-actions/voice-deafen-or-undeafen-a-member) | Using this block you can deafen or undeafen a user who is currently participating in a voice channel.          |


# Join a Voice Channel

<figure><img src="/files/1RvYD0P73DSlkYUscXTD" alt=""><figcaption></figcaption></figure>

The Join a Voice Channel action block will force the bot to join the specified channel, whether it is the voice channel you are currently in, a channel option, or a channel ID.

## Voice Channel

<figure><img src="/files/nGiesqjBz4MASp69dkU4" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="The voice channel of the user" %}
This will force the bot to join the voice channel of the user who clicked a [button](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-attached-buttons/buttons) / [menu option](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-a-select-menu/menu-option) or is running the command / event. This will only work if the user is in a voice channel before running the command / event.
{% endtab %}

{% tab title="Channel Option" %}
Selecting the channel option will prompt you with a new field to input your channel option variable. Only [channel options](/custom-commands-and-events/options/channel-option) will work in this field, use channel IDs / Variables in [#voice-channel-id](#voice-channel-id "mention").

### Channel option

Input your option variable into the field below.

<figure><img src="/files/ADXPaAOQN2PJAenZoXW2" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/VYnOnfWJxcl7SBx8Jp4v" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Voice Channel ID" %}
Selecting the channel ID type will prompt you to enter the ID.

### Channel ID

The channel ID can be a [variable](/custom-commands-and-events/variables) as well. Remember this has to be a plain ID with no extra symbols or spaces, it is case sensitive like every other ID field. If you use a variable, make sure it returns a plain ID.

<figure><img src="/files/AbCeW2PfYGJJw0bSHizF" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/i83ylvvBSlx8LDGrXqlJ" alt=""><figcaption></figcaption></figure>


# Leave a Voice Channel

<figure><img src="/files/IgRBgaTV7b96fBCtflhl" alt=""><figcaption></figcaption></figure>

The Leave a Voice Channel action block will force the bot to leave the channel it is connected in, optionally specifying the server ID.

{% hint style="warning" %}
Keep in mind the bot has to be in a voice channel for this block to work
{% endhint %}

## Optional Server ID

This action block contains one setting: Optional Server ID.

Having a server ID in this field will force the bot to look for a specific server to leave from. Leaving this blank will force the bot to leave the voice channel in the server the command / event was triggered in or [button](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-attached-buttons/buttons) / [menu option](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-a-select-menu/menu-option).

<figure><img src="/files/taK562hfnXLU2KoBGvkh" alt=""><figcaption></figcaption></figure>

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/Z6BMojtNrGm08e6s9BHp" alt=""><figcaption></figcaption></figure>


# Voice Move a Member

<figure><img src="/files/gGHusRQksRBJHcoQiYlW" alt=""><figcaption></figcaption></figure>

The Voice Move a Member action block will allow the bot to move the specified member, who is already in a voice channel, to a different voice channel.

{% hint style="warning" %}
Keep in mind the user has to be in a voice channel for this block to work
{% endhint %}

## User

This field will allow you to specify which user the bot will be moving.

<figure><img src="/files/ukRtIb3RhA3ThcdoKMqW" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="The user who triggered the command" %}
This selection will move the user who is triggering the command / event or is clicking a [button](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-attached-buttons/buttons) / [menu option](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-a-select-menu/menu-option).
{% endtab %}

{% tab title="User Option" %}
Selecting "user option" will allow the bot to move a user selected from the option in the command, to a different voice channel.

### User option

You must have a user option added in the command in order for this field to work.\
Only [user options](/custom-commands-and-events/options/user-option) may be used in this field, IDs and [variables](/custom-commands-and-events/variables) can be used in [#user-id](#user-id "mention")

<figure><img src="/files/0RL0DkI3dlbLQ29xzdY4" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/DlJYKDXfrWuZsxEnYmD6" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="User ID" %}
This selection will allow the bot to move a user who is already in a voice channel, just like the other selections, but it will target a specific user ID or [variable ](/custom-commands-and-events/variables)that contains a user ID.

### User ID

This field accepts any plain user ID with no extra symbols or spaces. The ID can be in the form of a [variable ](/custom-commands-and-events/variables)as well.

<figure><img src="/files/62fg8Wug8LZxXhfHRTYM" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/25S1kEX81mxcq9hdeIqJ" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Voice Channel

This field is the specified voice channel that the user will be moving to.

<figure><img src="/files/qlHpj0hnzr4UJEZelEnu" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="The voice channel of the user who triggered the command" %}
This channel type will move the user to the same voice channel that they triggered the command / event in or clicked a [button](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-attached-buttons/buttons) / [menu option](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-a-select-menu/menu-option).
{% endtab %}

{% tab title="Channel Option" %}
Selecting this channel type will move the user to the voice channel that is selected in the command through the channel option.&#x20;

### Channel Option

This field requires a [channel option](/custom-commands-and-events/options/channel-option) in your command. Like other option fields, only the channel option variables can be used in this field. ID's / [variables](/custom-commands-and-events/variables) can be used in [#channel-id](#channel-id "mention")

<figure><img src="/files/S0qHdmsYStnwHkTeeL7y" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/YK5QTITwZqXJFAhdHsdX" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Channel ID" %}
This selection will move the user into a voice channel specified by a channel ID.

### Voice Channel ID

The channel ID can be a [variable](/custom-commands-and-events/variables) as well. Remember this has to be a plain ID with no extra symbols or spaces, it is case sensitive like every other ID field. If you use a variable, make sure it returns a plain ID.

<figure><img src="/files/Rfhbuwvi5cJxOVLm0opj" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/tNSyDyIaTEVfoMla5rtP" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Optional Reason

This field is an optional reason of why the bot is moving this user to a different voice channel. This reason will appear in your server's Audit Log. [Variables ](/custom-commands-and-events/variables)can be used as well.

<figure><img src="/files/IhC8WFwazV0D4DZPkSmS" alt=""><figcaption></figcaption></figure>

## Optional Server ID

This field is an optional server ID to search for the user in. Leave blank to find the user in the server the command was triggered in or who clicked a [button](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-attached-buttons/buttons) / [menu option](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-a-select-menu/menu-option). [Variables ](/custom-commands-and-events/variables)can be used in this field and it must be a plain server ID that is returned.

<figure><img src="/files/ZXtNI46snCYT3rKZXCwc" alt=""><figcaption></figcaption></figure>

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/jUu4ZOp7dFYZdAS9IVpy" alt=""><figcaption></figcaption></figure>


# Voice Kick a Member

<figure><img src="/files/4lPLdmdSi6BTmhnGMrV5" alt=""><figcaption></figcaption></figure>

The Voice Kick a Member action block will allow you to kick the specified user from a voice channel, and you can add specifications to which user the bot will kick.

{% hint style="warning" %}
Keep in mind the user has to be in a voice channel for this block to work
{% endhint %}

## User

This field will allow you to specify which user the bot will be kicking.

<figure><img src="/files/2HlZi24r7Oc1hl5eO2iZ" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="The user who triggered the command" %}
This selection will kick the user who is triggering the command/event or is clicking a [button](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-attached-buttons/buttons) / [menu option](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-a-select-menu/menu-option).
{% endtab %}

{% tab title="User Option" %}
Selecting "User option" will allow the bot to kick a user selected from the option in the command.

### User option

You must have a user option added in the command in order for this field to work.\
Only [user options](/custom-commands-and-events/options/user-option) may be used in this field, IDs and [variables](/custom-commands-and-events/variables) can be used in [#user-id](#user-id "mention")

<figure><img src="/files/ws3CTipcYuITjk4nEzeX" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/mEENRKptZXaSBkMyjV8Q" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="User ID" %}
This selection will allow the bot to kick a user who is in a voice channel, just like the other selections, but it will target a specific user ID or [variable ](/custom-commands-and-events/variables)that contains a user ID.

### User ID

This field accepts any plain user ID with no extra symbols or spaces. The ID can be in the form of a [variable ](/custom-commands-and-events/variables)as well.

<figure><img src="/files/R1ob6xc2ZYhubM9niciU" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/KSlfuCNuzOR9n0LGWvlZ" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Optional Reason

This field is an optional reason of why the bot is kicking this user. This reason will appear in your server's Audit Log. [Variables ](/custom-commands-and-events/variables)can be used as well.

<figure><img src="/files/KjyyUxKPqxCqHvuCGxvs" alt=""><figcaption></figcaption></figure>

## Optional Server ID

This field is an optional server ID to search for the user in. Leave blank to find the user in the server the command was triggered in or who clicked a [button](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-attached-buttons/buttons) / [menu option](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-a-select-menu/menu-option). [Variables](/custom-commands-and-events/variables) can be used in this field and it must be a plain server ID that is returned.

<figure><img src="/files/jWNCet76KYAMn3wpizeC" alt=""><figcaption></figcaption></figure>

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/i83ylvvBSlx8LDGrXqlJ" alt=""><figcaption></figcaption></figure>


# Voice Mute or Unmute a Member

<figure><img src="/files/Xw7GVocBEoR6giQYSX0k" alt=""><figcaption></figcaption></figure>

The Voice Mute or Unmute a Member action block will allow you to mute or unmute the specified user inside of a voice channel, not allowing them to speak or allow them to speak.

{% hint style="warning" %}
Keep in mind the user has to be in a voice channel for this block to work
{% endhint %}

## User

This field will allow you to specify which user that the bot will be muting or unmuting.

<figure><img src="/files/OkC8hb5TIAPasN4aIHv4" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="The user who triggered the command" %}
This selection will mute or unmute the user who is triggering the command / event or is clicking a [button](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-attached-buttons/buttons) / [menu option](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-a-select-menu/menu-option).
{% endtab %}

{% tab title="User option" %}
Selecting "User option" will allow the bot to mute / unmute a user selected from the option in the command.

### User option

You must have a user option added in the command in order for this field to work.\
Only [user options](/custom-commands-and-events/options/user-option) may be used in this field, IDs and [variables](/custom-commands-and-events/variables) can be used in [#user-id](#user-id "mention")

<figure><img src="/files/Er4fLceEDQZ50qmtuOP8" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/2PzmWd745WQsfOOhaxC1" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="User ID" %}
This selection will allow the bot to mute / unmute a user who is in a voice channel, just like the other selections, but it will target a specific user ID or [variable ](/custom-commands-and-events/variables)that contains a user ID.

### User ID

This field accepts any plain user ID with no extra symbols or spaces. The ID can be in the form of a [variable ](/custom-commands-and-events/variables)as well.

<figure><img src="/files/YgRRD0zpfvMPCtHu9HHc" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/s429yEUsemSnHJ3OtJSk" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Mute or Unmute

This selection will allow you to decide if this action of the block will mute or unmute a specified user.

<figure><img src="/files/uOVocxONJRcLXikE7ql7" alt=""><figcaption></figcaption></figure>

## Optional Reason

This field is an optional reason why the bot is muting or unmuting this user. This reason will appear in your server's Audit Log. [Variables ](/custom-commands-and-events/variables)can be used as well.

<figure><img src="/files/PgDVGUpYEvyX4FzAvY2I" alt=""><figcaption></figcaption></figure>

## Optional Server ID

This field is an optional server ID to search for the user in. Leave blank to find the user in the server the command was triggered in or who clicked a [button](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-attached-buttons/buttons) / [menu option](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-a-select-menu/menu-option). [Variables ](/custom-commands-and-events/variables)can be used in this field and it must be a plain server ID that is returned.

<figure><img src="/files/UBfsr9PFBopL5ThTgS2V" alt=""><figcaption></figcaption></figure>

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/i83ylvvBSlx8LDGrXqlJ" alt=""><figcaption></figcaption></figure>


# Voice Deafen or Undeafen a Member

<figure><img src="/files/dsiKOtcAn9MX3NxJC2Kj" alt=""><figcaption></figcaption></figure>

The Voice Deafen or Undeafen a Member action block will allow you to deafen or undeafen the specified user that is in a voice channel.

{% hint style="warning" %}
Keep in mind the user has to be in a voice channel for this block to work
{% endhint %}

## User

This field will allow you to specify which user that the bot will be deafening or undeafening.

<figure><img src="/files/6MMaPfEV1dmKhVWLeq60" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="The user who triggered the command" %}
This selection will deafen or undeafen the user who is triggering the command / event or is clicking a [button](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-attached-buttons/buttons) / [menu option](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-a-select-menu/menu-option).
{% endtab %}

{% tab title="User Option" %}
Selecting "User option" will allow the bot to deafen/undeafen a user selected from the option in the command.

### User option

You must have a user option added in the command in order for this field to work.\
Only [user options](/custom-commands-and-events/options/user-option) may be used in this field, IDs and [variables](/custom-commands-and-events/variables) can be used in [#user-id](#user-id "mention")

<figure><img src="/files/9O1CdVRpdJfbVqk9uaJV" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/9v2imbmvaQ4yC7NUM3PM" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="User ID" %}
This selection will allow the bot to deafen / undeafen a user who is in a voice channel, just like the other selections, but it will target a specific user ID or [variable ](/custom-commands-and-events/variables)that contains a user ID.

### User ID

This field accepts any plain user ID with no extra symbols or spaces. The ID can be in the form of a [variable ](/custom-commands-and-events/variables)as well.

<figure><img src="/files/3tZhw2bdYATn58N0pqAh" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/lBmrvM7CzkBOj6aeaKUJ" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## **Deafen or Undeafen**

is selection will allow you to decide if this action of the block will deafen or undeafen a specified user.

<figure><img src="/files/iEG8XxIxc3iAC3hErjDE" alt=""><figcaption></figcaption></figure>

## Optional Reason

This field is an optional reason why the bot is deafening or undeafening this user. This reason will appear in your server's Audit Log. [Variables ](/custom-commands-and-events/variables)can be used as well.

<figure><img src="/files/GeWek8cpovorQXEBBL6M" alt=""><figcaption></figcaption></figure>

## Optional Server ID

This field is an optional server ID to search for the user in. Leave blank to find the user in the server the command was triggered in or who clicked a [button](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-attached-buttons/buttons) / [menu option](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-a-select-menu/menu-option). [Variables ](/custom-commands-and-events/variables)can be used in this field and it must be a plain server ID that is returned.

<figure><img src="/files/KxL0Xp6hzBcSXRdbQqft" alt=""><figcaption></figcaption></figure>

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/i83ylvvBSlx8LDGrXqlJ" alt=""><figcaption></figcaption></figure>


# Role Actions

Role actions allow the bot to manage the roles in your servers through various means, such as editing, deleting and creating new roles. These actions only pertain to roles and target users aside from managing a role.

{% hint style="info" %}
You must have the manage roles permission enabled in your server for your bot for these blocks to work.
{% endhint %}

| Block                                                                                                       | Information                                                                                                   |
| ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| [Add Roles](/custom-commands-and-events/actions/role-actions/add-role)                                      | This action allows the bot to add one or more roles to any server member.                                     |
| [Remove Roles](/custom-commands-and-events/actions/role-actions/remove-role)                                | This action allows the bot to remove one or more roles to any server member.                                  |
| [Add Roles to All Users](/custom-commands-and-events/actions/role-actions/add-roles-to-all-users)           | This action will add one or more roles to all users in the server.                                            |
| [Remove Roles from All Users](/custom-commands-and-events/actions/role-actions/remove-roles-from-all-users) | Use this to remove one or more roles from all server members.                                                 |
| [Create a role](/custom-commands-and-events/actions/role-actions/create-a-role)                             | This action allows you to create a role within your server.                                                   |
| [Delete a role](/custom-commands-and-events/actions/role-actions/delete-a-role)                             | Using this action, you can delete a role on your server.                                                      |
| [Edit Role](/custom-commands-and-events/actions/role-actions/edit-role)                                     | Using this action you can edit specific information (such as name, color or permissions) of an existing role. |


# Add Roles

<figure><img src="/files/bzRnnMNR0P7Gk8NP3HLi" alt=""><figcaption></figcaption></figure>

Add one or more roles to a server member. You can specify role IDs and target members in specific ways.

{% hint style="warning" %}
The bot must have the Manage Roles permission and a higher position than the role your trying to assign via the bot.
{% endhint %}

## Member

This field can specify which ways you would like to target a server member to give them roles. See specifications below.

<figure><img src="/files/9jxRe6C8Lpe8u2a547PF" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Member who used the command" %}
Select this option to add the selected roles to the member who triggered the command / event or clicked a [button](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-attached-buttons/buttons) / [menu option](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-a-select-menu/menu-option).
{% endtab %}

{% tab title="Member Option" %}
Select this option to add the selected roles to the member who was selected in a [user option](/custom-commands-and-events/options/user-option). Only [user options](/custom-commands-and-events/options/user-option) in this field may work, IDs and [variables](/custom-commands-and-events/variables) can be used in [#member-id](#member-id "mention").

### User Option

This field requires a user option to be inside your command.&#x20;

<figure><img src="/files/yUcTn5iYZVFSL6M9ZrlA" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/pIsI5l1fd2Aj4q41rja2" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Member ID" %}
Select this option to add the selected roles to a targeted user ID or [variable](/custom-commands-and-events/variables) that contains a user ID.

### User ID

This field accepts a plain user ID or [variable](/custom-commands-and-events/variables) that returns a plain user ID. This user ID can't have any spaces or extra symbols, make sure it is a plain user ID.

<figure><img src="/files/mdmUo0op7GTKg3dlGjyw" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/mvwit7HtO2bIUwTMmian" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Roles Selector

Click the "+" icon to select the server roles you want to add to the user. You are also able to select a created role option from the [create a role](/custom-commands-and-events/actions/role-actions/create-a-role) block. It will show under "Command Options" in the second image below.

<figure><img src="/files/JqlvCF9SAEbAgrnf3FuV" alt=""><figcaption></figcaption></figure>

If you don't see the role you are looking for, it was most likely added very recently to your server. Click the refresh icon in the top right corner of the image below and it will refresh the selection to find the role.

<figure><img src="/files/7m1c9VfkhQPWPV9R8ueE" alt=""><figcaption></figcaption></figure>

## **Additional Roles**

In this field you can add additional roles in the form of plain role IDs only. This field is commonly used to add specific role IDs / [variables](/custom-commands-and-events/variables). As the field description states, each role ID or variable must be separated by a comma.

<figure><img src="/files/BIg57pIlsMinhYPoPmee" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/FCNTmlunFJ0yR4GHqVeP" alt=""><figcaption></figcaption></figure>

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/i83ylvvBSlx8LDGrXqlJ" alt=""><figcaption></figcaption></figure>


# Remove Roles

<figure><img src="/files/3cqK54v16nktQvuSplze" alt=""><figcaption></figcaption></figure>

Remove one or more roles from a server member. You can specify role IDs and target members in specific ways.

{% hint style="warning" %}
The bot must have the Manage Roles permission and a higher position than the role you're trying to remove.
{% endhint %}

## Member

This field can specify which ways you would like to target a server member to remove roles. See specifications below.

<figure><img src="/files/r0OotSf0LkR9uOk25bSq" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Member who used the command" %}
Select this option to remove the selected roles to the member who triggered the command / event or clicked a [button](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-attached-buttons/buttons) / [menu option](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-a-select-menu/menu-option).
{% endtab %}

{% tab title="Member option" %}
Select this option to remove the selected roles to the member who was selected in a [user option](/custom-commands-and-events/options/user-option). Only [user options](/custom-commands-and-events/options/user-option) in this field may work, IDs and [variables](/custom-commands-and-events/variables) can be used in [#member-id](#member-id "mention").

### User Option

This field requires a user option to be inside your command.&#x20;

<figure><img src="/files/c8gCr5Bt9L7Lut70NIKO" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/5yRpvtIVuJiUGzzQwqcT" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Member ID" %}
Select this option to remove the selected roles to a targeted user ID or [variable](/custom-commands-and-events/variables) that contains a user ID.

### User ID

This field accepts a plain user ID or [variable](/custom-commands-and-events/variables) that returns a plain user ID. This user ID can't have any spaces or extra symbols, make sure it is a plain user ID.

<figure><img src="/files/KGPA3DuraKjrtUbr1mnP" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ZUNB9geNgJtzKFkqXQsO" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Roles Selector

Click the "+" icon to add roles to select the server roles you want to remove from the user. You are also able to select a created role option from the [create a role](/custom-commands-and-events/actions/role-actions/create-a-role) block. It will show under "Command Options" in the second image below.

<figure><img src="/files/qHnQFFOuLEeJRxELcrei" alt=""><figcaption></figcaption></figure>

If you don't see the role you are looking for, it was most likely added very recently to your server. Click the refresh icon in the top right corner of the image below and it will refresh the selection to find the role.

<figure><img src="/files/K2vpLECNUckMPq6SF7QN" alt=""><figcaption></figcaption></figure>

## **Additional Roles**

In this field you can add additional roles in the form of plain role IDs only. This field is commonly used to add specific role IDs / [variables](/custom-commands-and-events/variables). As the field description states, each role ID or variable must be separated by a comma.

<figure><img src="/files/dnCoedGN46YgsOQb2yR8" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/Oe9aRQjixElw6cUh9Lja" alt=""><figcaption></figcaption></figure>

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/i83ylvvBSlx8LDGrXqlJ" alt=""><figcaption></figcaption></figure>


# Add Roles to All Users

<figure><img src="/files/5oU8I75LE7EpsrLbV5V2" alt=""><figcaption></figcaption></figure>

Add a role to all members of a server. You can specify role IDs and users affected in specific ways.

{% hint style="warning" %}
The bot must have the Manage Roles permission and a higher position than the role your trying to assign via the bot.
{% endhint %}

## Roles Selector

Click the "+" icon to select the server roles you want to add to all users.&#x20;

<figure><img src="/files/JqlvCF9SAEbAgrnf3FuV" alt=""><figcaption></figcaption></figure>

## **Additional Roles**

In this field you can add additional roles in the form of plain role IDs only. This field is commonly used to add specific role IDs / [variables](/custom-commands-and-events/variables). As the field description states, each role ID or variable must be separated by a comma.

<figure><img src="/files/BIg57pIlsMinhYPoPmee" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/FCNTmlunFJ0yR4GHqVeP" alt=""><figcaption></figcaption></figure>

## Reason

This is an optional field. In this field you can input a reason why you are adding a role to everyone in the server. This reason will be shown in your server's audit log. [Variables](/custom-commands-and-events/variables) can also be used in this field.

<figure><img src="/files/QRclTbpDPfgz2jUjbxqx" alt=""><figcaption></figcaption></figure>

## Server ID

In this optional field you can enter the ID of a server that you want to run the action in. This way, you can target servers without triggering a command or event in there. [Variables](/custom-commands-and-events/variables) can also be used in this field.&#x20;

<figure><img src="/files/ikXCe7Cv1sgODtB0OzMK" alt=""><figcaption></figcaption></figure>

## Bot Filtering

In this selection menu you can enter whether or not you want the bot to ignore other bots, meaning the role will not be added to bots in your server.&#x20;

<figure><img src="/files/t6eUK1CQW4yj9mMFu8pe" alt=""><figcaption></figcaption></figure>

{% hint style="danger" %}
This action will add the selected roles to ALL users in the server. This operation cannot be undone and may take time for large servers. Use with caution.
{% endhint %}


# Remove Roles from All Users

<figure><img src="/files/9bept4MJDEEfLIrnzxX5" alt=""><figcaption></figcaption></figure>

Remove a role from all members of a server. You can specify role IDs and users affected in specific ways.

{% hint style="warning" %}
The bot must have the Manage Roles permission and a higher position than the role your trying to remove via the bot.
{% endhint %}

## Roles Selector

Click the "+" icon to select the server roles you want to remove from all users.&#x20;

<figure><img src="/files/JqlvCF9SAEbAgrnf3FuV" alt=""><figcaption></figcaption></figure>

## **Additional Roles**

In this field you can add additional roles in the form of plain role IDs only. This field is commonly used to add specific role IDs / [variables](/custom-commands-and-events/variables). As the field description states, each role ID or variable must be separated by a comma.

<figure><img src="/files/BIg57pIlsMinhYPoPmee" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/FCNTmlunFJ0yR4GHqVeP" alt=""><figcaption></figcaption></figure>

## Reason

This is an optional field. In this field you can input a reason why you are removing a role from everyone in the server. This reason will be shown in your server's audit log. [Variables](/custom-commands-and-events/variables) can also be used in this field.

<figure><img src="/files/QRclTbpDPfgz2jUjbxqx" alt=""><figcaption></figcaption></figure>

## Server ID

In this optional field you can enter the ID of a server that you want to run the action in. This way, you can target servers without triggering a command or event in there. [Variables](/custom-commands-and-events/variables) can also be used in this field.&#x20;

<figure><img src="/files/ikXCe7Cv1sgODtB0OzMK" alt=""><figcaption></figcaption></figure>

## Bot Filtering

In this selection menu you can enter whether or not you want the bot to ignore other bots, meaning the role will not be removed from bots in your server.&#x20;

<figure><img src="/files/CK7UxlAH0mIIcjlVv0LN" alt=""><figcaption></figcaption></figure>

## Remove all Roles

You can enable this section if you wish the bot to remove all roles from all users in a server. This will ignore all settings above.&#x20;

<figure><img src="/files/7z8ti0hePWKbMcjjYGsP" alt=""><figcaption></figcaption></figure>

{% hint style="danger" %}
This action will remove the selected roles from ALL users in the server. This operation cannot be undone and may take time for large servers. Use with caution.
{% endhint %}


# Create a role

<figure><img src="/files/czkMMg2UaTPIMqe3Hs0m" alt=""><figcaption></figcaption></figure>

Create a new Role in the server. You can choose various modifications to enhance the role or leave some fields blank to be default.

{% hint style="warning" %}
The bot must have the Manage Roles permission in order to create a role.
{% endhint %}

## Name

This field will set the name of the role that the bot will create. [Variables](/custom-commands-and-events/variables) can be used in this field.

<figure><img src="/files/ID2Mb8G6eihc80Dmg0Bn" alt=""><figcaption></figcaption></figure>

## Reason

This field is an optional reason for creating the new role. This reason will show in the audit log of the server that the command / event was executed in. [Variables](/custom-commands-and-events/variables) can be used as well.

<figure><img src="/files/fX99xWqgdl4y49BXOmDE" alt=""><figcaption></figcaption></figure>

## Position

This field is optional and changes the position of the new role in your server. Leave this blank for default positioning. Positions are all arranged from bottom (default) to top. This field only accepts integers and [variables](/custom-commands-and-events/variables) can be used.

<figure><img src="/files/Hq2aHoLlcTQDip4IgZ7B" alt=""><figcaption></figcaption></figure>

## Color

This field is optional and changes the color of the role the bot is creating. **This field only accepts a HEX format.** Server members use the color of the highest position role they have. [Variables](/custom-commands-and-events/variables) can be used. Leaving this field blank will make it a default grey color.

<figure><img src="/files/APSqPDmwvRHMMGDEIM8r" alt=""><figcaption></figcaption></figure>

Hex format example: #af5555

<figure><img src="/files/Ew5bAxpsulq5CivAEB5E" alt=""><figcaption></figcaption></figure>

## **Display role members separately from online members** &#x20;

This switch controls whether the role is hoisted or not.

<figure><img src="/files/Zf3QktKqd8M3d8S42QAe" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/cYeCY3EwwFnY0G7Vge0r" alt=""><figcaption><p>Blue role is not hoisted</p></figcaption></figure>

## Mentionable

This switch will allow anyone to mention / @ this role, even if they don't possess the mention @everyone / @here permission.

<figure><img src="/files/VZev791U9MQKgPzUrcJB" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/fS1iUDez4fnYayysDIDL" alt=""><figcaption></figcaption></figure>

## Permissions

Click the "+" to attach certain permissions to the role the bot is creating. Leave this field blank to have no permissions. Visit this [link](https://discord.com/developers/docs/topics/permissions#permissions-bitwise-permission-flags) to learn more about permissions.

<figure><img src="/files/azBLqba0GFwbBhPYDEWQ" alt=""><figcaption></figcaption></figure>

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/i83ylvvBSlx8LDGrXqlJ" alt=""><figcaption></figcaption></figure>


# Delete a role

<figure><img src="/files/sh5tZ0TCwZVJfCp2OoHC" alt=""><figcaption></figcaption></figure>

Delete a Role in the server. You can specify specific roles from your server or an ID / [Variable](/custom-commands-and-events/variables).

{% hint style="warning" %}
The bot must have Manage Roles permission in order to delete roles.
{% endhint %}

## Role Type

This selection will specify the targeted role to delete.

<figure><img src="/files/8Ijau76FPMP49EaB0JVR" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Specific Role " %}
This selection will allow you to select a specific role from your server to delete. It will show a dropdown menu to allow the selection.

### Specific Role

This is a dropdown menu allowing you to select a role from any server the bot is in. Remember that if the role you're trying to select isn't there, it most likely means it was very recently added, simply click the refresh icon next to the "?" in the image below to find your role.

<figure><img src="/files/ZHLbNEyF66U6W4a4WpOo" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Role ID or Variable" %}
This selection can target specific roles by their ID to delete. Selecting this type will prompt a new field to appear to input a ID or [Variable](/custom-commands-and-events/variables).

### Role ID or Variable

This field accepts a plain role ID or [variable](/custom-commands-and-events/variables) that returns a plain role ID. This role ID can't have any spaces or extra symbols, make sure it is a plain role ID.

<figure><img src="/files/q0327gHKRNkonQyWTWgT" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/nkLVSFu0RQc3w3OpwC8y" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/i83ylvvBSlx8LDGrXqlJ" alt=""><figcaption></figcaption></figure>


# Edit Role

<figure><img src="/files/kvg1orsUz5UIIWLt9dlL" alt=""><figcaption></figcaption></figure>

The Edit a role block will edit a role in your server. Editing can modify different aspects of an already existing role. Some fields can be left blank for no changes to occur.

## Role

This selection will specify the method of targeting the role that will be edited.

<figure><img src="/files/y8rr0Pygbi6YRTOWIRTX" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Role Option" %}
This selection will target a [role option](/custom-commands-and-events/options/role-option) which will contain the role for the bot to delete when the command is executed. Only [role options](/custom-commands-and-events/options/role-option) in this field may work, IDs and [variables](/custom-commands-and-events/variables) can be used in [#role-id](#role-id "mention").

### Role Option

You must have a [role option](/custom-commands-and-events/options/role-option) added in your command for this to work.

<figure><img src="/files/OuGQpOG2R7GpKruATzsx" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/jxpsZlyEZPmoa4g8MHTK" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Role ID" %}
This selection will target a specific role ID / [variable](/custom-commands-and-events/variables) to delete.

### Role ID

This field accepts a plain role ID or [variable](/custom-commands-and-events/variables) that returns a plain role ID. This role ID can't have any spaces or extra symbols, make sure it is a plain role ID.

<figure><img src="/files/LwuB92I2kf8eVzBmJuHV" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/4MS7QuEBT40gdRpJ1aHf" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Name

The new name for the role the bot is editing. Leave this blank if you do not wish to change the name.

<figure><img src="/files/chyFEGRsLnkYZOXmFBYW" alt=""><figcaption></figcaption></figure>

## Reason

This field is an optional reason for editing the role. This reason will be shown in the audit log of the server that the command / event was executed in.

<figure><img src="/files/EaqXGdhn6y0uIyi3ULHD" alt=""><figcaption></figcaption></figure>

## Position

This field is optional and changes the position of the edited role in your server. Leave this blank for default positioning. Positions are all arranged from bottom (default) to top. This field only accepts integers and [variables ](/custom-commands-and-events/variables)can be used.

<figure><img src="/files/S2c45aY8jjdo80Or4oah" alt=""><figcaption></figcaption></figure>

## Color

This field is optional and changes the color of the role the bot is editing. **This field only accepts a HEX format.** Server members use the color of the highest position role they have. [Variables ](/custom-commands-and-events/variables)can be used as well. Leaving this field blank will make it a default grey color.

<figure><img src="/files/uLSQKmMfbprDRFFS1ZsY" alt=""><figcaption></figcaption></figure>

Hex format example: #af5555

<figure><img src="/files/sDtPJpSEvgQEP3hV5DEX" alt=""><figcaption></figcaption></figure>

## Display role members separately from online members

This switch controls whether the role is hoisted or not.

<figure><img src="/files/SslkceuRbp3yek1W6Kn3" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/bNMLwrlANowFNZ2aPkGy" alt=""><figcaption><p>Blue role is not hoisted</p></figcaption></figure>

## Mentionable

This switch will allow anyone to mention / @ this role, even if they don't possess the mention @everyone / @here permission.

<figure><img src="/files/KhJ1rzSWuPffMP5kTjAR" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/pnT1475L69QzlGR9Igz1" alt=""><figcaption></figcaption></figure>

## Permissions

Click the "+" to attach certain permissions to the role the bot is editing. Leave this field blank to have no permissions. Visit this [link](https://discord.com/developers/docs/topics/permissions#permissions-bitwise-permission-flags) to learn more about permissions.

<figure><img src="/files/0dVIxwaoKZ9xNaAz56mI" alt=""><figcaption></figcaption></figure>

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/i83ylvvBSlx8LDGrXqlJ" alt=""><figcaption></figcaption></figure>


# Channel Actions

The command builder offers multiple channel actions. They allow you to create and manage already created channels. Below you may find some general information about each block. Click on its name for more information.

<table><thead><tr><th data-type="content-ref">Block</th><th>Information</th></tr></thead><tbody><tr><td><a href="/pages/iXui8Gw053fUe48Zp4g8">/pages/iXui8Gw053fUe48Zp4g8</a></td><td>The create a channel action allows you to create a channel of any type within a Discord server.</td></tr><tr><td><a href="/pages/hPFVC072cSx1pPXquLuz">/pages/hPFVC072cSx1pPXquLuz</a></td><td>The edit a channel action allows you to modify an existing channel of any type within a Discord server.</td></tr><tr><td><a href="/pages/GMFrrULM9dBmZ8NXxO3r">/pages/GMFrrULM9dBmZ8NXxO3r</a></td><td>The delete a channel action allows you to delete an existing channel of any type within a Discord server.</td></tr></tbody></table>


# Create a channel

<figure><img src="/files/UDX4Po43rsBdnx1JmszG" alt=""><figcaption></figcaption></figure>

The Create a channel action when triggered creates a channel of any type within a Discord server. It can be referenced in any action or condition throughout your bot's commands and events. All variables and options can be used in the content of all fields within the block.

## Variable

The create a channel block also comes with an optional [variable](/custom-commands-and-events/variables) that can be used in later actions or saved in custom variables. This variable can be set at the top of the block's settings menu. Here is an example of how it can be used.

<table><thead><tr><th width="445">Variable</th><th>Usage</th></tr></thead><tbody><tr><td><code>{my_channel}</code></td><td>This variable will return the ID of the channel.</td></tr><tr><td><code>&#x3C;#{my_channel}></code></td><td>This variable will return the channel mention.</td></tr></tbody></table>

<figure><img src="/files/n9r6owHX5bNgC0Ziw9u5" alt=""><figcaption></figcaption></figure>

## Name

The name of the channel is what's displayed in the channel list, the top of the channel, and any references of the channel.

{% hint style="info" %}
Name is not compatible with markdown.
{% endhint %}

<figure><img src="/files/tY623ZhVc1s9aZuxmyux" alt=""><figcaption></figcaption></figure>

## Type

The type of channel defines its function and appearance. You can select from a dropdown that will display the available channel types. Below you can find detailed information about each channel type and how it can be used.

<figure><img src="/files/srmfnFvYyHeurvzsc3kT" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Text Channel" %}
A text channel is a basic channel for Discord users to have text conversations with other server members.

<figure><img src="/files/ihDWKeJH6qDAeKFRU3EY" alt=""><figcaption></figcaption></figure>

### NSFW

This is an optional toggle to choose whether or not to allow NSFW content within the channel. If chosen, the channel will be age restricted to 18+.

<figure><img src="/files/TYVlgQgQdrT573VRYvV0" alt=""><figcaption></figcaption></figure>

### Slowmode

This is an optional field, also known as rate limit per user, it allows you to set a slow mode in the created channel for each user unless the user has been bypassed. This field only accepts integers, and [variables](/custom-commands-and-events/variables) can be used.

<figure><img src="/files/E779Dizr1Zz6npNlOpyl" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Voice Channel" %}
A voice channel is a interactive channel based of listening and speaking to other users.

<figure><img src="/files/d7qj1t75bIx8Mno7bcpy" alt=""><figcaption></figcaption></figure>

### User limit

This field represents an optional user limit targeting voice channels only. With a limit in place, only a certain amount of users can be in the voice channel. This field accepts integers only and [variables](/custom-commands-and-events/variables) can be used.

<figure><img src="/files/REvcwvY0xWH0kMNooqHV" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Category Channel" %}
The Category Channel is a Category that will be made when this type is selected. Categories can have multiple channels under them and sync permissions as well.&#x20;

<figure><img src="/files/t6dUPGgK9obWFb1MEdFK" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="News Channel" %}
A News Channel is a announcement channel that can you publish messages from to followed servers.

<figure><img src="/files/JZOv5Kapqe6brL1t948a" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Topic

This optional field modifies the topic of the channel. It may be left blank to leave the topic blank. [Variables](/custom-commands-and-events/variables) can be used.

<figure><img src="/files/MN3xr53Blb1I5PtKz6z4" alt=""><figcaption></figcaption></figure>

## Category

Here you can set the ID of the category the channel you're creating is in. You can do this by pasting an ID directly from Discord (learn how [here](https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID)) or using a variable that returns a category ID. These can be easily added through the variable selector by clicking the **Clipboard** button. You can also leave this field empty to create the channel above all categories.

<figure><img src="/files/8rvrIYXFLMOpYAY3cDOt" alt=""><figcaption></figcaption></figure>

## Optional Server ID

This field is an optional server ID to create the channel in. Leave blank to create the channel in the server the command was triggered in or who clicked a [button](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-attached-buttons/buttons) / [menu option](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-a-select-menu/menu-option). [Variables ](/custom-commands-and-events/variables)can be used in this field and it must be a plain server ID that is returned.

<figure><img src="/files/6alAojANahaGIWKPJqFZ" alt=""><figcaption></figcaption></figure>

## Permissions

Click the "+" to attach one or more permissions to the channel the bot is creating. Leave this field blank to have default permissions. Visit this [link](https://discord.com/developers/docs/topics/permissions#permissions-bitwise-permission-flags) to learn more about permissions. Clicking the button below will allow you to add permissions to the channel.

<figure><img src="/files/Lj00SVwfgRlhxUK1Zvck" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/VMLF8wCpl5Z07ei55w4I" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/NAKJxngKKWWRdd2pfEVC" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Role" %}
Selecting this dropdown type will make this permission based off a role. Once selected a new field will appear for you to be able to choose which role from your server to base the permissions off of.  You are also able to select [role options](/custom-commands-and-events/options/role-option) from this dropdown.

<figure><img src="/files/NyIQHTIoVqLvJ0EFTOM4" alt=""><figcaption></figcaption></figure>

If your role isn't showing, it was most likely recently added. Click the refresh icon to refresh the list of roles to find the role you want.
{% endtab %}

{% tab title="User" %}
Clicking on the User type will make the bot base the permissions off of a user.

### User

In this field you can input a plain user ID or a [variable](/custom-commands-and-events/variables) that returns one. [User options](/custom-commands-and-events/options/user-option) can also be used.

<figure><img src="/files/kaH4x9AuxztTNqgozBzS" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/i83ylvvBSlx8LDGrXqlJ" alt=""><figcaption></figcaption></figure>


# Edit a channel

<figure><img src="/files/3cqGqtxIzFn2QttdQSIb" alt=""><figcaption></figcaption></figure>

This action block will edit a existing channel in the server with new modifications or permissions.

{% hint style="warning" %}
Warning: The bot must have Manage Channels to be able to Edit a channel.
{% endhint %}

## Channel

This is the specific channel that the block will be targeting to edit.

<figure><img src="/files/cornVnfcNRmadVfKewH5" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Channel the command was used in" %}
This selection will edit the channel that the command / event was executed in or where a [button](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-attached-buttons/buttons) / [menu option](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-a-select-menu/menu-option) was clicked.
{% endtab %}

{% tab title="Channel Option" %}
By selecting the [channel option](/custom-commands-and-events/options/channel-option) type, it will prompt to make a new field where you can input the channel option and the bot will edit that channel. Only channel options can be selected in this field, for IDs and [variables](/custom-commands-and-events/variables) use [#channel-id](#channel-id "mention").

### Channel Option

A [channel option](/custom-commands-and-events/options/channel-option) must be added to the command for this selection to work.

<figure><img src="/files/hCVgKBxP9G5gh1OYcjVl" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/zG75ZM9DjtwAPoNdyW9i" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Channel ID" %}
This dropdown type will allow the bot to edit the channel with a specific channel ID or [variable](/custom-commands-and-events/variables).

### Channel ID

Input a plain channel ID into the field below. The ID must be plain and have no extra symbols or spaces. Likewise a [variable](/custom-commands-and-events/variables) can be used if it returns a plain channel ID.

<figure><img src="/files/fSgUEVBmRGGcvDTWGKSB" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/UlkDM35IWhoTdeMJG3r9" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Name

This optional field modifies the name of the channel. It may be left blank to leave the name unedited. [Variables](/custom-commands-and-events/variables) can be used.

<figure><img src="/files/zl0Iv3AV8WMPPZQkFojZ" alt=""><figcaption></figcaption></figure>

## Topic

This optional field modifies the topic of the channel. It may be left blank to leave the topic unedited. [Variables](/custom-commands-and-events/variables) can be used.

{% hint style="warning" %}
Warning: This only works for Text Channels
{% endhint %}

<figure><img src="/files/LcR7QUd1ViXb5r4xp282" alt=""><figcaption></figcaption></figure>

## Category

This is an optional field that moves the channel to a different category. It may be left blank to leave the category unedited. This field only accepts plain category IDs or [variables](/custom-commands-and-events/variables) can be used such as a [text option](/custom-commands-and-events/options/text-option).

<figure><img src="/files/aY5IvPIBcrWFzdNhjKgl" alt=""><figcaption></figcaption></figure>

## Slowmode

This is an optional field, also known as rate limit per user, it allows you to set a slow mode in the edited channel for each user unless the user has been bypassed. This field only accepts integers, and [variables](/custom-commands-and-events/variables) can be used.

{% hint style="warning" %}
Warning: This only works for Text Channels
{% endhint %}

<figure><img src="/files/ml8ettfCpjAydLvCB16v" alt=""><figcaption></figcaption></figure>

## NSFW

This is an optional toggle to choose whether or not to allow NSFW content within the channel. If chosen, the channel will be age restricted to 18+.

{% hint style="warning" %}
Warning: This only works for Text Channels
{% endhint %}

<figure><img src="/files/tomANRnjdgIxsCbI21dD" alt=""><figcaption></figcaption></figure>

## User Limit

This field represents an optional user limit targeting voice channels only. With a limit in place, only a certain amount of users can be in the voice channel. This field accepts integers only and [variables](/custom-commands-and-events/variables) can be used.

{% hint style="warning" %}
Warning: This only works for Voice Channels
{% endhint %}

<figure><img src="/files/F6e4VxcSEVnbOAK9cffN" alt=""><figcaption></figcaption></figure>

## Optional Server ID

This field is an optional server ID to search for the channel in. Leave blank to find the channel in the server the command was triggered in or who clicked a [button](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-attached-buttons/buttons) / [menu option](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-a-select-menu/menu-option). [Variables ](/custom-commands-and-events/variables)can be used in this field and it must be a plain server ID that is returned.

<figure><img src="/files/7bY18GlmIQQFfZJigjyE" alt=""><figcaption></figcaption></figure>

## Reason

This field is an optional reason of why the bot is editing this channel. This reason will appear in your server's Audit Log. [Variables ](/custom-commands-and-events/variables)can be used as well.

<figure><img src="/files/O7hTSP6HqyJqFMg55zI1" alt=""><figcaption></figcaption></figure>

## Merge Permissions

Instead of having your permissions overwritten when you edit a channel, you can merge the permissions you specify with the already existing permissions set in the channel.

<figure><img src="/files/eVWqOXU083YrLnQh9e9h" alt=""><figcaption><p>What the merge permission option looks like in the builder</p></figcaption></figure>

If you enable this option, the permissions you specify will be merged with the permissions that are already in the channel. It won't touch or edit any permissions that are not specified.

If you leave this option disabled, the permissions in the channel will be overwritten with the permissions that you specify.

## Permissions

Click the "+" to attach one or more permissions to the channel the bot is editing. Leave this field blank to have default permissions. Visit this [link](https://discord.com/developers/docs/topics/permissions#permissions-bitwise-permission-flags) to learn more about permissions. Clicking the button below will allow you to add permissions to the channel.

<figure><img src="/files/yiq1zwqdMTERyqgGkoGh" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/AMcKcRL0T3J1B8wJ9nS0" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/mhaOMHqWaXJHoVsJ2HGp" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Role" %}
Selecting this dropdown type will make this permission based off a role. Once selected a new field will appear for you to be able to choose which role from your server to base the permissions off of. You are also able to select [role options](/custom-commands-and-events/options/role-option) from this dropdown.

<figure><img src="/files/NyIQHTIoVqLvJ0EFTOM4" alt=""><figcaption></figcaption></figure>

If your role isn't showing, it was most likely recently added. Click the refresh icon to refresh the list of roles to find the role you want.
{% endtab %}

{% tab title="User" %}
Clicking on the User type will make the bot base the permissions off of a user.

### User

In this field you can input a plain user ID or a [variable](/custom-commands-and-events/variables) that returns one. [User options](/custom-commands-and-events/options/user-option) can also be used.

<figure><img src="/files/kaH4x9AuxztTNqgozBzS" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/i83ylvvBSlx8LDGrXqlJ" alt=""><figcaption></figcaption></figure>


# Delete a channel

<figure><img src="/files/LJv8JTqG2t4WNOkVGDa6" alt=""><figcaption></figcaption></figure>

This action block will delete any channel input, in any server the bot is in.

{% hint style="warning" %}
Warning: Your bot must have Manage Channel Permission to be able to Delete a channel.
{% endhint %}

## **Channel**

This dropdown is where you can choose which method to target the channel that you need deleted.

<figure><img src="/files/x9r0DmFikeJZIykVkAkg" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Specific Channel" %}
This type when selected will make a new dropdown appear for where you can choose which specific channel from a server to delete.

### Specific Channel

This is the dropdown as seen below. "Command Options" is where you can choose options from the command to be deleted. In this case it would delete a channel selected from the channel option.

<figure><img src="/files/y8SuejHmYzsnWvVi6QzK" alt=""><figcaption></figcaption></figure>

**Note: If you don't see the channel you wish for, click the refresh icon next to the title.**
{% endtab %}

{% tab title="Channel ID or Variable" %}
This selection will target a specific channel ID or [variable](/custom-commands-and-events/variables) to delete.&#x20;

### Channel ID or Variable

This field is where you input a plain channel ID or a [variable](/custom-commands-and-events/variables) that returns a plain channel ID.\
The ID must have no extra symbols or spaces.&#x20;

<figure><img src="/files/W5VgUtbHcVxefQiZHZ2I" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/Z96BOL2abBGUR2r4FVAE" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/i83ylvvBSlx8LDGrXqlJ" alt=""><figcaption></figcaption></figure>


# Thread and Forum Actions

The command / event builder has actions that allows the bot to modify threads. These threads can be public or private. The table below shows the available actions.

| Block                                                                                           | Information                                                                                                                                                    |
| ----------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Create a Thread](/custom-commands-and-events/actions/thread-and-forum-actions/create-a-thread) | This block will create a certain type of thread in a forum or other channel. A [variable](/custom-commands-and-events/variables) will be given to use as well. |
| [Edit a Thread](/custom-commands-and-events/actions/thread-and-forum-actions/edit-a-thread)     | This block will edit a existing thread. You can make all kinds of new modifications as needed.                                                                 |
| [Delete a Thread](/custom-commands-and-events/actions/thread-and-forum-actions/delete-a-thread) | This block will delete a existing thread. You may target a specific channel as well.                                                                           |


# Create a Thread

<figure><img src="/files/ezA9Yw8cNb5aYPDcyxo0" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
This action cannot be used for forum channels! For forum thread creation, use discord API [here](https://discord.com/developers/docs/resources/channel#start-thread-in-forum-or-media-channel).
{% endhint %}

The **Create a Thread** block enables you to create threads within your server through commands or events.

Each created thread has a unique variable that you can use to reference the thread in your command and can be identified by just looking for `{created_thread_xyz}`.

## Channel

To create the thread, you need to specify what channel you are going to create the thread in. There is three provided options to achieve this.

<figure><img src="/files/HCEeEfz9N4l5iMFXNX4c" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Channel the command was run in" %}
This selection will create the thread in the channel that the command / event was executed in or where a [button](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-attached-buttons/buttons) / [menu option](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-a-select-menu/menu-option) was clicked.

<figure><img src="/files/wAwn78jRidANcZCmOHkk" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Channel option" %}
By selecting the [channel option](/custom-commands-and-events/options/channel-option) type, it will prompt to make a new field where you can select the channel option and the bot will create the thread there. Only channel options can be selected in this field, for IDs and [variables](/custom-commands-and-events/variables) use [#channel-id](#channel-id "mention").

### Channel Option

A [channel option](/custom-commands-and-events/options/channel-option) must be added to the command for this selection to work.

<figure><img src="/files/vzT9qVILtIYXi6DJp1t3" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/9xyz4GQCdU4qK1LFL2om" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Channel ID" %}
This selection will allow the bot to create the thread in a specific channel ID or [variable](/custom-commands-and-events/variables).

### Channel ID

Input a plain channel ID into the field below. The ID must be plain and have no extra symbols or spaces. Likewise a [variable](/custom-commands-and-events/variables) can be used if it returns a plain channel ID.

<figure><img src="/files/qbxheEqfQPFZEuQvBZNI" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/Vll1oIOyYf8A0v9jCjBJ" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Start Message ID

This an optional field allows you to create the thread from a specific message. The only input for this field is a plain message ID with no extra symbols or spaces. A [variable](/custom-commands-and-events/variables) can be used as well.

<figure><img src="/files/zl3TTCwWdIPWS5kLQmJx" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/XLG32mrOnHpBh7GadYVv" alt=""><figcaption></figcaption></figure>

## Name

This is a required option, and it is the name of the thread that you want to create. You can use [variables](/custom-commands-and-events/variables) or [options](/custom-commands-and-events/options) as well.

<figure><img src="/files/1S3KjtmLizmTgyEfrv9f" alt=""><figcaption></figcaption></figure>

## Type

This is an optional option (public is default), and it is the type of thread that you want to create. You can choose from 3 types of thread types.

<figure><img src="/files/LncO9wvVVinMG7ztuce4" alt=""><figcaption></figcaption></figure>

| Type                | Information                                                                                                                              |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| Public Thread       | This type of thread is public which means it can be viewed by everyone in the server or everyone who has access to the channel it is in. |
| Private Thread      | This is the opposite of the Public Thread type which means it can't be viewed by everyone.                                               |
| Announcement Thread | This thread works similar to an announcement channel, any message in this thread can be published.                                       |

## Auto Archive

This is an optional field, and it is the time in which the thread will auto-archive itself. You can choose from 4 options:

* One Hour
* One Day
* Three  Days
* One Week

<figure><img src="/files/FwhsuDPTmSS13LM27EJe" alt=""><figcaption></figcaption></figure>

## Reason

This is an optional field. In this field you can input a reason why you are creating a thread. This reason will be shown in your server's audit log. [Variables](/custom-commands-and-events/variables) can also be used in this field.

<figure><img src="/files/K4WZbF48vD1OAjski1Tn" alt=""><figcaption></figcaption></figure>

## Slowmode

This is an optional field, also known as rate limit per user, it allows you to set a slowmode in the thread for each user unless the user has been bypassed. This field only accepts integers, and [variables](/custom-commands-and-events/variables) can be used.

<figure><img src="/files/UieTryjraULCfn8ruc9v" alt=""><figcaption></figcaption></figure>

## Moderators Invite

This option is only valid if the thread type is a Private Thread. This field is optional and it allows you to toggle whether a non-moderator can invite other users to the thread.

<figure><img src="/files/11zbGkmkSldo11fTjraa" alt=""><figcaption></figcaption></figure>

## Variables

You can now access various variables from the created thread and use them throughout your custom command (as long as it is in the same interaction). \
\
You can use these variables by just adding them to the end of the `{created_thread_abcd}` variable, but before the `}`.  The 4 characters "abcd" are shown in your create thread block at the top.

<figure><img src="/files/Q20mKFdmNU59iis14XQv" alt=""><figcaption></figcaption></figure>

An example to get the name would be like this: `{created_thread_48f3.name}`.

<table><thead><tr><th width="147">Name</th><th>Description</th></tr></thead><tbody><tr><td>.name</td><td>Returns the name of the thread</td></tr><tr><td>.id</td><td>Returns the ID of the thread</td></tr><tr><td>.parent</td><td>Returns the parent channel of the thread</td></tr><tr><td>.parent_id</td><td>Returns the parent's ID of the thread</td></tr><tr><td>.archived</td><td>Returns whether the thread is archived or not (as <code>true</code> or <code>false</code>)</td></tr><tr><td>.locked</td><td>Returns whether the thread is locked or not (as <code>true</code> or <code>false</code>)</td></tr><tr><td>.invitable</td><td>Returns whether a non-moderator can invite users to the thread or not (as <code>true</code> or <code>false</code>)</td></tr><tr><td>.owner_id</td><td>Returns the thread owner's ID</td></tr><tr><td>.url</td><td>Returns the url of the thread</td></tr></tbody></table>

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/i83ylvvBSlx8LDGrXqlJ" alt=""><figcaption></figcaption></figure>


# Edit a Thread

<figure><img src="/files/cMXOyGPyUMSlgKLcOjWd" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
This action cannot be used for forum channels!
{% endhint %}

The **Edit a Thread** block enables you to edit any existing thread in your servers that the bot is in.

Each edited thread has a unique variable that you can use to reference the thread in your command and can be identified by just looking for `{edited_thread_xyz}`.

## Channel

To edit a thread, you need to specify where the thread is. There are three provided options to achieve this.

<figure><img src="/files/h3nz58CRdbr9fNbz9l4p" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Thread the command was run in" %}
This selection will edit the thread in the channel where the command / event was executed in. To use specific channels and [variables](/custom-commands-and-events/variables) use [#channel-and-thread-id](#channel-and-thread-id "mention") or [#channel-option-and-thread-id](#channel-option-and-thread-id "mention").
{% endtab %}

{% tab title="Channel and Thread ID" %}
This selection will edit the specified thread in the channel that is also specified. Both are specified by an ID not a selection.

### Channel ID

This field is where you input a plain channel ID. There can be no extra symbols or spaces. [Variables](/custom-commands-and-events/variables) an also be used as long as it returns a plain channel ID.

<figure><img src="/files/jFpxAyiXuQzR9kYO6tUT" alt=""><figcaption></figcaption></figure>

### Thread ID

This field is where you input a plain thread ID. Same as a channel ID, no symbols or spaces. [Variables](/custom-commands-and-events/variables) can be used.&#x20;

<figure><img src="/files/R9Vn2yHKU0yLGhQ4rl3Y" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Channel Option and Thread ID" %}
This selection will edit a specified thread ID in the channel selection via a [channel option](/custom-commands-and-events/options/channel-option).

### Channel Option

This field is a selection where you can choose which option to target. This selection will only work if you have a channel option in your command.

<figure><img src="/files/IdtzLLQQbGfUWXB5ZG22" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/s0ZoQR2Xr8yAy90BLx7F" alt=""><figcaption></figcaption></figure>

### Thread ID

This field accepts a plain thread ID with no extra symbols or spaces to target. The targeted thread ID will then be edited only if it is in that channel option. [Variables](/custom-commands-and-events/variables) can be used.

<figure><img src="/files/MgkaK2ThBmTsCkYKi4zW" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Name

This is an optional field, and it is the name of the thread that you want to edit. You can use [variables](/custom-commands-and-events/variables) or [options](/custom-commands-and-events/options) as well.

<figure><img src="/files/1S3KjtmLizmTgyEfrv9f" alt=""><figcaption></figcaption></figure>

## Auto Archive

This is an optional selection, and it is the time in which the thread will auto-archive itself. You can choose from 4 options:

* One Hour
* One Day
* Three  Days
* One Week

<figure><img src="/files/FwhsuDPTmSS13LM27EJe" alt=""><figcaption></figcaption></figure>

## Reason

An optional field that, you can input a reason why you are editing a thread. Variables can be used in this field as well. The reason will show in your server's audit log.

<figure><img src="/files/K4WZbF48vD1OAjski1Tn" alt=""><figcaption></figcaption></figure>

## Slowmode

This is an optional field, also known as rate limit per user, it allows you to set a slow mode in the thread for each user unless the user has been bypassed. This field only accepts integers, and [variables](/custom-commands-and-events/variables) can be used.

<figure><img src="/files/UieTryjraULCfn8ruc9v" alt=""><figcaption></figcaption></figure>

## Moderators Invite

This an optional toggle that only shows if the thread type is Private Thread. It allows you to toggle whether a non-moderator can invite other users to the thread.

<figure><img src="/files/11zbGkmkSldo11fTjraa" alt=""><figcaption></figcaption></figure>

## Locked

An optional toggle that is used if you want to lock the thread, meaning that only moderators can send messages if the thread has been locked.

<figure><img src="/files/YZIMbvp1rFsxhrxyhuGL" alt=""><figcaption></figcaption></figure>

## Archived

An optional field, this is used when you want to archive the thread, putting it into an archived state.

<figure><img src="/files/M47Q7i5ViqI7kYXh8ycx" alt=""><figcaption></figcaption></figure>

## Variables

You can now access various variables from the created thread and use them throughout your custom command (as long as it is in the same interaction). \
\
You can use these variables by just adding them to the end of the `{edited_thread_abcd}` variable, but before the `}`. The 4 characters "abcd" are shown in your create thread block at the top.

<figure><img src="/files/8oT0xMTcwpKVGaJtIB1J" alt=""><figcaption></figcaption></figure>

An example to get the name would be like this: `{edited_thread_48f3.name}`.

<table><thead><tr><th width="147">Name</th><th>Description</th></tr></thead><tbody><tr><td>.name</td><td>Returns the name of the thread</td></tr><tr><td>.id</td><td>Returns the ID of the thread</td></tr><tr><td>.parent</td><td>Returns the parent channel of the thread</td></tr><tr><td>.parent_id</td><td>Returns the parent's ID of the thread</td></tr><tr><td>.archived</td><td>Returns whether the thread is archived or not (as true or false)</td></tr><tr><td>.locked</td><td>Returns whether the thread is locked or not (as true or false)</td></tr><tr><td>.invitable</td><td>Returns whether a non-moderator can invite users to the thread or not (as true or false)</td></tr><tr><td>.owner_id</td><td>Returns the thread owner's ID</td></tr><tr><td>.url</td><td>Returns the url of the thread</td></tr></tbody></table>

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/i83ylvvBSlx8LDGrXqlJ" alt=""><figcaption></figcaption></figure>


# Delete a Thread

<figure><img src="/files/0uS8NTpBqpyLuVjCJST4" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
This action cannot be used for forum channels!
{% endhint %}

This action allows you to delete a thread in your server.

## Channel

To delete a thread, you need to specify where the thread is. We provide you with 2 options to achieve this:

<figure><img src="/files/eeuhk7NVYSZBHJPxOYtJ" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Thread the command was run in" %}
This selection will delete the thread in the channel where the command / event was executed in. To use specific channels and [variables](/custom-commands-and-events/variables) use [#channel-and-thread-id](#channel-and-thread-id "mention") or [#channel-option-and-thread-id](#channel-option-and-thread-id "mention").
{% endtab %}

{% tab title="Channel and Thread ID" %}
This selection will delete the specified thread in the channel that is also specified. Both are specified by an ID not a selection.

### Channel ID

This field is where you input a plain channel ID. There can be no extra symbols or spaces. [Variables](/custom-commands-and-events/variables) an also be used as long as it returns a plain channel ID.

<figure><img src="/files/jFpxAyiXuQzR9kYO6tUT" alt=""><figcaption></figcaption></figure>

### Thread ID

This field is where you input a plain thread ID. Same as a channel ID, no symbols or spaces. [Variables](/custom-commands-and-events/variables) can be used.&#x20;

<figure><img src="/files/KxvW4L83BuxkgLUIRi5o" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Channel Option and Thread ID" %}
This selection will delete a specified thread ID in the channel selection via a [channel option](/custom-commands-and-events/options/channel-option).

### Channel Option

This field is a selection where you can choose which option to target. This selection will only work if you have a channel option in your command.

<figure><img src="/files/qQzh85HolHxr0iEg7OrL" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/XOzYQttr4J4zAtn1Jqhg" alt=""><figcaption></figcaption></figure>

### Thread ID

This field accepts a plain thread ID with no extra symbols or spaces to target. The targeted thread ID will then be deleted only if it is in that channel option. [Variables](/custom-commands-and-events/variables) can be used.

<figure><img src="/files/wSQ8VGGTJhgrWK03ZzYG" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/i83ylvvBSlx8LDGrXqlJ" alt=""><figcaption></figcaption></figure>


# Server Actions

Server actions are action blocks that allows the bot to perform server related actions that affect a server member or manage the server.

| Block                                                                                                     | Information                                                                                                                                |
| --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| [Kick a member](/custom-commands-and-events/actions/server-actions/kick-a-member)                         | This block will kick a specified member from a server.                                                                                     |
| [Ban a member](/custom-commands-and-events/actions/server-actions/ban-a-member)                           | This block will ban a specified member from a server.                                                                                      |
| [Timeout a member](/custom-commands-and-events/actions/server-actions/timeout-a-member)                   | This block will timeout a specified member from a server.                                                                                  |
| [Change a members nickname](/custom-commands-and-events/actions/server-actions/change-a-members-nickname) | With this block you are able to change a server members' nickname.                                                                         |
| [Purge messages](/custom-commands-and-events/actions/server-actions/purge-messages)                       | This block allows you to purge a specific amount of messages in a specific channel.                                                        |
| [Leave Server](/custom-commands-and-events/actions/server-actions/leave-server)                           | With this action, you can make the bot to leave a server.                                                                                  |
| [Create Server Invite](/custom-commands-and-events/actions/server-actions/create-server-invite)           | This block will create a server invite for a specific server that can be created to have many specifications, such as uses, duration, etc. |


# Kick a member

<figure><img src="/files/sJmpgt029DJ4q8EMOX7v" alt=""><figcaption></figcaption></figure>

This action block can be used to kick a member from a server that the bot has access to.

{% hint style="warning" %}
The bot must at least have the kick member permission for this block to work and must be above the targeted user.
{% endhint %}

## User ID

This field targets a user ID to be kicked. This can be done by a **user id**, [**user option**](/custom-commands-and-events/options/user-option)**, or** [**variable**](/custom-commands-and-events/variables). \
Keep in mind the variable has to return a plain user ID with no extra symbols or spaces.

<figure><img src="/files/urSaSa3qORUgA33Ox2IO" alt=""><figcaption></figcaption></figure>

## Reason

This is an optional field. In this field you can input a reason why you are kicking a member. This reason will be shown in your server's audit log. [Variables](/custom-commands-and-events/variables) can also be used in this field.

<figure><img src="/files/FvVs38sZxypFcnB4MlKI" alt=""><figcaption></figcaption></figure>

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/i83ylvvBSlx8LDGrXqlJ" alt=""><figcaption></figcaption></figure>


# Ban a member

This action block can be used to ban a member from a server that the bot has access to.

<figure><img src="/files/tmkeRP0qRw88PPMb7Lwm" alt="" width="455"><figcaption></figcaption></figure>

{% hint style="warning" %}
The bot must have at least the ban member permission for this block to work and must be above the targeted user.
{% endhint %}

## User ID

This field targets a user ID to be banned. This can be done by a **user id**, [**user option**](/custom-commands-and-events/options/user-option)**, or** [**variable**](/custom-commands-and-events/variables). Keep in mind the variable has to return a plain user ID with no extra symbols or spaces.

<figure><img src="/files/4tbD9oK6baNcpJLZjwUE" alt=""><figcaption></figcaption></figure>

## Reason

This is an optional field. In this field you can input a reason why you are banning a member. This reason will be shown in your server's audit log. [Variables](/custom-commands-and-events/variables) can also be used in this field.

<figure><img src="/files/PdjaoP0XDzMm0BeH4qLf" alt=""><figcaption></figcaption></figure>

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/i83ylvvBSlx8LDGrXqlJ" alt=""><figcaption></figcaption></figure>


# Timeout a member

<figure><img src="/files/ooqRD7esDdK9pIH88r0S" alt=""><figcaption></figcaption></figure>

This action block can be used to timeout a member from a server that the bot has access to.

{% hint style="warning" %}
The bot must at least have the timeout members permission for this block to work and must be above the targeted user.
{% endhint %}

## User ID

This field targets a user ID to be timed out. This can be done by a **user id**, [**user option**](/custom-commands-and-events/options/user-option)**, or** [**variable**](/custom-commands-and-events/variables). Keep in mind the variable has to return a plain user ID with no extra symbols or spaces.

<figure><img src="/files/6dvCT9Fq7x9VemmwbTuM" alt=""><figcaption></figcaption></figure>

## Duration

This field modifies the duration of the timeout that the member will be placed upon. The duration follows a specific format that must be inputted correctly. The field describes said format below.\
[Variables](/custom-commands-and-events/variables) can be used in this field as long as it returns the value in the correct format.

<figure><img src="/files/IWJhTptrK0Y4AboBpLM5" alt=""><figcaption></figcaption></figure>

## Reason

This is an optional field. In this field you can input a reason why you are timing-out a member. This reason will be shown in your server's audit log. [Variables](/custom-commands-and-events/variables) can also be used in this field.

<figure><img src="/files/R5JKHyGnDJ86AiZhjhl1" alt=""><figcaption></figcaption></figure>

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/i83ylvvBSlx8LDGrXqlJ" alt=""><figcaption></figcaption></figure>


# Change a members nickname

<figure><img src="/files/9qrckF9KYLbdWRC5PfN7" alt=""><figcaption></figcaption></figure>

This action block changes the nickname of a member in a server. You can specify / target a specific user to change the nickname of.

{% hint style="warning" %}
Warning: The bot must have Change Nickname permissions to be able to change a member(s) nickname.
{% endhint %}

## Member

{% tabs %}
{% tab title="User who used the command" %}
If this type is chosen, the bot will change the nickname of whoever executed the command / event or who clicked the [button](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-attached-buttons/buttons) / [menu option](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-a-select-menu/menu-option).
{% endtab %}

{% tab title="User Option" %}
Selecting "user option" will change the nickname of the user selected inside the command from the user option.

### User option

You must have a user option added in the command in order for this field to work.\
Only [user options](/custom-commands-and-events/options/user-option) may be used in this field, IDs and [variables](/custom-commands-and-events/variables) can be used in [#user-id](#user-id "mention")

<figure><img src="/files/C2SpcBae5gDl4A7I2Cm7" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/qPFQlTcYuKPfgqEaG778" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="User ID" %}
This selection will change the nickname of the user and it will target a specific user ID or [variable ](/custom-commands-and-events/variables)that contains a user ID.

### User ID

This field accepts any plain user ID with no extra symbols or spaces. The ID can be in the form of a [variable ](/custom-commands-and-events/variables)as well.

<figure><img src="/files/CDrXVtyWHjVhHs7CxWOz" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/TjTBuNsV85XkdBW2owqi" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## New Nickname

This field is the new nickname that you want to change the user’s nickname to. You can use [variables](/custom-commands-and-events/variables) and [options](/custom-commands-and-events/options) inside this field.

<figure><img src="/files/B5PGcj8ilYbyAbqM0Hbs" alt=""><figcaption></figcaption></figure>

## Reason

This is an optional field. In this field you can input a reason why you are changing a members nickname. This reason will be shown in your server's audit log. [Variables](/custom-commands-and-events/variables) can also be used in this field.

<figure><img src="/files/I8nZcw0g5azQF124VQhD" alt=""><figcaption></figcaption></figure>

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/i83ylvvBSlx8LDGrXqlJ" alt=""><figcaption></figcaption></figure>


# Purge Messages

<figure><img src="/files/Xff3TEGumYmiJwlpwQWr" alt=""><figcaption></figcaption></figure>

The purge messages action block will allow you purge a specific amount of messages in a specfic channel.

{% hint style="warning" %}
If messages are older than 14 days, they can't be deleted, unless you're deleting only 1 message.
{% endhint %}

## **Channel**

<figure><img src="/files/gvtTFbFXMYckC72Vom2R" alt=""><figcaption></figcaption></figure>

{% tabs %}
{% tab title="Channel the command was run in" %}
This type will purge messages in the channel that the command / event was executed in or where a [button](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-attached-buttons/buttons) / [menu option](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-a-select-menu/menu-option) was clicked.
{% endtab %}

{% tab title="Channel ID or Option" %}
Selecting this dropdown will target a specific channel ID or Option for where the messages will be purged in.

### **Channel ID or Option**

This field is where you input a plain channel ID / [variable](/custom-commands-and-events/variables) or a [channel option](/custom-commands-and-events/options/channel-option).&#x20;

<figure><img src="/files/6FGzGabjKOEirwyTqptg" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## **Amount**

This field is the amount of messages that will be purged. It only accepts integers / [variables](/custom-commands-and-events/variables) that return a integer.&#x20;

<figure><img src="/files/QNFXvF3VXz8FD3jKvbs6" alt=""><figcaption></figcaption></figure>

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/i83ylvvBSlx8LDGrXqlJ" alt=""><figcaption></figcaption></figure>


# Create Server Invite

<figure><img src="/files/aC8bpm6pCR3K7pUYpAWS" alt=""><figcaption></figcaption></figure>

The Create Server Invite block is self explanatory and creates a server invite for a specific server.

## Channel

<figure><img src="/files/D0hgoxhXUFzJlEqe05z0" alt=""><figcaption></figcaption></figure>

This dropdown menu is the channel target for the server invite. You will have the three standard options to choose from.

{% tabs %}
{% tab title="Channel the command was run in" %}
If this type is selected, the server invite will be targeted towards the channel the command / event was run in.
{% endtab %}

{% tab title="Channel Option" %}
Selecting "channel option" will have the server invite target the channel a user selected inside the command from the [channel option](/custom-commands-and-events/options/channel-option).

### Channel Option

You must have a channel option added in the command in order for this field to work.\
Only [channel options](/custom-commands-and-events/options/channel-option) may be used in this field, IDs and [variables](/custom-commands-and-events/variables) can be used in [#channel-id](#channel-id "mention")

<figure><img src="/files/8GXGVdZeUdxD46yHqxUJ" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/5snBrLWwVNCMSMyOuFmV" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Channel ID" %}
This type selected from the dropdown will have the server invite target a specific channel ID or [variable ](/custom-commands-and-events/variables)that contains a channel ID.

### Channel ID

This field accepts any plain channel ID with no extra symbols or spaces. The ID can be in the form of a [variable ](/custom-commands-and-events/variables)as well.

<figure><img src="/files/M9lMdqhwFHo6Ujlb1sTb" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/R0CmvR4iVbMhdQ4lszam" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Invite Duration

This field is modifies how long the server invite will be valid (in seconds) for until expiration. The field only accepts integers, 0 being the duration is infinite. [Variables](/custom-commands-and-events/variables) can be used.

<figure><img src="/files/Ixdjc3A3WrSXdIYvi3l4" alt=""><figcaption></figcaption></figure>

## Max Uses

Similar to the duration field, this field is the number of uses the invite can have until it is unusable. Likewise, it only accepts integers and [variables](/custom-commands-and-events/variables). Having it set to 0 will make the amount of uses infinite.

<figure><img src="/files/tByGWt48bXRi4RICVE2K" alt=""><figcaption></figcaption></figure>

## Temporary

This dropdown menu represents a temporary kick system. If the user doesn't receive a role in 24 hours upon them joining off the invite created, they will be kicked. You can enable to disable this by making them temporary or not.

<figure><img src="/files/P41P02XgVBi0C4q9JjC9" alt=""><figcaption></figcaption></figure>

## Unique Invite

This dropdown menu represents whether the invite is unique or is based off another invite. If the "user a existing invite" is selected, then the bot will create the invite with similar settings based off other invites in that server.

<figure><img src="/files/0rVP8hY1famU7tGtHUiI" alt=""><figcaption></figcaption></figure>

## Optional Server ID

This field is where you input a plain server ID to for the server invite to target the channel in. This field can be left blank to target the server of wherever the command / event was triggered in or where a user clicked a [button](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-attached-buttons/buttons) / [menu option](/custom-commands-and-events/actions/legacy-reply-actions/send-a-message-with-a-select-menu/menu-option).  A [variable](/custom-commands-and-events/variables) containing a plain server ID that has no spaces or extra symbols can be used as well.

<figure><img src="/files/UY298dRaTRfDVABcYJ7z" alt=""><figcaption></figcaption></figure>

## Invite Variable

This field is however the variable that returns the server invite URL will be returned. This is similar to the [set a unique variable](/custom-commands-and-events/actions/other-actions/set-a-unique-variable) block, so you can name your variable whatever you wish inside {}. You can then use this invite variable in later actions.

<figure><img src="/files/txwIPDjdoo8iJCLKJS9x" alt=""><figcaption></figcaption></figure>

## Enable Success/Error Handles

Enable Success / Error Handles to detect success and errors inside of the action block. This allows you to run different actions if something goes wrong with your action. Inside of the handle, there are 2 different paths which are used to detect the outcome of the action. The green path on the bottom left side of the block indicates success, while the red path on the bottom right side of the block indicates error. You may attach action blocks to each side of the handle to get the outcome of your action block.

<figure><img src="/files/pYtBPljHi13YFv89blSF" alt=""><figcaption></figcaption></figure>

The Success/Error Handles feature includes 3 different error variables you can use to get information on why the action block encountered an error. Check them out [here](/custom-commands-and-events/variables#error-variables).

<figure><img src="/files/i83ylvvBSlx8LDGrXqlJ" alt=""><figcaption></figcaption></figure>


# Leave Server

<figure><img src="/files/Xic5vwyKpA26tvGkAlG3" alt=""><figcaption></figcaption></figure>

With the "Leave Server" action you can force the bot to leave a server. Please note this action cannot be undone and the bot will need to be re-invited to rejoin the server, so consider adding a confirmation step before using this action.

## Target Server

<figure><img src="/files/mY9vVtnKbc7ktzojLwYP" alt=""><figcaption></figcaption></figure>

This dropdown menu is the channel target for the server invite. You will only have two options to choose from.

{% tabs %}
{% tab title="Current Server" %}
If this type is selected, the bot will leave the server where the command has been ran.&#x20;
{% endtab %}

{% tab title="Server ID" %}
If this type is selected, the bot will leave the server entered in the field below by ID or variable.&#x20;

## Server ID

<figure><img src="/files/NAIpy1YuqiRZc0qFQ4Ws" alt=""><figcaption></figcaption></figure>

In this field you can enter the server ID or variable of the server that you want to leave with the bot.&#x20;
{% endtab %}
{% endtabs %}


# Other Actions

This section of actions are other actions that don't really fall under a specific category but are very useful in creating a command or event and can help with specific systems or projects.

| Block                                                                                                                      | Information                                                                                                           |
| -------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| [Wait before running another action](/custom-commands-and-events/actions/other-actions/wait-before-running-another-action) | This action block can force the bot to wait some time before performing another action.                               |
| [Manipulate some text](/custom-commands-and-events/actions/other-actions/manipulate-some-text)                             | This block can be used to manipulate text in certain ways to fit your needs.                                          |
| [Send a error log message](/custom-commands-and-events/actions/other-actions/send-an-error-log-message)                    | With this block you will be able to send an error log message to your BotGhost dashboard.                             |
| [Set a unique variable](/custom-commands-and-events/actions/other-actions/set-a-unique-variable)                           | This block allows one to set a unique variable that can only be used in later actions of an event or command builder. |
| [Change the Bot's Status](/custom-commands-and-events/actions/other-actions/change-the-bots-status)                        | Using this block you are able to update your bot's status. (Premium only)                                             |
| [Note](/custom-commands-and-events/actions/other-actions/note)                                                             | Allows you to place a note inside of your command or event builder, useful for saving information.                    |




---

[Next Page](/llms-full.txt/1)

