Discord
Event Flow
This document provides a comprehensive breakdown of how events flow through the Discord plugin system.
Discord Plugin Event Flow - Detailed Breakdown
This document provides a comprehensive breakdown of how events flow through the Discord plugin system.
Complete Event Flow Diagram
Detailed Event Flows
1. Message Processing Flow
2. Voice Channel Flow
3. Slash Command Flow
4. Attachment Processing Flow
5. Multi-Server Event Flow
Event Type Reference
Discord.js Events
Event | Description | Plugin Handler |
---|---|---|
ready | Client is ready | Initialize services |
messageCreate | New message | MessageManager |
messageUpdate | Message edited | MessageManager |
messageDelete | Message deleted | Cleanup handler |
interactionCreate | Slash command/button | Interaction router |
guildCreate | Bot joins server | Server initializer |
guildDelete | Bot leaves server | Cleanup handler |
guildMemberAdd | Member joins | Relationship manager |
voiceStateUpdate | Voice state change | VoiceManager |
error | Client error | Error handler |
disconnect | Lost connection | Reconnection handler |
ElizaOS Events Emitted
Event | When Emitted | Payload |
---|---|---|
WORLD_JOINED | Bot joins server | World, rooms, entities |
MESSAGE_RECEIVED | Message processed | ElizaOS message format |
VOICE_MESSAGE_RECEIVED | Voice transcribed | Transcribed message |
REACTION_RECEIVED | Reaction added | Reaction details |
INTERACTION_RECEIVED | Slash command used | Interaction data |
State Management
Message Context
Voice Context
Error Handling in Event Flow
Error Propagation
Performance Considerations
Event Batching
For high-volume servers, events are batched:
Connection Pooling
Voice connections are pooled to reduce overhead:
Monitoring Event Flow
Event Metrics
Track event processing metrics:
Best Practices
-
Event Debouncing
- Debounce rapid events (typing indicators, voice state)
- Batch similar events when possible
-
Error Isolation
- Don’t let one event error affect others
- Use try-catch at event handler level
-
Resource Management
- Clean up event listeners on disconnect
- Limit concurrent event processing
-
Monitoring
- Track event processing times
- Monitor error rates by event type
- Alert on unusual patterns