UNPKG

sheweny

Version:

The powerful framework for create discord bots

102 lines 3.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Event = void 0; const index_js_1 = require("./index.js"); const index_js_2 = require("../helpers/index.js"); /** * Represents an Event structure * @extends {BaseStructure} */ class Event extends index_js_1.BaseStructure { /** * Constructor for build a Event * @param {ShewenyClient} [client] Client framework * @param {string} [name] Name of the event * @param {EventData | undefined} [options] Custom id for one or more buttons */ constructor(client, name, options) { super(client); /** * Description of a event * @type {string} */ Object.defineProperty(this, "description", { enumerable: true, configurable: true, writable: true, value: void 0 }); /** * Set the emitter of the event * @type {EventEmitter} */ Object.defineProperty(this, "emitter", { enumerable: true, configurable: true, writable: true, value: void 0 }); /** * Name of a event * @type {string} */ Object.defineProperty(this, "name", { enumerable: true, configurable: true, writable: true, value: void 0 }); /** * If the listener is deleted after it is executed * @type {boolean} */ Object.defineProperty(this, "once", { enumerable: true, configurable: true, writable: true, value: void 0 }); const defaultData = client.managers.events?.default || {}; this.description = options?.description || ''; this.emitter = (options?.emitter || defaultData.emitter) ?? this.client; this.name = name; this.once = (options?.once || defaultData.once) ?? false; } /** * Register an event * @public * @async * @returns {Promise<Event | ShewenyError>} The loaded event */ async register() { if (!this.path) return new index_js_2.ShewenyError(this.client, 'PATH_NOT_DEFINE', 'Event', this.name); const EventImported = (await Promise.resolve().then(() => __importStar(require(this.path)))).default; const evt = new EventImported(this.client); return evt; } /** * Reload an event * @public * @async * @returns {Promise<Collection<string, Event> | ShewenyError>} The events collection */ async reload() { this.unregister(); return this.register(); } /** * Unregister an event * @public * @returns {boolean} */ unregister() { this.client.collections.events?.delete(this.name); if (!this.path) return false; delete require.cache[require.resolve(this.path)]; return true; } } exports.Event = Event; //# sourceMappingURL=Event.js.map