command handler stuff
This commit is contained in:
parent
e0c6eec092
commit
97cd174460
@ -1,3 +1,5 @@
|
|||||||
|
const { MessageEmbed } = require('discord.js');
|
||||||
|
const { Util } = require('../../../utilities');
|
||||||
const { Observer, CommandOption, CommandError } = require('../../interfaces/');
|
const { Observer, CommandOption, CommandError } = require('../../interfaces/');
|
||||||
|
|
||||||
class CommandHandler extends Observer {
|
class CommandHandler extends Observer {
|
||||||
@ -52,10 +54,11 @@ class CommandHandler extends Observer {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const inhibitors = await this._handleInhibitors(interaction);
|
const inhibitors = await this._handleInhibitors(interaction);
|
||||||
if(inhibitors.length) return this._generateError(interaction, { type: 'inhibitor', inhibitors });
|
if(inhibitors.length) return this._generateError(interaction, { type: 'inhibitor', ...inhibitors[0] });
|
||||||
|
|
||||||
const response = await this._parseInteraction(interaction);
|
const response = await this._parseInteraction(interaction);
|
||||||
if (response.error) {
|
if (response.error) {
|
||||||
|
console.log(response);
|
||||||
let content = interaction.format(`O_COMMANDHANDLER_TYPE${response.option.type}`, {
|
let content = interaction.format(`O_COMMANDHANDLER_TYPE${response.option.type}`, {
|
||||||
option: response.option.name, min: response.option.minimum, max: response.option.maximum
|
option: response.option.name, min: response.option.minimum, max: response.option.maximum
|
||||||
});
|
});
|
||||||
@ -67,7 +70,7 @@ class CommandHandler extends Observer {
|
|||||||
ephemeral: true
|
ephemeral: true
|
||||||
});
|
});
|
||||||
} else if (command.showUsage && !Object.keys(response.options).length) {
|
} else if (command.showUsage && !Object.keys(response.options).length) {
|
||||||
return interaction.reply({ embeds: [command.usageEmbed(interaction.guild)] });
|
return interaction.reply({ embeds: [command.usageEmbed(interaction)] });
|
||||||
}
|
}
|
||||||
|
|
||||||
this.logger.info(`${interaction.user.tag} (${interaction.user.id}) is executing ${command.name}`);
|
this.logger.info(`${interaction.user.tag} (${interaction.user.id}) is executing ${command.name}`);
|
||||||
@ -107,7 +110,13 @@ class CommandHandler extends Observer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!response) interaction.reply({ index: 'O_COMMANDHANDLER_COMMAND_NORESPONSE', ephemeral: !interaction.replied });
|
if(response) {
|
||||||
|
if (response instanceof MessageEmbed) return interaction.reply({ embeds: [response] });
|
||||||
|
if (typeof response === 'string') return interaction.reply({ content: response });
|
||||||
|
if (typeof response === 'object') return interaction.reply(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!interaction.replied) return interaction.reply({ index: 'O_COMMANDHANDLER_COMMAND_NORESPONSE', ephemeral: !interaction.replied });
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,21 +192,30 @@ class CommandHandler extends Observer {
|
|||||||
const { guild } = interaction;
|
const { guild } = interaction;
|
||||||
|
|
||||||
const types = {
|
const types = {
|
||||||
// ROLES: (string) => {
|
ROLES: async (string) => {
|
||||||
|
const args = Util.parseQuotes(string).map(([str]) => str);
|
||||||
// },
|
const roles = await guild.resolveRoles(args);
|
||||||
// MEMBERS: (string) => {
|
if (!roles.length) return { error: true };
|
||||||
|
return { value: roles };
|
||||||
// },
|
},
|
||||||
|
MEMBERS: async (string) => {
|
||||||
|
const args = Util.parseQuotes(string).map(([str]) => str);
|
||||||
|
const members = await guild.resolveMembers(args);
|
||||||
|
if (!members.length) return { error: true };
|
||||||
|
return { value: members };
|
||||||
|
},
|
||||||
// USERS: (string) => {
|
// USERS: (string) => {
|
||||||
|
|
||||||
// },
|
// },
|
||||||
// CHANNELS: (string) => {
|
// CHANNELS: (string) => {
|
||||||
|
|
||||||
// },
|
// },
|
||||||
// TEXT_CHANNELS: (string) => {
|
TEXT_CHANNELS: async (string) => {
|
||||||
|
const args = Util.parseQuotes(string).map(([str]) => str);
|
||||||
// },
|
const channels = await guild.resolveChannels(args);
|
||||||
|
if(!channels.length) return { error: true };
|
||||||
|
return { value: channels };
|
||||||
|
},
|
||||||
// VOICE_CHANNELS: (string) => {
|
// VOICE_CHANNELS: (string) => {
|
||||||
|
|
||||||
// },
|
// },
|
||||||
@ -314,7 +332,7 @@ class CommandHandler extends Observer {
|
|||||||
},
|
},
|
||||||
inhibitor: () => {
|
inhibitor: () => {
|
||||||
return {
|
return {
|
||||||
content: `${interaction.format(info.inhibitor.index, { command: interaction.command.resolveable, ...info.args })}**\`${info.inhibitor.resolveable}\`**`,
|
content: `${interaction.format(info.inhibitor.index, { command: interaction.command.resolveable, ...info.args })}\n**\`${info.inhibitor.resolveable}\`**`,
|
||||||
ephemeral: !interaction.replied
|
ephemeral: !interaction.replied
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user