const Component = require('./Component.js'); class Command extends Component { constructor(manager, opts = {}) { if(!opts) return null; super(manager, { id: opts.name, type: 'command', disabled: opts.disabled || false, guarded: opts.guarded || false }); this.manager = manager; this.name = opts.name; this.module = opts.module; this.aliases = opts.aliases || []; this.description = `C_${opts.name}_DESCRIPTION`; this.examples = `C_${opts.name}_EXAMPLES`; this.usage = `C_${opts.name}_USAGE`; this.restricted = Boolean(opts.restricted); this.archivable = opts.archivable === undefined ? false : Boolean(opts.archivable); this.guildOnly = Boolean(opts.guildOnly); this.arguments = opts.arguments || []; this.showUsage = Boolean(opts.showUsage); this.clientPermissions = opts.clientPermissions || []; this.memberPermissions = opts.memberPermissions || []; this.throttling = opts.throttling || { usages: 5, duration: 10 }; this._throttles = new Map(); } get moduleResolveable() { return `${this.module.id}:${this.id}`; } } module.exports = Command;