diff --git a/bot/commands/Bot/help.js b/bot/commands/Bot/help.js index 44684d7..81710a4 100644 --- a/bot/commands/Bot/help.js +++ b/bot/commands/Bot/help.js @@ -45,7 +45,7 @@ module.exports = class { ‏‏‎ ‎` ); categories.forEach(category => { - embed.addField(`${prettified[category].emoji} **${category}**`, `*${prettified[category].description}*\n${client.commands.filter(cmd => cmd.category === category).length} commands`, true); + embed.addField(`${prettified[category].emoji} ${category}`, `*${prettified[category].description}*\n${client.commands.filter(cmd => cmd.category === category).length} commands`, true); }); embed.setFooter('<> = required, / = either/or, [] = optional'); @@ -80,13 +80,13 @@ module.exports = class { .setTitle(prettified[command.category].emoji + ' ' + command.category + ' -> ' + command.name.toProperCase()) .setColour(client.functions.displayHexColour(message.channel.guild, client.user.id)) .setDescription(command.help.description) - .addField('**Format:**', `\`${message.prefix + command.name} ${command.help.arguments}`.trim() + '`'); - if (command.help.details.length > 0) embed.addField('**Parameters:**', command.help.details); - if (command.help.examples.length > 0) embed.addField('**Examples**', command.help.examples); - if (command.aliases.length > 0) embed.addField('**Aliases:**', '`' + command.aliases.join('`, `') + '`'); - if (command.userPerms.length > 0) embed.addField('**User permissions:**', command.userPerms.join(', '), true); - if (command.botPerms.length > 0) embed.addField('**Bot permissions:', command.botPerms.join(', '), true); - embed.addField('**Cooldown:**', `${command.cooldown / 1000} seconds`, true); + .addField('Format:', `\`${message.prefix + command.name} ${command.help.arguments}`.trim() + '`'); + if (command.help.details.length > 0) embed.addField('Parameters:', command.help.details); + if (command.help.examples.length > 0) embed.addField('Examples', command.help.examples); + if (command.aliases.length > 0) embed.addField('Aliases:', '`' + command.aliases.join('`, `') + '`'); + if (command.userPerms.length > 0) embed.addField('User permissions:', command.userPerms.join(', '), true); + if (command.botPerms.length > 0) embed.addField('Bot permissions:', command.botPerms.join(', '), true); + embed.addField('Cooldown:', `${command.cooldown / 1000} seconds`, true); embed.setFooter('<> = required, / = either/or, [] = optional'); return message.channel.createMessage({ embed: embed }); } diff --git a/bot/commands/Fun/pokeability.js b/bot/commands/Fun/pokeability.js index 357c2dd..48882e8 100644 --- a/bot/commands/Fun/pokeability.js +++ b/bot/commands/Fun/pokeability.js @@ -69,7 +69,7 @@ module.exports = class { .setColour(client.functions.displayHexColour(message.channel.guild, client.user.id)) .setTitle(ability.name.toProperCase()) .setDescription(ability.desc) - .addField('**External Resources:**', `[Bulbapedia](${ability.bulbapediaPage}) | [Serebii](${ability.serebiiPage}) | [Smogon](${ability.smogonPage})`); + .addField('External Resources:', `[Bulbapedia](${ability.bulbapediaPage}) | [Serebii](${ability.serebiiPage}) | [Smogon](${ability.smogonPage})`); message.channel.createMessage({ embed: embed }); }) .catch(err => console.log(err)); diff --git a/bot/commands/Fun/typematchup.js b/bot/commands/Fun/typematchup.js index 30046e6..a5195c8 100644 --- a/bot/commands/Fun/typematchup.js +++ b/bot/commands/Fun/typematchup.js @@ -1,5 +1,5 @@ const Embed = require('../../util/embed'); -const colours = require('../../assets/constants/typeColours.json'); +const { typeArray, colours } = require('../../assets/constants/pokemon.json'); const fetch = require('node-fetch'); module.exports = class { @@ -16,18 +16,52 @@ module.exports = class { description: 'Get useful data on any pokemon you ask me to!', arguments: '', details: '', - examples: '`pokemon mudkip`\n`pokemon giratina-origin`' + examples: '`pokemon mudkip`\n`pokemon giratina origin`' }; } async run (client, message, args, data) { //eslint-disable-line no-unused-vars if (!args[0]) return message.channel.createMessage( - `${client.constants.emojis.userError} You didn't give me a pokemon to look up!` + `${client.constants.emojis.userError} You didn't give me a pokemon or type combination to look up! Usage: \`${message.prefix + this.name + ' ' + this.help.arguments}\`` ); message.channel.sendTyping(); - const query = args.join(' ').toLowerCase(); + let types; + + if (!typeArray.includes(args[0].toProperCase())) { + const res = await fetch('https://graphqlpokemon.favware.tech/', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ query: ` + { + getPokemonDetailsByFuzzy(pokemon: "${args.join(' ').toLowerCase()}") { + types + } + } + `}) + }); + const json = await res.json(); + if (json.errors) { + json.errors.forEach(error => { + if (error.message.startsWith('No Pokémon found')) { + message.channel.createMessage( + `${client.constants.emojis.userError} I couldn't find any Pokemon with names similar to ${query}. Check your spelling, maybe?` + ); + } else { + client.logger.error('POKEMON_FETCH_ERROR', error.message); + } + }); + + return; + } + console.log(json) + types = json.data.getPokemonDetailsByFuzzy.types.join(', ').toLowerCase(); + } else { + types = args.join(', ').toLowerCase(); + } fetch('https://graphqlpokemon.favware.tech/', { method: 'POST', @@ -36,21 +70,16 @@ module.exports = class { }, body: JSON.stringify({ query: ` { - getPokemonDetailsByFuzzy(pokemon: "${query}") { - num - species - types - sprite - shinySprite - bulbapediaPage - serebiiPage - smogonPage + getTypeMatchup(types: [${types}]) { + attacking { doubleEffectiveTypes effectiveTypes normalTypes resistedTypes doubleResistedTypes effectlessTypes } + defending { doubleEffectiveTypes effectiveTypes normalTypes resistedTypes doubleResistedTypes effectlessTypes } } } `}) }) .then(res => res.json()) .then(json => { + console.log(json.data) if (json.errors) { json.errors.forEach(error => { if (error.message.startsWith('No Pokémon found')) { @@ -61,68 +90,29 @@ module.exports = class { client.logger.error('POKEMON_FETCH_ERROR', error.message); } }); - return; } - const pokemon = json.data.getPokemonDetailsByFuzzy; - - console.log(pokemon.types) - - fetch('https://graphqlpokemon.favware.tech/', { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ query: ` - { - getTypeMatchup(types: [water]) { - attacking { doubleEffectiveTypes effectiveTypes resistedTypes doubleResistedTypes effectlessTypes } - } - } - `}) - }) - .then(res => res.json()) - .then(json => { - console.log(json) - if (json.errors) { - json.errors.forEach(error => { - client.logger.error('POKEMON_FETCH_ERROR', error.message); - }); - - return; - } - - console.log(json.data) - const typeMatchup = json.data.getTypeMatchup; - - let doubleEffective = ''; - if (typeMatchup.doubleEffectiveTypes && typeMatchup.doubleEffectiveTypes.length > 0) { - doubleEffective = '**' + typeMatchup.doubleEffectiveTypes.join('**, **') + '**'; - doubleEffective = doubleEffective.concat(typeMatchup.effectiveTypes).join(', '); - } - - let doubleResists = ''; - if (typeMatchup.doubleResistedTypes && typeMatchup.doubleResistedTypes.length > 0) { - doubleResists = '**' + typeMatchup.doubleResistedTypes.join('** **') + '**'; - doubleResists = doubleResists.split(' '); - doubleResists = doubleResists.concat(typeMatchup.resistedTypes).join(', '); - } - - - const embed = new Embed() - .setColour(colours[pokemon.types[0]]) - .setTitle(`${pokemon.species.toProperCase()} (No. ${pokemon.num})`) - .setThumbnail(pokemon.sprite) - .addField('**Types:**', pokemon.types.join(', '), true) - .addField('**Weak to:**', doubleEffective) - .addField('**Strong against:**', doubleResists) - .addField('**Immune to:**', typeMatchup.effectlessTypes.join(' ')) - .addField('**External Resources:**', `[Bulbapedia](${pokemon.bulbapediaPage}) | [Serebii](${pokemon.serebiiPage}) | [Smogon](${pokemon.smogonPage})`); - message.channel.createMessage({ embed: embed }); - }) - .catch(err => client.logger.error('TYPEMATCHUP_CMD_ERROR', err)); + const typeMatchup = json.data.getTypeMatchup; + + const embed = new Embed() + .setTitle('Offensive') + .addField('Weak to:', typeMatchup.attacking.effectiveTypes.join(', ')) + .addField('Strong against:', typeMatchup.attacking.resistedTypes.join(', ')); + //.addField('Immune to:', typeMatchup.effectlessTypes.join(' ')); + //.addField('External Resources:', `[Bulbapedia](${pokemon.bulbapediaPage}) | [Serebii](${pokemon.serebiiPage}) | [Smogon](${pokemon.smogonPage})`); + message.channel.createMessage({ embed: embed }); }) - .catch(err => client.logger.error('TYPEMATCHUP_CMD_ERROR', err)); + .catch(err => client.logger.error('TYPEMATCHUP_CMD_ERROR', err.stack)); } + + parseEffectiveTypes (effective, doubleEffective) { + + } + + parseResistedTtypes (resisted, doubleResisted) { + + } + + }; \ No newline at end of file diff --git a/bot/commands/Utility/weather.js b/bot/commands/Utility/weather.js index cb03aff..10e443c 100644 --- a/bot/commands/Utility/weather.js +++ b/bot/commands/Utility/weather.js @@ -61,15 +61,15 @@ module.exports = class { .setTitle(`Weather for ${city + ', ' + ISO2.code[json.sys.country]}`) .setThumbnail(`https://openweathermap.org/img/wn/${json.weather[0].icon}@4x.png`) .setColour(embedColour) - .addField('**Condition:**', json.weather[0].main, true) - .addField('**Temperature:**', `${tempCelcius}°C | ${Math.round(json.main.temp * 9/5 - 459.67)}°F`, true) - .addField('**Min/Max**:', ` + .addField('Condition:', json.weather[0].main, true) + .addField('Temperature:', `${tempCelcius}°C | ${Math.round(json.main.temp * 9/5 - 459.67)}°F`, true) + .addField('Min/Max:', ` ${Math.round(json.main.temp_min - 273.15)}°C - ${Math.round(json.main.temp_max - 273.15)}°C ${Math.round(json.main.temp_min * 9/5 - 459.67)}°F - ${Math.round(json.main.temp_max * 9/5 - 459.67)}°F `, true) - .addField('**Humidity:**', `${json.main.humidity}%`, true) - .addField('**Wind Speed:**', `${Math.round(json.wind.speed * 10) / 10}km/h | ${Math.round(json.wind.speed * 10 / 1.609344)}mi/h`, true) - .addField('**Wind Direction:**', windrose.getPoint(json.wind.deg).name, true) + .addField('Humidity:', `${json.main.humidity}%`, true) + .addField('Wind Speed:', `${Math.round(json.wind.speed * 10) / 10}km/h | ${Math.round(json.wind.speed * 10 / 1.609344)}mi/h`, true) + .addField('Wind Direction:', windrose.getPoint(json.wind.deg).name, true) .setFooter('Powered by openweathermap.org'); return message.channel.createMessage({ embed:embed }); } else {