Skip to content

The @elizaos/client-discord is a plugin designed to integrate the ElizaOS framework with Discord. This plugin allows developers to create interactive bots that can communicate with users on Discord, leveraging the capabilities of the ElizaOS framework.

Notifications You must be signed in to change notification settings

elizaos-plugins/client-discord

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@elizaos/client-discord

A Discord client implementation for ElizaOS, enabling rich integration with Discord servers for managing interactions, voice, and message handling.

Features

  • Handle server join events and manage initial configurations.
  • Voice event management via the voice manager.
  • Manage and process new messages with the message manager.
  • Slash command registration and interaction handling.
  • Disconnect websocket and unbind all listeners when required.
  • Robust permissions management for bot functionality.

Installation

As this is a workspace package, it's installed as part of the ElizaOS monorepo:

pnpm install

Configuration

The client requires the following environment variables:

# Discord API Credentials
DISCORD_APPLICATION_ID=your_application_id
DISCORD_API_TOKEN=your_api_token

# Optional Settings (add any additional details here if necessary)

Usage

Basic Initialization

import { DiscordClientInterface } from '@elizaos/client-discord';

// Initialize the client
const discordManager = await DiscordClientInterface.start(runtime);

Slash Command Registration

To register slash commands:

await discordManager.command.registerCommands([
  {
    name: 'example',
    description: 'An example slash command',
    options: []
  }
]);

Handling Messages

// Listen for new messages
await discordManager.message.handleNewMessage({
  channelId: 'channel-id',
  content: 'Hello Discord!'
});

Managing Voice Events

// Join a voice channel
await discordManager.voice.joinChannel('channel-id');

// Handle voice interactions
await discordManager.voice.handleInteraction({
  userId: 'user-id',
  action: 'speak'
});

Key Components

  1. ClientBase

    • Handles authentication and session management.
    • Manages websocket connections.
  2. MessageManager

    • Processes incoming messages and responses.
    • Supports message formatting and templating.
  3. VoiceManager

    • Manages voice interactions and events.
    • Handles joining and leaving voice channels.
  4. CommandManager

    • Registers and processes slash commands.
    • Ensures permissions are validated.

Notes

Ensure that your .env file includes the required environment variables for proper functionality. Additional features or modules can be extended as part of the ElizaOS framework.

About

The @elizaos/client-discord is a plugin designed to integrate the ElizaOS framework with Discord. This plugin allows developers to create interactive bots that can communicate with users on Discord, leveraging the capabilities of the ElizaOS framework.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •