> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gorbit.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Discord Bot

> Configure your Discord bot

## Overview

You can access Gorbit Cloud or your self-hosted instance through a Discord bot.

<Note>
  If you want to use Gorbit Cloud, you must use the official GorbitBot Discord app.

  Self-hosted instances must create their own Discord app in the Developer Portal.
</Note>

## Configuration

### Official GorbitBot

You'll need to be an admin of the Discord server and an admin in your Gorbit instance to install and configure GorbitBot.

<Steps>
  <Step title="Install GorbitBot in your Discord server">
    Click [here](https://discord.com/oauth2/authorize?client_id=1460722463431327804)
    to install the official GorbitBot in your Discord server.

    <img className="rounded-image" src="https://mintcdn.com/gorbit/klR7erNMN33AvYm0/assets/admins/discord_bot/install_discordbot.png?fit=max&auto=format&n=klR7erNMN33AvYm0&q=85&s=f6724ff361c9197bebb475dc26716fe6" alt="Install GorbitBot in Discord server" style={{maxHeight: '400px'}} width="834" height="1048" data-path="assets/admins/discord_bot/install_discordbot.png" />
  </Step>

  <Step title="Allow access to a private text channel">
    Go to the channel settings and click on the "Permissions" tab.

    Add GorbitBot to the "Allowed Users" list.

    <img className="rounded-image" src="https://mintcdn.com/gorbit/klR7erNMN33AvYm0/assets/admins/discord_bot/discord_private_channel_config.png?fit=max&auto=format&n=klR7erNMN33AvYm0&q=85&s=b22d5dcbc7ad8ec144fb89405b39be1f" alt="Allow GorbitBot to access a private text channel" width="1996" height="1050" data-path="assets/admins/discord_bot/discord_private_channel_config.png" />
  </Step>

  <Step title="Create a registration key in Gorbit">
    Create or log in to your account on [Gorbit Cloud](https://cloud.gorbit.app).

    Navigate to the Gorbit Admin Panel > Discord Bots and click on the **Add Server** button.

    Copy the registration key.

    <Note>
      The registration key will only be shown once. If you lose it,
      delete the server configuration and create a new one.

      The key is invalidated as soon as you use it and does not allow any other access to your Gorbit instance.
    </Note>
  </Step>

  <Step title="Register your Server in Gorbit">
    Send your registration key in the private channel you allowed GorbitBot to access.

    GorbitBot should respond with a message confirming the server has been registered.

    <img className="rounded-image" src="https://mintcdn.com/gorbit/klR7erNMN33AvYm0/assets/admins/discord_bot/register_server.png?fit=max&auto=format&n=klR7erNMN33AvYm0&q=85&s=e4c4851866a452265bdc9d3a9081d5db" alt="GorbitBot registered in Gorbit" width="1582" height="208" data-path="assets/admins/discord_bot/register_server.png" />

    In Gorbit, you should see the server status **Registered**.

    <img className="rounded-image" src="https://mintcdn.com/gorbit/klR7erNMN33AvYm0/assets/admins/discord_bot/configured_discord_server.png?fit=max&auto=format&n=klR7erNMN33AvYm0&q=85&s=4064737a61c0bca9b0adbb643b3b1e61" alt="GorbitBot registered in Gorbit" width="1798" height="1146" data-path="assets/admins/discord_bot/configured_discord_server.png" />
  </Step>

  <Step title="Configure Channel behavior">
    Click the pencil icon next to the server name to configure the bot's behavior.

    <Tip>
      By default, the bot will not respond in any channels. You must select the channels you want the bot to respond in.

      We highly recommend configuring a **custom agent** with specific data access for the bot.
      Otherwise it may answer from privately indexed data.
    </Tip>

    You can customize:

    * The default agent that powers the bot's responses
    * Agent overrides for specific channels
    * Whether the bot should respond to all messages or only to messages tagged with @GorbitBot
    * Whether the bot responds in replies or threads

    <img className="rounded-image" src="https://mintcdn.com/gorbit/klR7erNMN33AvYm0/assets/admins/discord_bot/discord_channel_configs.png?fit=max&auto=format&n=klR7erNMN33AvYm0&q=85&s=d112ddfbef5316289d16f5e50df5633e" alt="Configure Channel Behavior" width="2348" height="1774" data-path="assets/admins/discord_bot/discord_channel_configs.png" />
  </Step>
</Steps>

### Self-hosted Discord Bot

If you want to deploy your own Discord bot with your self-hosted Gorbit instance,
you'll need to set up your own Discord app.

<Info>
  In the Developer Portal, you'll see references to "Guilds." This is Discord's internal term for servers.
</Info>

<Steps>
  <Step title="Create a new Discord app">
    Navigate to the [Discord Developer Portal](https://discord.com/developers/applications)
    and click **New Application**.

    Give your app a name and click **Create**.

    <img className="rounded-image" src="https://mintcdn.com/gorbit/klR7erNMN33AvYm0/assets/admins/discord_bot/new_discord_app.png?fit=max&auto=format&n=klR7erNMN33AvYm0&q=85&s=c1a97dfe0cb832e05d9bd8609c4502f9" alt="Create a new Discord app" width="2272" height="1070" data-path="assets/admins/discord_bot/new_discord_app.png" />
  </Step>

  <Step title="Configure permissions and installation settings">
    Navigate to the **Installation** tab.

    Uncheck **User Install**. The Discord app cannot be installed for pesronal use.
    It must be installed in servers only.

    Add the following scopes:

    ```
    - bot
    - applications.commands
    ```

    Add the following permissions:

    ```
    - View channels
    - Send messages
    - Send messages in threads
    - Create public threads
    - Create private threads
    - Read message history
    - Add reactions
    ```

    <img className="rounded-image" src="https://mintcdn.com/gorbit/klR7erNMN33AvYm0/assets/admins/discord_bot/installation_config.png?fit=max&auto=format&n=klR7erNMN33AvYm0&q=85&s=4f25e6e31e52a670ec45a5c71299d93f" alt="Discord installation configuration" width="2950" height="2112" data-path="assets/admins/discord_bot/installation_config.png" />
  </Step>

  <Step title="Enable Privileged Gateway Intents">
    On the **Bot** tab, scroll to the **Privileged Gateway Intents** section and enable all 3 toggles:

    * Presence Intent
    * Server Members Intent
    * Message Content Intent

    <img className="rounded-image" src="https://mintcdn.com/gorbit/klR7erNMN33AvYm0/assets/admins/discord_bot/privileged_gateway_intents.png?fit=max&auto=format&n=klR7erNMN33AvYm0&q=85&s=13cde6edc36439d0409e18da3b4a61d5" alt="Discord privileged gateway intents" width="4056" height="1254" data-path="assets/admins/discord_bot/privileged_gateway_intents.png" />
  </Step>

  <Step title="Install the app in your Discord server">
    Use the **Install Link** on the **Installation** tab to install the app in your Discord server.
  </Step>

  <Step title="Allow your app to access a private text channel">
    Go to the channel settings and click on the "Permissions" tab.

    Add your app to the "Allowed Users" list.

    <img className="rounded-image" src="https://mintcdn.com/gorbit/klR7erNMN33AvYm0/assets/admins/discord_bot/discord_private_channel_config.png?fit=max&auto=format&n=klR7erNMN33AvYm0&q=85&s=b22d5dcbc7ad8ec144fb89405b39be1f" alt="Allow GorbitBot to access a private text channel" width="1996" height="1050" data-path="assets/admins/discord_bot/discord_private_channel_config.png" />
  </Step>

  <Step title="Retrieve your bot token">
    In the Developer Portal, navigate to the **Bot** tab and look for the **Token** section.

    Click **Reset Token** and copy your bot token.

    <img className="rounded-image" src="https://mintcdn.com/gorbit/klR7erNMN33AvYm0/assets/admins/discord_bot/bot_token_config.png?fit=max&auto=format&n=klR7erNMN33AvYm0&q=85&s=5f8347e2acc536d4be5bbbb0a0905fc3" alt="Discord bot token configuration" width="2180" height="1472" data-path="assets/admins/discord_bot/bot_token_config.png" />
  </Step>

  <Step title="Configure your app in Gorbit">
    Navigate to the Gorbit Admin Panel > Discord Bots.

    Paste your bot token into the **Bot Token** field and click **Create!**

    <img className="rounded-image" src="https://mintcdn.com/gorbit/klR7erNMN33AvYm0/assets/admins/discord_bot/configure_discord_bot_token.png?fit=max&auto=format&n=klR7erNMN33AvYm0&q=85&s=cb0018e53b23eba518bf37c67aaffd75" alt="Discord bot token" width="1798" height="1038" data-path="assets/admins/discord_bot/configure_discord_bot_token.png" />
  </Step>

  <Step title="Create a registration key in Gorbit">
    Click on the **Add Server** button and copy the registration key.

    <Note>
      The registration key will only be shown once. If you lose it,
      delete the server configuration and create a new one.

      The key is invalidated as soon as you use it and does not allow any other access to your Gorbit instance.
    </Note>
  </Step>

  <Step title="Register your Server in Gorbit">
    Send your registration key in the private channel you allowed your app to access.

    Your Gorbit bot should respond with a message confirming the server has been registered.

    <img className="rounded-image" src="https://mintcdn.com/gorbit/klR7erNMN33AvYm0/assets/admins/discord_bot/register_server.png?fit=max&auto=format&n=klR7erNMN33AvYm0&q=85&s=e4c4851866a452265bdc9d3a9081d5db" alt="GorbitBot registered in Gorbit" width="1582" height="208" data-path="assets/admins/discord_bot/register_server.png" />

    In Gorbit, you should see the server status **Registered**.

    <img className="rounded-image" src="https://mintcdn.com/gorbit/klR7erNMN33AvYm0/assets/admins/discord_bot/configured_discord_server.png?fit=max&auto=format&n=klR7erNMN33AvYm0&q=85&s=4064737a61c0bca9b0adbb643b3b1e61" alt="GorbitBot registered in Gorbit" width="1798" height="1146" data-path="assets/admins/discord_bot/configured_discord_server.png" />
  </Step>

  <Step title="Configure Channel behavior">
    Click the pencil icon next to the server name to configure the bot's behavior.

    <Tip>
      By default, the bot will not respond in any channels. You must select the channels you want the bot to respond in.

      We highly recommend configuring a **custom agent** with specific data access for the bot.
      Otherwise it may answer from privately indexed data.
    </Tip>

    You can customize:

    * The default agent that powers the bot's responses
    * Agent overrides for specific channels
    * Whether the bot should respond to all messages or only to messages tagged with @GorbitBot
    * Whether the bot responds in replies or threads

    <img className="rounded-image" src="https://mintcdn.com/gorbit/klR7erNMN33AvYm0/assets/admins/discord_bot/discord_channel_configs.png?fit=max&auto=format&n=klR7erNMN33AvYm0&q=85&s=d112ddfbef5316289d16f5e50df5633e" alt="Configure Channel Behavior" width="2348" height="1774" data-path="assets/admins/discord_bot/discord_channel_configs.png" />
  </Step>
</Steps>

## FAQ

### Why can't I see all of my channels in Gorbit?

If you've added or removed channels from your Discord server, you'll need to sync the channels to Gorbit.

Run `!sync-channels` in any text channel that GorbitBot has access to.

### `!` is already taken by another command!

`!sync-channels` is currently the only command supported for GorbitBot.

If you are self-hosting, you can set the `DISCORD_BOT_INVOKE_CHAR` environment variable to change the command prefix.

If you are using the official GorbitBot, unfortunately, we cannot change the prefix. However,
you may still be able to run the command by creating a private channel that only GorbitBot has access to.

### My Discord bot is connected but not responding to any messages

If you are seeing this behavior, you could be experiencing the following error (in background container):

```
api_client.py  182: Failed to connect to API: Cannot connect to host 127.0.0.1:8080
```

To fix this, make sure you have the latest docker-compose.yml files by running `git pull` in your Gorbit repo.
Verify that `API_SERVER_PROTOCOL` and `API_SERVER_HOST` exists in your compose file.
