diff --git a/events/message.js b/events/message.js index 42de5e0..53d1fc5 100644 --- a/events/message.js +++ b/events/message.js @@ -1,10 +1,7 @@ - -const Discord = require('discord.js') -const cooldown = new Discord.Collection() module.exports = async (client, message) => { if (message.author.bot) return - var prefix = '~' + var prefix = '!' const myMention = `<@&${client.user.id}>` const myMention2 = `<@!${client.user.id}>` @@ -37,6 +34,14 @@ module.exports = async (client, message) => { return message.channel.send('You don\'t have permission to run this command!') } + const delay = () => { + setTimeout(() => { + client.cooldown.get(cmd).delete(message.author.id); + message.channel.send(`${message.member} cooldown has expired for ${command} command.`) + }, commands.get(command) * 1000); +} + + message.author.permLevel = level message.flags = [] diff --git a/events/ready.js b/events/ready.js index 02d66b7..3ab2ca2 100644 --- a/events/ready.js +++ b/events/ready.js @@ -1,3 +1,4 @@ module.exports = (client) => { client.logger.ready('Connected to Discord as ' + client.user.tag) + client.logger.debug(client.cooldown) } diff --git a/index.js b/index.js index 93daa0d..c3b56cd 100644 --- a/index.js +++ b/index.js @@ -17,7 +17,11 @@ require('./modules/functions')(client) client.logger = require('tracer').colorConsole({ format: [ - '{{timestamp}} <{{title}}> ({{file}}) {{message}}' + '{{timestamp}} <{{title}}> {{message}}', + { + error: '{{timestamp}} <{{title}}> ({{file}}) {{message}}', + fatal: '{{timestamp}} <{{title}}> ({{file}}) {{message}}' + } ], dateformat: 'dd-mm-yyyy HH:MM:ss', methods: ['log', 'debug', 'info', 'ready', 'warn', 'error', 'fatal'], @@ -47,6 +51,7 @@ client.config = require('./config') // Command/alias cache client.commands = new Discord.Collection() +client.cooldown = new Discord.Collection() client.aliases = new Discord.Collection() // Initialization function diff --git a/modules/functions.js b/modules/functions.js index bf10964..6c3e61c 100644 --- a/modules/functions.js +++ b/modules/functions.js @@ -1,4 +1,21 @@ module.exports = client => { + + client.permlevel = message => { + let permlvl = 0 + + const permOrder = client.config.permLevels.slice(0).sort((p, c) => p.level < c.level ? 1 : -1) + + while (permOrder.length) { + const currentLevel = permOrder.shift() + if (message.guild && currentLevel.guildOnly) continue + if (currentLevel.check(message)) { + permlvl = currentLevel.level + break + } + } + return permlvl + } + client.loadCommand = (commandName) => { try { const props = require(`../commands/${commandName}`) @@ -6,6 +23,8 @@ module.exports = client => { props.init(client) } client.commands.set(props.help.name, props) + // So commands can each have their own cooldown time + client.cooldown.set(props.help.name, new Map()) props.conf.aliases.forEach(alias => { client.aliases.set(alias, props.help.name) })