Guide
Events
Listen to Discord events with GlyriaEvent.
Overview
Events in glyria.js are file-based, just like commands. Every file in src/events/ is automatically loaded at startup.
Each event file exports a GlyriaEvent instance as default:
// src/events/ready.ts
export default new GlyriaEvent()
.setEvent(Events.ClientReady)
.once()
.setHandler((client) => {
console.log(`✅ Logged in as ${client.user.tag}`)
})
GlyriaEvent and Events are available globally — no import needed.Listening once
Use .once() to listen to an event only the first time it fires — useful for the ClientReady event:
export default new GlyriaEvent()
.setEvent(Events.ClientReady)
.once()
.setHandler((client) => {
console.log(`✅ ${client.user.tag} is online`)
})
Without .once(), the handler fires every time the event is emitted.
Message events
// src/events/messageCreate.ts
export default new GlyriaEvent()
.setEvent(Events.MessageCreate)
.setHandler(async (message) => {
if (message.author.bot) return
if (message.content.startsWith("!ping")) {
await message.reply("Pong!")
}
})
Available events
GlyriaEvent accepts any event from discord.js's Events enum. Common ones:
| Event | Description |
|---|---|
Events.ClientReady | Bot is online and ready |
Events.MessageCreate | A message is sent |
Events.GuildMemberAdd | A member joins a server |
Events.GuildMemberRemove | A member leaves a server |
Events.GuildBanAdd | A member is banned |
Events.InteractionCreate | Any interaction is received |
For the full list, refer to the discord.js Events documentation.
Organizing files
Like commands, subfolders in src/events/ are for organization only:
src/events/
ready.ts
guild/
memberAdd.ts
memberRemove.ts
messages/
messageCreate.ts
Keep one
GlyriaEvent per file for clarity and maintainability.
