For the complete documentation index, see llms.txt. This page is also available as Markdown.

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-await support

🚀 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}`);
        }
    }
};

📡 Event Reference

Discord Events

Listen to Discord.js events with the discord: prefix:

Event
What It Does
Key Data

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

Event
What It Does
Key Data

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

Event
What It Does
Key Data

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

Event
What It Does
Key Data

level:up

User gains XP and levels up

user, newLevel, oldLevel, xpGained, userData

Music Events

Event
What It Does
Key Data

music:trackStart

Track starts playing

track, requestedBy, queue

music:trackAdded

Track added to queue

track, requestedBy, queue

Giveaway Events

Event
What It Does
Key Data

giveaway:created

New giveaway started

giveaway, prize, winnerCount, hostedBy

giveaway:ended

Giveaway finished, winners selected

giveaway, winners, prize, totalEntries

Invite Events

Event
What It Does
Key Data

invite:memberJoined

Member joins via tracked invite

member, inviter, inviterInviteCount

Moderation Events

Event
What It Does
Key Data

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

Event
What It Does
Key Data

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 → run function, no name property

  • New → name required, uses events

  • New 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 handlers

  • run (function) — Init function

Optional (defaults)

  • version → '1.0.0'

  • description → ''

  • author → 'Unknown'

  • priority → 0

  • permissions → []

  • dependencies → []

Minimal Working Addon

💡 Practical Examples

Staff Notification System

Level Rewards System

Warning Logger

Last updated