Files
xiao/structures/pokemon/PokemonStore.js
T
2020-03-23 14:27:13 -04:00

24 lines
878 B
JavaScript

const Collection = require('@discordjs/collection');
const request = require('node-superfetch');
const Pokemon = require('./Pokemon');
const missingno = require('../../assets/json/missingno');
module.exports = class PokemonStore extends Collection {
async fetch(query) {
query = encodeURIComponent(query.toLowerCase().replace(/ /g, '-').replace(/[^a-zA-Z0-9-]/g, ''));
const num = Number.parseInt(query, 10);
if (this.has(num)) return this.get(num);
const found = this.find(pokemon => pokemon.slug === query);
if (found) return found;
if (query === 'missingno' || num === 0) {
const pokemon = new Pokemon(missingno);
this.set(pokemon.id, pokemon);
return pokemon;
}
const { body } = await request.get(`https://pokeapi.co/api/v2/pokemon-species/${query}/`);
const pokemon = new Pokemon(body);
this.set(pokemon.id, pokemon);
return pokemon;
}
};