woomy-v2/bot/events/message.js

47 lines
1.5 KiB
JavaScript
Raw Normal View History

2020-08-18 04:58:36 +00:00
// The MESSAGE event runs anytime a message is received
// Note that due to the binding of client to every event, every event
// goes `client, other, args` when this function is run.
module.exports = class {
constructor (client) {
this.client = client;
}
async run (message) {
if (message.author.bot) return;
let data = new Object();
if (message.content.indexOf(this.client.config.defaultPrefix) !== 0) return;
const args = message.content.slice(this.client.config.defaultPrefix.length).trim().split(/ +/g);
const command = args.shift().toLowerCase();
// Cache uncached members
if (message.guild && !message.member) await message.guild.fetchMember(message.author);
const cmd = this.client.commands.get(command) || this.client.commands.get(this.client.aliases.get(command));
if (!cmd) return;
if (cmd && cmd.conf.devOnly && this.client.util.isDeveloper(message.author.id) !== true) {
return message.channel.send("devs only!");
}
if (cmd && !message.guild && cmd.conf.guildOnly) {
return message.channel.send("This command is unavailable via private message. Please run this command in a guild.");
}
message.flags = [];
while (args[0] &&args[0][0] === "-") {
message.flags.push(args.shift().slice(1));
}
message.util = this.client.messageUtil;
cmd.run(message, args, data);
this.client.logger.cmd(`Command ran: ${message.content}`);
// TODO: Command caching if it"s worth it
}
};