UNPKG

djsbotbase-test

Version:

Discord.js tabanlı komut ve etkinlik sistemlerine sahip bir bot temeli

91 lines (90 loc) 3.29 kB
"use strict"; 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;