const fetch = require("node-fetch"); const Discord = module.require("discord.js"); module.exports = { name: "ability", aliases: ["abilities"], description: "Displays pokedex information for a given pokemon", category: "util", requiredArgs: ["query"], run: async (client, message, args) => { const query = args.join(" "); if (!query) { return message.channel.send("Try Again This Time With A Pokemon Name"); } try { const data = await fetch( `https://pokeapi.co/api/v2/ability/${encodeURIComponent( query )}` ).then((res) => res.json()); let embed = new Discord.MessageEmbed() .setDescription(`*${data.flavor_text_entries.flavor_text[1]}*`) message.reply({ embeds: [embed] }); } catch(err) { console.log(err); message.reply('NO DATA FOUND') } }, };¿Cómo puedo obtener la descripción de la habilidad? No encontré nada sobre cómo obtener detalles específicos de la API en los documentos, ¡así que agradecería su ayuda!
Por lo que puedo ver al mirar su API, obtendrá una matriz multidimensional, que deberá iterar para obtener la descripción que necesita.
Un buen método en este caso es usar el bucle for in , que es óptimo, porque puede optar por break una vez que haya accedido al valor que estaba buscando.
No puedo decir por su pregunta, cómo está procesando los data exactamente, así que me tomé la libertad de hacer mi propia estructura. Siéntase libre de usarlo, editarlo o hacer lo que se adapte a sus necesidades.
Tenga en cuenta que la estructura de la búsqueda que estoy haciendo es dinámica hasta "hasta cierto punto", como elegir la capacidad de describir, así como el idioma en el que se debe mostrar.
En mi ejemplo, usaré la habilidad que tiene el valor de 4 , también conocida como armadura de batalla en su registro API. El resultado será en inglés para mi ejemplo.
Cuando ejecute el fragmento, espere unos segundos para que se transmita la respuesta.
const getDescription = async (value, lang='en') => { const dataList = await fetch(`https://pokeapi.co/api/v2/ability/${value}`) .then(response => response.json()) .catch((error) => console.log(error)); if (dataList) { for (const entry in dataList) { if (entry === 'flavor_text_entries') { for (const flavor in dataList[`${entry}`]) { if (dataList[`${entry}`][`${flavor}`]['language'].name === `${lang}`) { console.log(dataList[`${entry}`][`${flavor}`].flavor_text); break; } } } } } else { console.log('No data!'); } }; getDescription(4, 'en');Codepen aquí .