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.