A Discord client implementation for ElizaOS, enabling rich integration with Discord servers for managing interactions, voice, and message handling.
- 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.
As this is a workspace package, it's installed as part of the ElizaOS monorepo:
pnpm install
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)
import { DiscordClientInterface } from '@elizaos/client-discord';
// Initialize the client
const discordManager = await DiscordClientInterface.start(runtime);
To register slash commands:
await discordManager.command.registerCommands([
{
name: 'example',
description: 'An example slash command',
options: []
}
]);
// Listen for new messages
await discordManager.message.handleNewMessage({
channelId: 'channel-id',
content: 'Hello Discord!'
});
// Join a voice channel
await discordManager.voice.joinChannel('channel-id');
// Handle voice interactions
await discordManager.voice.handleInteraction({
userId: 'user-id',
action: 'speak'
});
-
ClientBase
- Handles authentication and session management.
- Manages websocket connections.
-
MessageManager
- Processes incoming messages and responses.
- Supports message formatting and templating.
-
VoiceManager
- Manages voice interactions and events.
- Handles joining and leaving voice channels.
-
CommandManager
- Registers and processes slash commands.
- Ensures permissions are validated.
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.