Event API
Integrate your addons into core bot logic, unlocking a new level of power.
✨ Features
Event-driven architecture — React to Discord and bot events
Backward compatibility — Legacy addons still work
Priority system — Control execution order of handlers
Error isolation — One addon's error won't crash others
Rich context — Access client, config, and language data
Async support — Full
Promise/async-awaitsupport
🚀 Quick Start
Example: HelloWorld Addon
A simple addon that responds to messages, welcomes new members, and reacts to tickets being created:
module.exports = {
// Give your addon a unique name
name: 'HelloWorld',
// Optional metadata
// version: '1.0.0'
// description: '...'
// author: 'Your Name'
events: {
// Respond to messages
'discord:messageCreate': async (eventData, context) => {
const { message } = eventData;
if (message.author.bot) return;
if (message.content.toLowerCase() === '!hello') {
await message.channel.send(`Hello ${message.author.username}! 👋`);
}
},
// Welcome new members
'discord:guildMemberAdd': async (eventData, context) => {
const { member } = eventData;
console.log(`New member joined: ${member.user.username}`);
const channel = member.guild.channels.cache.find(
ch => ch.name === 'welcome' || ch.name === 'general'
);
if (channel) {
await channel.send(`Welcome ${member.user.username}! 🎉`);
}
},
// React to tickets being created
'ticket:created': async (eventData, context) => {
const { ticket, user } = eventData;
console.log(`Ticket #${ticket.ticketId} was created by ${user.username}`);
}
}
};With this addon:
Type
!hello→ Bot replies with a greetingNew members join → Welcome message in #welcome or #general
Ticket is created → Logged in console
📡 Event Reference
Discord Events
Listen to Discord.js events with the discord: prefix:
discord:messageCreate
New message sent
message
discord:messageUpdate
Message edited
message, oldMessage
discord:messageDelete
Message deleted
message
discord:guildMemberAdd
User joins server
member
discord:guildMemberRemove
User leaves server
member
discord:guildMemberUpdate
User roles/nickname changed
oldMember, newMember
discord:voiceStateUpdate
Voice channel changes
oldState, newState
discord:channelCreate
Channel created
channel
discord:channelDelete
Channel deleted
channel
discord:roleCreate
Role created
role
discord:roleDelete
Role deleted
role
discord:guildBanAdd
User banned
ban
discord:guildBanRemove
User unbanned
ban
discord:interactionCreate
Slash command/button used
interaction
discord:ready
Bot started
client
Bot Business Logic Events
Ticket Events
ticket:created
New ticket opened
ticket, user, ticketType, questions
ticket:closed
Ticket closed/resolved
ticket, closedBy, closeReason, isAutoAlert
ticket:deleted
Ticket channel deleted
ticket, guild, user
ticket:claimed
Staff member claims ticket
ticket, claimer
ticket:unclaimed
Staff member unclaims ticket
ticket, unclaimer
ticket:reviewed
User reviews service
ticket, rating, feedback, reviewer
Suggestion Events
suggestion:created
New suggestion submitted
suggestion, author, text, message
suggestion:accepted
Suggestion approved by staff
suggestion, acceptedBy, reason, originalAuthor
suggestion:denied
Suggestion rejected by staff
suggestion, deniedBy, reason, originalAuthor
Leveling Events
level:up
User gains XP and levels up
user, newLevel, oldLevel, xpGained, userData
Music Events
music:trackStart
Track starts playing
track, requestedBy, queue
music:trackAdded
Track added to queue
track, requestedBy, queue
Giveaway Events
giveaway:created
New giveaway started
giveaway, prize, winnerCount, hostedBy
giveaway:ended
Giveaway finished, winners selected
giveaway, winners, prize, totalEntries
Invite Events
invite:memberJoined
Member joins via tracked invite
member, inviter, inviterInviteCount
Moderation Events
moderation:ban
User banned
target, moderator, reason, guild, case
moderation:unban
User unbanned
target, moderator, reason, guild, case
moderation:kick
Member kicked
target, moderator, reason, guild, case
moderation:warn
Warning issued
target, moderator, reason, guild, warning
moderation:unwarn
Warning removed
target, moderator, guild, warningId
moderation:timeout
Timeout applied
target, moderator, durationMs, guild, endTime
moderation:timeout_clear
Timeout removed
target, moderator, guild, case
moderation:tempban
Temporary ban applied
target, moderator, reason, guild, sanction
Addon Lifecycle Events
addon:loaded
Addon loaded successfully
name, path, type
addon:unloaded
Addon unloaded
name, path
addon:registered
Addon registered with event system
name, events
🔧 Custom Events
Emit and listen for your own events:
🧰 Context Object
Every handler receives:
⚙️ Advanced Features
Priority System
Control execution order:
Error Handling
Addons run independently:
Database Integration
Use Mongoose inside addons:
Conditional Event Handling
Run logic only in certain channels/users:
🔄 Migration from Legacy Addons
Key Differences
Legacy →
runfunction, nonamepropertyNew →
namerequired, useseventsNew format benefits: event-driven API, enable/disable, error isolation, priorities
📋 Requirements Summary
Absolutely Required
name(string) — Unique addon identifier
Required (pick one)
events(object) — Event handlersrun(function) — Init function
Optional (defaults)
version→'1.0.0'description→''author→'Unknown'priority→0permissions→[]dependencies→[]
Minimal Working Addon
💡 Practical Examples
Staff Notification System
Level Rewards System
Warning Logger
Last updated