# Creating Events
Discord.js and Klasa contain a large number of events that can trigger under certain situations. You can listen to those events and run a function every time they are emitted in a bot.
# Your first Event
To create an event:
- Head to your addon folder and create a new folder called
events. - Inside the events folder, create a new file called
welcome.js.
Once you are done, the structure should look like this:
.
└── my-first-addon
├── events
│ └── welcome.js
├── index.js
└── package.json
- Open
welcome.jsand type in this code:
const { Event } = require("@botbind/klasa");
module.exports = class extends Event {
constructor(...args) {
super(...args, {
event: "GuildMemberAdd"
});
}
run(member) {
member.send("hello!");
}
};
Here we are importing the Event class and exporting a new Event. In this example, we are listening for GuildMemberAdd. That means whenever a new member joins the server, this will send them a DM.
# Event Options
Here all the options at once, you only have to add whichever ones you need to change:
const { Event } = require("@botbind/klasa");
module.exports = class extends Event {
constructor(...args) {
super(...args, {
name: "yourEventName",
event: "theEventToListenTo",
emitter: this.client,
enabled: true,
once: false
});
}
run(...params) {
return;
}
};
# Event Types
| Event Name | Description | Parameter returned |
|---|---|---|
| channelCreate | Emitted whenever a channel is created. | channel |
| channelDelete | Emitted whenever a channel is deleted. | channel |
| channelPinsUpdate | Emitted whenever the pins of a channel are updated. | channel, time |
| channelUpdate | Emitted whenever a channel is updated - e.g. name change, topic change. | oldChannel, newChannel |
| clientUserGuildSettingsUpdate | Emitted whenever the client user's settings update. | clientUserGuildSettings |
| clientUserSettingsUpdate | Emitted when the client user's settings update. | clientUserSettings |
| debug | Emitted for general debugging information. | info |
| disconnect | Emitted when the client's WebSocket disconnects and will no longer attempt to reconnect. | event |
| emojiCreate | Emitted whenever a custom emoji is created in a guild. | emoji |
| emojiDelete | Emitted whenever a custom guild emoji is deleted. | emoji |
| emojiUpdate | Emitted whenever a custom guild emoji is updated. | oldEmoji, newEmoji |
| error | Emitted whenever the client's WebSocket encounters a connection error. | error |
| guildBanAdd | Emitted whenever a member is banned from a guild. | guild, user |
| guildBanRemove | Emitted whenever a member is unbanned from a guild. | guild, user |
| guildCreate | Emitted whenever the client joins a guild. | guild |
| guildDelete | Emitted whenever a guild is deleted/left. | guild |
| guildIntegrationsUpdate | Emitted whenever a guild integration is updated | guild |
| guildMemberAdd | Emitted whenever a user joins a guild. | member |
| guildMemberAvailable | Emitted whenever a member becomes available in a large guild. | member |
| guildMemberRemove | Emitted whenever a member leaves a guild, or is kicked. | member |
| guildMembersChunk | Emitted whenever a chunk of guild members is received (all members come from the same guild). | members, guild |
| guildMemberSpeaking | Emitted once a guild member starts/stops speaking. | member, speaking |
| guildMemberUpdate | Emitted whenever a guild member changes - i.e. new role, removed role, nickname. | oldMember, newMember |
| guildUnavailable | Emitted whenever a guild becomes unavailable, likely due to a server outage. | guild |
| guildUpdate | Emitted whenever a guild is updated - e.g. name change. | oldGuild, newGuild |
| message | Emitted whenever a message is created. | message |
| messageDelete | Emitted whenever a message is deleted. | message |
| messageDeleteBulk | Emitted whenever messages are deleted in bulk. | messages |
| messageReactionAdd | Emitted whenever a reaction is added to a cached message. | messageReaction, user |
| messageReactionRemove | Emitted whenever a reaction is removed from a cached message. | messageReaction, user |
| messageReactionRemoveAll | Emitted whenever all reactions are removed from a cached message. | message |
| messageUpdate | Emitted whenever a message is updated - e.g. embed or content change. | oldMessage, newMessage |
| presenceUpdate | Emitted whenever a guild member's presence changes, or they change one of their details. | oldMember, newMember |
| rateLimit | Emitted when the client hits a rate limit while making a request | rateLimitInfo |
| ready | Emitted when the client becomes ready to start working. | |
| reconnecting | Emitted whenever the client tries to reconnect to the WebSocket. | |
| resume | Emitted whenever a WebSocket resumes. | replayed |
| roleCreate | Emitted whenever a role is created. | role |
| roleDelete | Emitted whenever a guild role is deleted. | role |
| roleUpdate | Emitted whenever a guild role is updated. | oldRole, newRole |
| typingStart | Emitted whenever a user starts typing in a channel. | channel, user |
| typingStop | Emitted whenever a user stops typing in a channel. | channel, user |
| userNoteUpdate | Emitted whenever a note is updated. | user, oldNote, newNote |
| userUpdate | Emitted whenever a user's details (e.g. username) are changed. | oldUser, newUser |
| voiceStateUpdate | Emitted whenever a user changes voice state - e.g. joins/leaves a channel, mutes/un-mutes. | oldMember, newMember |
| warn | Emitted for general warnings. | info |
| webhookUpdate | Emitted whenever a guild text channel has its web hooks changed. | channel |