努力使用pokapi试图获得能力的描述


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')
}

},
};

如何获取能力描述?我在文档中没有发现任何关于从API获取具体细节的信息,所以我非常感谢您的帮助!

根据我通过查看他们的API所看到的,您将获得一个多维数组,您需要迭代以获取所需的描述。

在这种情况下,一个好的方法是使用for in循环,这是最优的,因为一旦访问了要查找的值,就可以选择breakout。

根据你的问题,我无法判断你是如何处理data的,所以我冒昧地制作了自己的结构。请随意使用、编辑或做任何适合您需求的事情。

注意,我正在进行的提取的结构是动态的;在某种程度上";,比如选择描述的能力,以及应该用什么语言显示。

在我的示例中,我将使用值为4的功能,在他们的API寄存器中也称为战警。结果将以英语为例。

运行代码段时,等待几秒钟,等待响应通过。

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');

代码笔在这里。

最新更新