Build An Interactive Discord Bot

This guide will walk you through setting up and using the Skillful AI Discord bot integration. Our Discord integration allows you to create AI-powered Discord bots that can interact with users, generate images, and leverage all of Skillful AI's capabilities.

Step 1: Prerequisites

Discord Bot Setup

  1. Click "New Application"

  2. Navigate to the "Bot" section

  3. Click "Add Bot"

  4. Enable Privileged Intents:

    • MESSAGE CONTENT INTENT

    • SERVER MEMBERS INTENT

    • PRESENCE INTENT

  5. Copy your bot token

Skillful AI Setup

  1. Reach out for an API key

Step 2: Installation

Using a code editor like Visual Studio Code, we can create a new project with:

# Create new project directory
mkdir my-skillful-bot
cd my-skillful-bot

# Initialize our project
npm init -y

# Install the Discord bot template
npm install @skillfulai/discord-template

Step 3: Basic Setup

Create an index.js script and copy the below into it. The basic setup will disable ProActive Modeby default, but enable everything else you need to interact with your AI Agent.

const SkillfulDiscordBot = require('@skillfulai/discord');

// Initialize bot
const bot = new SkillfulDiscordBot({
    discordToken: 'your_discord_token',
    skillfulApiKey: 'your_skillful_api_key'

    // Optional
    agentName: 'Wojak',          // Your Agent Name
    debug: false,                // Default: false
    proactive: false,            // Default: false
    proactiveThreshold: 50       // Default: 50
});

// Start bot
bot.start()
    .then(() => console.log('Bot started'))
    .catch(console.error);

// Handle shutdown
process.on('SIGINT', async () => {
    await bot.stop();
    process.exit(0);
});

Step 4: Run the Bot

Run your bot to start the application:

node index.js

Basic Usage

You can interact with your agent in a few different ways:

Direct Mentions

The bot responds to direct mentions:

@YourBot Hello there!

Replies

The bot will respond to direct replies.

ProActive Mode

If ProActive Mode has been enabled in the constructor, your bot will dynamically jump into conversations and reply to users.

Debug Mode

Enable debug logging:

const bot = new SkillfulDiscordBot({
    discordToken: 'token',
    skillfulApiKey: 'key',
    debug: true
});

Debug mode shows:

  • Message processing

  • Engagement decisions

  • Error details

  • Connection status

Error Handling

bot.start()
    .then(() => console.log('Bot started'))
    .catch(error => {
        console.error('Startup error:', error);
        process.exit(1);
    });

Best Practices

  1. Environment Variables

    require('dotenv').config();
    
    const bot = new SkillfulDiscordBot({
        discordToken: process.env.DISCORD_TOKEN,
        skillfulApiKey: process.env.SKILLFUL_API_KEY
    });
  2. Proper Shutdown

    process.on('SIGINT', async () => {
        console.log('Shutting down...');
        await bot.stop();
        process.exit(0);
    });
  3. Error Monitoring

    process.on('unhandledRejection', error => {
        console.error('Unhandled promise rejection:', error);
    });

Troubleshooting

Common Issues

  1. Invalid Token

    • Verify token in Discord Developer Portal

    • Check for token format issues

    • Ensure intents are enabled

  2. Connection Issues

    • Check internet connection

    • Verify Discord API status

    • Check for rate limiting

  3. Permission Issues

    • Verify bot has required permissions

    • Check channel permissions

    • Verify intent settings

For more help, join our Discord community.

Last updated