galactic-bot/structure/interfaces/Command.js

53 lines
1.5 KiB
JavaScript
Raw Normal View History

2020-04-08 18:08:46 +02:00
const Component = require('./Component.js');
class Command extends Component {
constructor(manager, opts = {}) {
2020-04-08 18:08:46 +02:00
if(!opts) return null;
super(manager, {
2020-04-08 18:08:46 +02:00
id: opts.name,
type: 'command',
disabled: opts.disabled || false,
guarded: opts.guarded || false
});
this.manager = manager;
2020-04-08 18:08:46 +02:00
this.name = opts.name;
this.module = opts.module;
this.aliases = opts.aliases || [];
this.description = `C_${opts.name.toUpperCase()}_DESCRIPTION`;
this.usage = opts.usage || '';
this.examples = opts.examples || [];
2020-04-08 18:08:46 +02:00
this.restricted = Boolean(opts.restricted);
this.showUsage = Boolean(opts.showUsage);
2020-04-08 18:08:46 +02:00
this.guildOnly = Boolean(opts.guildOnly);
this.archivable = opts.archivable === undefined ? true : Boolean(opts.archivable);
this.arguments = opts.arguments || [];
this.parameterType = opts.parameterType || 'SPLIT'; //SPLIT or PLAIN, PLAIN = string, SPLIT = split into array, includes quotes
this.grantable = Boolean(opts.grantable);
2020-04-08 18:08:46 +02:00
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}`;
}
2020-04-08 16:27:34 +02:00
}
module.exports = Command;