Discord Bot Development
Run your own instance of the GAIA Discord bot.Looking to use GAIA on Discord as a user? See Using GAIA on Discord.
Prerequisites
- Node.js 18+ and pnpm
- A Discord Developer Account
- GAIA API running (see Self-Hosting Guide)
Step 1: Create a Discord Application
- Go to the Discord Developer Portal
- Click New Application and give it a name
- Navigate to the Bot section and click Add Bot
- Under Privileged Gateway Intents, enable:
- Message Content Intent
- Server Members Intent (optional)
- Copy the Bot Token
Step 2: Configure OAuth2 Scopes
- Go to OAuth2 → URL Generator
- Select scopes:
botandapplications.commands - Select bot permissions: Send Messages, Use Slash Commands, Read Message History
- Copy the generated URL and use it to invite the bot to your server
Step 3: Set Up OAuth for Account Linking
This enables users to link their Discord account from the GAIA web app via OAuth instead of the/auth bot command.
- In your Discord application, go to OAuth2
- Under Redirects, add:
- Copy your Client ID (shown at the top of the OAuth2 page)
- Click Reset Secret to generate a Client Secret and copy it
apps/api/.env:
The Client ID here is the same as your
DISCORD_CLIENT_ID used by the bot,
it’s the application ID, not a separate credential.Step 4: Configure Environment Variables
Create a.env file in apps/bots/discord/:
GAIA_BOT_API_KEY must match the value configured in your GAIA API.
Step 5: Deploy Slash Commands
Register the bot’s slash commands with Discord:Step 6: Start the Bot
Troubleshooting
| Problem | Solution |
|---|---|
| Bot doesn’t respond to commands | Run nx run bot-discord:deploy-commands, check bot permissions |
| Authentication link doesn’t work | Verify GAIA_BOT_API_KEY matches API config |
| Bot offline | Check that the process is running and DISCORD_BOT_TOKEN is valid |

