You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用pokeapi获取宝可梦特性描述失败 如何正确提取对应返回字段

问题修复方案

核心错误原因

你对PokeAPI返回字段的读取逻辑有误:

  • data.flavor_text_entries本身是数组,每个数组元素才是包含flavor_text、language、version_group属性的单条描述对象
  • 你写的data.flavor_text_entries.flavor_text[1]是直接读取数组本身的flavor_text属性,该属性不存在,必然返回undefined报错

修正逻辑步骤

  1. 从flavor_text_entries数组中筛选你需要的语言版本的描述(英文对应en,简体中文对应zh-Hans)
  2. 提取对应条目的flavor_text字段,替换掉文本自带的换页符\f、换行符\n避免显示异常
  3. 增加兜底逻辑,避免目标语言无描述时程序报错

修正后代码片段

const fetch = require("node-fetch");
const Discord = module.require("discord.js");

module.exports = {
    name: "ability",
    aliases: ["abilities"],
    description: "Displays information for a given pokemon ability",
    category: "util",
    requiredArgs: ["query"],
    run: async (client, message, args) => {
      
      // 适配PokeAPI的特性名格式:全小写,空格替换为横杠
      const query = args.join(" ").toLowerCase().replace(/\s+/g, '-');
  
      if (!query) {
        // 原提示逻辑错误,该命令是查特性不是查宝可梦
        return message.channel.send("请输入要查询的宝可梦特性名称");
      }
  
      try {
        const res = await fetch(
          `https://pokeapi.co/api/v2/ability/${encodeURIComponent(
            query
          )}`
        )
        if (!res.ok) throw new Error('接口返回异常')
        const data = await res.json();
        
        // 筛选英文描述,要中文就把'en'换成'zh-Hans'
        const targetEntry = data.flavor_text_entries.find(item => item.language.name === 'en')
        // 兜底:无对应语言描述时取提示文本
        const flavorText = targetEntry ? targetEntry.flavor_text.replace(/[\n\f]/g, ' ') : '暂无该特性的描述信息'

        let embed = new Discord.MessageEmbed()
        // 可选配置:显示中文特性名
        .setTitle(`特性:${data.names.find(item => item.language.name === 'zh-Hans')?.name || data.name}`)
        .setDescription(`*${flavorText}*`)
       
        message.reply({ embeds: [embed] });
    } catch(err) {
        console.log(err);
        message.reply('未找到对应特性的数据,请检查输入是否正确')
    }
    
  },
};

额外注意事项

  • PokeAPI的特性查询入参仅支持特性的英文原名(全小写,空格替换为横杠)、数字ID,如果你需要支持中文特性名查询,需要自己维护中文名称到英文原名/ID的映射表
  • 部分特性可能没有简体中文描述,可根据需要调整筛选的语言优先级

内容的提问来源于stack exchange,提问作者Temp 2875

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:45:03