djsbotbase-test
Version:
Discord.js tabanlı komut ve etkinlik sistemlerine sahip bir bot temeli
91 lines (90 loc) • 3.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Command = void 0;
const logger_1 = require("../helpers/logger");
class Command {
constructor(data) {
Object.defineProperty(this, "data", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
this.validateConstructorData(data);
this.data = data;
}
validateConstructorData(data) {
this.validateName(data);
this.validateAliases(data);
this.validateBooleanOptions(data);
this.validateCooldown(data);
this.validateRunner(data);
}
validateName(data) {
if (!("name" in data) || typeof data.name !== "string" || !data.name.trim()) {
(0, logger_1.error)("Command name must be a non-empty string.");
}
}
validateAliases(data) {
if ("aliases" in data && data.aliases !== undefined) {
if (!Array.isArray(data.aliases)) {
(0, logger_1.error)("Command aliases must be an array of strings.");
}
const invalidAlias = data.aliases.find((alias) => typeof alias !== "string" || !String(alias).trim());
if (invalidAlias !== undefined) {
(0, logger_1.error)("All command aliases must be non-empty strings.");
}
}
}
validateBooleanOptions(data) {
const booleanFields = ["guildOnly", "dmOnly", "developerOnly", "maintenance"];
for (const field of booleanFields) {
if (field in data && data[field] !== undefined && typeof data[field] !== "boolean") {
(0, logger_1.error)(`Command '${field}' option must be a boolean.`);
}
}
if (data.guildOnly === true && data.dmOnly === true) {
(0, logger_1.logWarn)("Command set to both guild and DM only. This configuration has no effect - command can work everywhere.");
}
if (data.guildOnly === false && data.dmOnly === false) {
(0, logger_1.logWarn)("Command explicitly set to both not guild-only and not DM-only. This is redundant - command can work everywhere.");
}
}
validateCooldown(data) {
if ("cooldown" in data && data.cooldown !== undefined) {
if (typeof data.cooldown !== "number" || !Number.isFinite(data.cooldown) || data.cooldown <= 0) {
(0, logger_1.error)("Command cooldown must be a positive finite number.");
}
}
}
validateRunner(data) {
if (!("run" in data) || typeof data.run !== "function") {
(0, logger_1.error)("Command runner must be a function.");
}
}
get name() {
return this.data.name;
}
get aliases() {
return Object.freeze(this.data.aliases ?? []);
}
get guildOnly() {
return this.data.guildOnly ?? true;
}
get dmOnly() {
return this.data.dmOnly ?? true;
}
get developerOnly() {
return this.data.developerOnly ?? false;
}
get maintenance() {
return this.data.maintenance ?? false;
}
get cooldown() {
return this.data.cooldown ?? -1;
}
get run() {
return this.data.run;
}
}
exports.Command = Command;