Event Listeners
Event listeners are defined in the src/events/ directory. Each file exports a default EventListener instance and is automatically registered when the bot starts.
Basic example
import { EventListener } from "@djs-core/runtime";import { Events, ActivityType } from "discord.js";
export default new EventListener() .event(Events.ClientReady) .run((client) => { console.log(`Logged in as ${client.user.tag}!`); client.user.setActivity({ name: "over your server", type: ActivityType.Watching }); });Multiple listeners for the same event
You can have several files listening to the same event — each file becomes an independent listener.
import { EventListener } from "@djs-core/runtime";import { Events } from "discord.js";
export default new EventListener() .event(Events.GuildMemberAdd) .run((client, member) => { const channel = member.guild.systemChannel; channel?.send(`Welcome ${member}!`); });import { EventListener } from "@djs-core/runtime";import { Events } from "discord.js";
export default new EventListener() .event(Events.GuildMemberAdd) .run((client, member) => { console.log(`${member.user.tag} joined ${member.guild.name}`); });Common events
| Event | Trigger |
|---|---|
Events.ClientReady |
Bot connected and ready |
Events.MessageCreate |
New message in any channel |
Events.GuildMemberAdd |
User joins a server |
Events.GuildMemberRemove |
User leaves a server |
Events.GuildCreate |
Bot added to a new server |
Events.GuildDelete |
Bot removed from a server |
The .run() callback receives client as its first argument, followed by the discord.js event arguments. TypeScript infers the correct argument types for each event automatically.