UNPKG

@discommand/message-components

Version:

discommand's message-components handler

163 lines (156 loc) 4.94 kB
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { get: (a, b) => (typeof require !== "undefined" ? require : a)[b] }) : x)(function(x) { if (typeof require !== "undefined") return require.apply(this, arguments); throw new Error('Dynamic require of "' + x + '" is not supported'); }); var __accessCheck = (obj, member, msg) => { if (!member.has(obj)) throw TypeError("Cannot " + msg); }; var __privateGet = (obj, member, getter) => { __accessCheck(obj, member, "read from private field"); return getter ? getter.call(obj) : member.get(obj); }; var __privateAdd = (obj, member, value) => { if (member.has(obj)) throw TypeError("Cannot add the same private member more than once"); member instanceof WeakSet ? member.add(obj) : member.set(obj, value); }; // src/ComponentHandler.ts import { Collection } from "discord.js"; // src/utils/interactionCreate.ts import { Events, InteractionType } from "discord.js"; function interactionCreate(plugin, client) { client.on(Events.InteractionCreate, async (interaction) => { if (interaction.type === InteractionType.MessageComponent) { const module = plugin.modules.get(interaction.customId); if (!module) return; await module.execute(interaction); } }); } // src/ComponentHandler.ts import { ModuleLoader } from "discommand"; var _loader; var ComponentHandler = class { constructor(client, options) { this.client = client; this.options = options; this.modules = new Collection(); __privateAdd(this, _loader, new ModuleLoader()); client.on("ready", () => interactionCreate(this, client)); } load(modules) { modules.forEach((module) => { this.modules.set(module.name, module); console.log(`[discommand-message-component] ${module.name} is loaded.`); }); } deload(options) { options.forEach((option) => { const { module, fileDir } = option; this.modules.delete(module.name); if (fileDir) delete __require.cache[__require.resolve(fileDir)]; console.log(`[discommand-message-component] ${module.name} is deloaded.`); }); } reload(options) { options.forEach((option) => { const { module, fileDir } = option; this.modules.delete(module.name); delete __require.cache[__require.resolve(fileDir)]; this.load([module]); console.log(`[discommand-message-component] ${module.name} is reloaded.`); }); } loadAll() { __privateGet(this, _loader).loadModule(this.options.directory).then((module) => this.load(module)); } reloadAll() { this.reload(__privateGet(this, _loader).reloadModule(this.options.directory)); } deloadAll() { this.deload( __privateGet(this, _loader).deloadModule(this.options.directory) ); } }; _loader = new WeakMap(); // src/error/index.ts var DiscommandError = class extends Error { constructor(message) { super(message); this.name = "DiscommandError"; } }; // src/Component.ts var MessageComponent = class { constructor(name) { this.name = name; if (!name) throw new DiscommandError("name is undefined."); } }; // src/ComponentPlugin.ts import { BasePlugin, ModuleLoader as ModuleLoader2 } from "discommand"; import { Collection as Collection2 } from "discord.js"; var _loader2; var ComponentPlugin = class extends BasePlugin { constructor(options) { super(); this.options = options; this.modules = new Collection2(); __privateAdd(this, _loader2, new ModuleLoader2()); } start(client) { this.loadAll(); interactionCreate(this, client); return super.start(client); } load(modules) { modules.forEach((module) => { this.modules.set(module.name, module); console.log(`[discommand@message-component] ${module.name} is loaded.`); }); } deload(options) { options.forEach((option) => { const { module, fileDir } = option; this.modules.delete(module.name); if (fileDir) delete __require.cache[__require.resolve(fileDir)]; console.log(`[discommand@message-component] ${module.name} is deloaded.`); }); } reload(options) { options.forEach((option) => { const { module, fileDir } = option; this.modules.delete(module.name); delete __require.cache[__require.resolve(fileDir)]; this.load([module]); console.log(`[discommand@message-component] ${module.name} is reloaded.`); }); } loadAll() { __privateGet(this, _loader2).loadModule(this.options.directory).then((module) => this.load(module)); } reloadAll() { this.reload(__privateGet(this, _loader2).reloadModule(this.options.directory)); } deloadAll() { this.deload(__privateGet(this, _loader2).deloadModule(this.options.directory)); } }; _loader2 = new WeakMap(); export { ComponentHandler, ComponentPlugin, MessageComponent };