sheweny
Version:
The powerful framework for create discord bots
102 lines • 3.06 kB
JavaScript
;
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