command handler
This commit is contained in:
parent
241fb4616a
commit
ffef8ce3da
@ -18,6 +18,8 @@ class CommandHandler extends Observer {
|
||||
['interactionCreate', this.interactionCreate.bind(this)]
|
||||
];
|
||||
|
||||
this._mentionPattern = null;
|
||||
|
||||
}
|
||||
|
||||
async messageCreate(message) {
|
||||
@ -31,16 +33,19 @@ class CommandHandler extends Observer {
|
||||
if(!message.member) await message.guild.members.fetch(message.author.id);
|
||||
}
|
||||
|
||||
const { command, parameters } = await this._getCommand(message);
|
||||
const messageWrapper = new MessageWrapper(this.client, message);
|
||||
|
||||
const { command, parameters } = await this._getCommand(messageWrapper);
|
||||
if (!command) return undefined;
|
||||
|
||||
const invoker = new InvokerWrapper(this.client, new MessageWrapper(this.client, message), command);
|
||||
const inhibitors = this._handleInhibitors(invoker);
|
||||
const invoker = new InvokerWrapper(this.client, messageWrapper, command);
|
||||
const inhibitors = await this._handleInhibitors(invoker);
|
||||
if (inhibitors.length) return this._generateError(invoker, { type: 'inhibitor', ...inhibitors[0] });
|
||||
|
||||
// const arguments = await this._parseArguments(invoker, parameters);
|
||||
const options = await this._parseMessage(invoker, parameters);
|
||||
|
||||
this._executeCommand(invoker, {});
|
||||
// Temp setup
|
||||
//this._executeCommand(invoker, parameters);
|
||||
|
||||
}
|
||||
|
||||
@ -130,9 +135,6 @@ class CommandHandler extends Observer {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {InteractionWrapper} interaction
|
||||
*/
|
||||
async _parseInteraction(interaction, command) {
|
||||
|
||||
const { subcommand } = interaction;
|
||||
@ -196,6 +198,13 @@ class CommandHandler extends Observer {
|
||||
|
||||
}
|
||||
|
||||
async _parseMessage(invoker, params) {
|
||||
|
||||
const { options } = invoker.command;
|
||||
console.log(options);
|
||||
|
||||
}
|
||||
|
||||
async _parseOption(interaction, option) {
|
||||
const { guild } = interaction;
|
||||
|
||||
@ -304,19 +313,30 @@ class CommandHandler extends Observer {
|
||||
}
|
||||
|
||||
async _getCommand(message) {
|
||||
|
||||
if (!this._mentionPattern) this._mentionPattern = new RegExp(`^(<@!?${this.client.user.id}>)`, 'iu');
|
||||
const [arg1, arg2, ...args] = message.content.split(' ');
|
||||
|
||||
//TODO: Move this somewhere else. RegExp should not be created every method call, but it requires the client user to be loaded.
|
||||
const mentionPattern = new RegExp(`^(<@!?${this.client.user.id}>)`, 'iu');
|
||||
if (message.guild) await message.guild.settings();
|
||||
const userWrapper = await this.client.getUserWrapper(message.author.id);
|
||||
await userWrapper.settings();
|
||||
const { prefix } = message;
|
||||
|
||||
let command = null,
|
||||
parameters = [];
|
||||
if(mentionPattern.test(message.content)) {
|
||||
const [ , commandName, ...rest] = message.content.split(" ");
|
||||
command = this._matchCommand(commandName);
|
||||
parameters = rest.join(" ");
|
||||
remains = [];
|
||||
if (arg1 && arg1.startsWith(prefix)) {
|
||||
const commandName = arg1.slice(prefix.length); //Grabs the command name by slicing off the prefix.
|
||||
command = await this._matchCommand(commandName);
|
||||
remains = [arg2, ...args];
|
||||
message._caller = commandName;
|
||||
} else if (arg1 && arg2 && arg1.startsWith('<@')) { //Checks if the first argument is a mention and if a command is after it.
|
||||
if (arg2 && this._mentionPattern.test(arg1))
|
||||
command = await this._matchCommand(arg2);
|
||||
remains = args;
|
||||
message._caller = arg2;
|
||||
}
|
||||
|
||||
return { command, parameters };
|
||||
return { command, parameters: remains };
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user