diff --git a/changelog.txt b/changelog.txt index 865f355..59c5536 100644 --- a/changelog.txt +++ b/changelog.txt @@ -4,4 +4,10 @@ Woomy 2.0: - Logger now logs which file a log came from - Functions file has been separated into multiple helpers - Added systemNotice feature, stops Woomy from outputting permission errors and stuff -- New ping command \ No newline at end of file +- New ping command +- help command overhauled +- added `pride` command +- eval now dm's errors to the user who ran the command +- ship command overhauled +- added volume command +- usage errors are now shown in an embed \ No newline at end of file diff --git a/commands/emoji.js b/commands/emoji.js index b42bc56..1bdf275 100644 --- a/commands/emoji.js +++ b/commands/emoji.js @@ -1,44 +1,41 @@ exports.conf = { - enabled: true, - guildOnly: false, - aliases: [], - permLevel: 'User', - requiredPerms: [] - }; - + enabled: true, + guildOnly: false, + aliases: ['enlarge'], + permLevel: 'User', + requiredPerms: [] +} + exports.help = { - name: 'emoji', - category: 'Utility', - description: 'Enlarges and links an custom emoji', - usage: 'emoji [emoji]', - params: '`[emoji] - Custom emoji you want to enlarge.' -}; + name: 'emoji', + category: 'Utility', + description: 'Enlarges a custom emoji.', + usage: 'emoji [emoji]', + parameters: '`[emoji] - Custom emoji you want to enlarge' +} exports.run = async (client, message, args) => { - if(!args[0]) { - return message.channel.send(`You need to specify a custom emoji. Usage: \`${client.commands.get(`emoji`).help.usage}\``) - }; - - var ID; - var format = '.png' - var string = args[0].replace(/\D/g,''); - - if(args[0].charAt(1) == 'a' && args[0].charAt(2) == ':') { - format = '.gif' - }; - - if(string.length > 18) { - ID = string.slice(string.length - 18); - } else { - ID = string; - }; - - if(!ID) { - return message.channel.send(`<:error:466995152976871434> Invalid emoji. This command only works with custom emojis.`) - }; - - - - message.channel.send('https://cdn.discordapp.com/emojis/' + ID + format) -}; - \ No newline at end of file + if (!args[0]) { + return message.channel.send(client.userError(exports, 'Missing argument, the `emoji` argument is required!')) + }; + + var ID + var format = '.png' + var string = args[0].replace(/\D/g, '') + + if (args[0].charAt(1) === 'a' && args[0].charAt(2) === ':') { + format = '.gif' + }; + + if (string.length > 18) { + ID = string.slice(string.length - 18) + } else { + ID = string + }; + + if (!ID) { + return message.channel.send('<:error:466995152976871434> This command only works with custom emojis, sorry ;~;') + } + + message.channel.send('https://cdn.discordapp.com/emojis/' + ID + format) +} diff --git a/commands/eval.js b/commands/eval.js index e7f6684..3fa78c5 100644 --- a/commands/eval.js +++ b/commands/eval.js @@ -10,10 +10,10 @@ exports.conf = { exports.help = { name: 'eval', - category: 'Owner', + category: 'Developer', description: 'Evaluates arbitrary javascript.', usage: 'eval [code]', - params: '`[code] - Javascript code you want to execute.' + parameters: '`[code] - Javascript code you want to execute.' } exports.run = async (client, message, args, level, data) => { diff --git a/commands/help.js b/commands/help.js index 0231028..b317d7d 100644 --- a/commands/help.js +++ b/commands/help.js @@ -11,7 +11,7 @@ exports.help = { name: 'help', category: 'Bot', description: 'Lists all commands Woomy has, what they do, and how to use them.', - usage: '`help` - Lists all commands.\n`help ` - Show detailed information on how to use the specified command.', + usage: '`help` - Shows the embed that provides info on how to use woomy. `help all` - Lists all commands.\n`help ` - Show detailed information on how to use the specified command.', parameters: '`command` - The name of the command you want more information on.' } @@ -20,8 +20,19 @@ exports.run = (client, message, args, level, data) => { const embed = new Discord.MessageEmbed() embed.setColor(client.embedColour(message.guild)) + const commands = client.commands + const categories = [] + + commands.forEach((cmd) => { + if (!categories.includes(cmd.help.category)) { + if (cmd.help.category === 'Developer' && !client.config.devs.includes('message.author.id')) { + return + } + categories.push(cmd.help.category) + } + }) + if (!args[0]) { - const categories = [] let uPrefix = '`' + data.user.prefix + '`' let gPrefix = '`' + data.guild.prefix + '`' @@ -33,32 +44,31 @@ exports.run = (client, message, args, level, data) => { gPrefix = 'None set, use: `~prefix`' } - embed.setTitle('Woomy Help') - embed.setDescription(`**Prefixes**\n» Default: \`${client.config.defaultPrefix}\`\n» Server: ${gPrefix}\n» Personal: ${uPrefix}\n\n» [Join my discord server](https://discord.gg/HCF8mdv) if you need help!\n» Use \`help \` to recieve more information about a command!`) - const commands = client.commands - - commands.forEach((cmd) => { - if (!categories.includes(cmd.help.category)) { - if (cmd.help.category === 'Developer' && !client.config.devs.includes('message.author.id')) { - return - } - categories.push(cmd.help.category) - } - }) + embed.setTitle('Help & Commands') + embed.setDescription('') + if (client.version.news.length > 0) { + embed.addField('**News**', client.version.news) + } + embed.addField('**Prefixes**', `Default Prefix: \`${client.config.defaultPrefix}\`\nServer Prefix: ${gPrefix}\nUser Prefix: ${uPrefix}`) + embed.addField('**Command Syntax**', 'For arguments in commands:\n» Arguments in `[]` brackets are required.\n» Arguments in `<>` brackets are optional.\n» Arguments prefixed with `-` are flags, and are placed at the start of the command (`avatar -jpg mudkipscience`)') + embed.addField('**Commands**', `Use \`${message.prefix}help all\` to view all commands, or \`${message.prefix}help \` for more information on a specific command.\n\n[Bot Invite](https://discordapp.com/oauth2/authorize?client_id=${client.user.id}&permissions=2134240503&scope=bot) | [Discord Server](https://discord.gg/HCF8mdv) | [GitHub](https://github.com/mudkipscience/woomy) | [Vote for me!](https://top.gg/bot/435961704145485835/vote)`) + return message.channel.send(embed) + } else if (args[0] === 'all') { + embed.setTitle('Commands') categories.sort().forEach((cat) => { const filtered = commands.filter((cmd) => cmd.help.category === cat) - embed.addField('**' + cat + '**', filtered.map((cmd) => '`' + cmd.help.name + '`').join(', '), true) + embed.addField('**' + cat + '**', filtered.map((cmd) => '`' + cmd.help.name + '`').join(', ')) }) if (message.guild && data.guild.customCommands.length > 0) { - embed.addField('**Custom**', data.guild.customCommands.map((cmd) => '`' + cmd.name + '`').join(' '), true) + embed.addField('**Custom**', data.guild.customCommands.map((cmd) => '`' + cmd.name + '`').join(' ')) } return message.channel.send(embed) } else { const command = args.shift().toLowerCase() - const cmd = client.commands.get(command) || client.commands.get(client.aliases.get(command)) + const cmd = commands.get(command) || commands.get(client.aliases.get(command)) if (!cmd) { return message.channel.send('Command/alias doesn\'t exist') } @@ -72,12 +82,12 @@ exports.run = (client, message, args, level, data) => { embed.setTitle(cmd.help.category.toLowerCase() + ':' + cmd.help.name) embed.setDescription(cmd.help.description) embed.addField('**Usage**', cmd.help.usage) - if (aliases) { - embed.addField('**Aliases**', aliases) - } if (cmd.help.parameters.length > 0) { embed.addField('**Parameters**', cmd.help.parameters) } + if (aliases) { + embed.addField('**Aliases**', aliases) + } embed.addField('**Rank required**', cmd.conf.permLevel, true) embed.addField('**Server only**', cmd.conf.guildOnly, true) embed.addField('**Cooldown**', cmd.conf.cooldown / 1000 + ' seconds', true) diff --git a/commands/level.js b/commands/level.js index e0b68a4..43135b3 100644 --- a/commands/level.js +++ b/commands/level.js @@ -12,7 +12,7 @@ exports.help = { category: 'Bot', description: 'Returns your permission level.', usage: 'level', - params: '' + parameters: '' } exports.run = async (client, message, args, level, data) => { diff --git a/commands/ping.js b/commands/ping.js index 6fd6b28..e316e93 100644 --- a/commands/ping.js +++ b/commands/ping.js @@ -10,9 +10,9 @@ exports.conf = { exports.help = { name: 'ping', category: 'Bot', - description: 'Displays bot latency in miliseconds.', + description: 'Check if bot is dying.', usage: 'ping', - params: '' + parameters: '' } exports.run = async (client, message, args, level, data) => { diff --git a/commands/play.js b/commands/play.js index d03f80d..b96db38 100644 --- a/commands/play.js +++ b/commands/play.js @@ -12,7 +12,7 @@ exports.help = { category: 'Music', description: 'Plays or adds to queue requested music.', usage: 'play [query]', - params: '[query] - A query to find video by or a link to the video.' + parameters: '[query] - A query to find video by or a link to the video.' } exports.run = async (client, message, args, level, data) => { diff --git a/commands/pride.js b/commands/pride.js index 78f7a45..606afaa 100644 --- a/commands/pride.js +++ b/commands/pride.js @@ -1,7 +1,7 @@ exports.conf = { enabled: true, guildOnly: false, - aliases: ['flag'], + aliases: [], permLevel: 'User', requiredPerms: ['ATTACH_FILES'], cooldown: 15000 diff --git a/commands/volume.js b/commands/volume.js index 1ed9893..a91e361 100644 --- a/commands/volume.js +++ b/commands/volume.js @@ -12,7 +12,7 @@ exports.help = { category: 'Music', description: 'Sets volume of currently playing music. (100% = 25% of the actual volume)', usage: 'volume [volume]', - params: '[volume] - Target volume from 0-100%' + parameters: '[volume] - Target volume from 0-100%' } exports.run = async (client, message, args, level, data) => { diff --git a/events/message.js b/events/message.js index 50f299a..2375cb1 100644 --- a/events/message.js +++ b/events/message.js @@ -10,7 +10,7 @@ module.exports = async (client, message) => { if (message.guild) { if (!message.channel.permissionsFor(client.user).has('SEND_MESSAGES')) { try { - return message.author.send(`I don't have permission to speak in **#${message.channel.name}**, Please ask a moderator to give me the send messages permission!`) + return message.author.send(`I don't have permission to speak in \`#${message.channel.name}\`, Please ask a moderator to give me the send messages permission!`) } catch (err) {} } data.guild = await client.findOrCreateGuild(message.guild) @@ -27,6 +27,13 @@ module.exports = async (client, message) => { if (message.content.indexOf(prefix) !== 0) return + console.log(prefix) + if (prefix === `<@${client.user.id}> ` || prefix === `<@!${client.user.id}> `) { + message.prefix = '@Woomy ' + } else { + message.prefix = prefix + } + const args = message.content.slice(prefix.length).trim().split(/ +/g) const command = args.shift().toLowerCase()