bdjs
Version:
A potent package for creating Discord bots.
124 lines (123 loc) • 4.12 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.EventManager = void 0;
const Bot_1 = require("../structures/Bot");
const Event_1 = require("../structures/Event");
const promises_1 = require("fs/promises");
const BDJSLog_1 = require("../util/BDJSLog");
const path_1 = require("path");
class EventManager extends Map {
/**
* Load events from a directory.
* @param bot - BDJS client.
*/
async loadNatives(bot) {
const root = __dirname.replace('managers', 'events');
const files = await (0, promises_1.readdir)(root);
for (const file of files) {
if (file.endsWith('.js')) {
if (file === 'error.js' || file === 'ready.js')
continue;
const event = require((0, path_1.join)(root, file)).default;
if (event instanceof Event_1.BaseEvent
&&
bot.extraOptions.events.includes(event.name)) {
bot[event.once === true ? 'once' : 'on']((0, Bot_1.reformulateEvents)([event.name], 'DJS').join(''), async (...args) => {
await event.listener(bot, ...args);
});
delete require.cache[(0, path_1.join)(root, file)];
if (bot.extraOptions.debug === true)
BDJSLog_1.BDJSLog.debug(`"${event.name}" is being listened.`);
}
}
}
}
/**
* Return all RAW string event names.
*/
get names() {
return [
'applicationCommandPermissionsUpdate',
'autoModerationActionExecution',
'autoModerationRuleCreate',
'autoModerationRuleDelete',
'autoModerationRuleUpdate',
'cacheSweep',
'channelCreate',
'channelDelete',
'channelPinsUpdate',
'channelUpdate',
'debug',
'warn',
'emojiCreate',
'emojiDelete',
'emojiUpdate',
'error',
'guildAuditLogEntryCreate',
'guildAvailable',
'guildBanAdd',
'guildBanRemove',
'guildCreate',
'guildDelete',
'guildUnavailable',
'guildIntegrationsUpdate',
'guildMemberAdd',
'guildMemberAvailable',
'guildMemberRemove',
'guildMembersChunk',
'guildMemberUpdate',
'guildUpdate',
'inviteCreate',
'inviteDelete',
'messageCreate',
'messageDelete',
'messageReactionRemoveAll',
'messageReactionRemoveEmoji',
'messageDeleteBulk',
'messageReactionAdd',
'messageReactionRemove',
'messageUpdate',
'presenceUpdate',
'ready',
'invalidated',
'roleCreate',
'roleDelete',
'roleUpdate',
'threadCreate',
'threadDelete',
'threadListSync',
'threadMemberUpdate',
'threadMembersUpdate',
'threadUpdate',
'typingStart',
'userUpdate',
'voiceStateUpdate',
'webhookUpdate',
'webhooksUpdate',
'interactionCreate',
'shardDisconnect',
'shardError',
'shardReady',
'shardReconnecting',
'shardResume',
'stageInstanceCreate',
'stageInstanceUpdate',
'stageInstanceDelete',
'stickerCreate',
'stickerDelete',
'stickerUpdate',
'guildScheduledEventCreate',
'guildScheduledEventUpdate',
'guildScheduledEventDelete',
'guildScheduledEventUserAdd',
'guildScheduledEventUserRemove'
];
}
/**
* Return BDJS event names as string.
*/
get reformulatedNames() {
return (0, Bot_1.reformulateEvents)(this.names, 'BDJS');
}
}
exports.EventManager = EventManager;