@discommand/message-components
Version:
discommand's message-components handler
163 lines (156 loc) • 4.94 kB
JavaScript
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
};