Javascript node.js/discord.js API问题(超级代理)

Javascript node.js/discord.js API问题(超级代理),javascript,node.js,discord.js,Javascript,Node.js,Discord.js,你好,我正在使用一个API,当我提供一个ID时,它会显示一些信息,它工作正常,但是当ID无效时,我会得到{“status”:“nok”,“reason”:“无法获取信息”。}我想让机器人说:当用户在命令中提供错误的ID时,ID无效。但是机器人却崩溃了 这是我的代码: const Discord = require("discord.js"); const superagent = require("superagent"); module.exports.run = async (bot, m

你好,我正在使用一个API,当我提供一个ID时,它会显示一些信息,它工作正常,但是当ID无效时,我会得到
{“status”:“nok”,“reason”:“无法获取信息”。}
我想让机器人说:当用户在命令中提供错误的ID时,ID无效。但是机器人却崩溃了

这是我的代码:

const Discord = require("discord.js");
const superagent = require("superagent");

module.exports.run = async (bot, message, args) => {

    let itemid = args.shift().toLowerCase();

    let {body} = await superagent
    .get(`https://us.api.blizzard.com/wow/item/${itemid}?locale=en_US&access_token=MYTOKEN`);

    let response2 = await superagent.get(`https://us.api.blizzard.com/data/wow/item/${itemid}?namespace=static-us&locale=en_US&access_token=MYTOKEN`);
    let body2 = response2.body;

    let response3 = await superagent.get(`https://us.api.blizzard.com/data/wow/media/item/${itemid}?namespace=static-us&locale=en_US&access_token=MYTOKEN`);
    let body3 = response3.body;

    let embed = new Discord.RichEmbed()
    .setColor('RANDOM')
    .setTitle('Item Lookup')
    .setThumbnail(body3.assets[0].value)
    .addField('Item Name:', body.name)
    .addField('Type:', `${body2.inventory_type.name} ${body2.item_subclass.name}`, true)
    .addField('Source:', body.itemSource.sourceType, true)
    .addField('Item ID:', body.id)
    .addField('Display ID:', body.displayInfoId)
    .addField('Item Level:', body.itemLevel)
    .addField('Required Level:', body.requiredLevel)

    if (body.itemSpells[0]) {
        embed.addField(`Effect**(${body.itemSpells[0].trigger})**:`, body.itemSpells[0].scaledDescription)
      } else {
        embed.addField(`Effect:`, `This item doesn't have any effects.`)
      }

    if (body.bonusStats[1].stat == 7) {
        embed.addField(`Stamina:`, `${body.bonusStats[1].amount}`, true)
    } else {

    }

    if (body.bonusStats[0].stat == 74) {
        embed.addField(`Strength/Intellect:`, `${body.bonusStats[0].amount}`, true)
    } else {

    }

    if (!body.id) {
        message.channel.send(`${body.reason}`)
    }

    message.channel.send(embed);

}

module.exports.help = {
    name: "getinfo"
}

请让我知道我的错误在哪里,我在这方面真的很困难…

请尝试使用try-catch捕获您想要的运行时异常

const Discord = require("discord.js");
const superagent = require("superagent");

module.exports.run = async (bot, message, args) => {

    let itemid = args.shift().toLowerCase();
    try{

        let {body} = await superagent
        .get(`https://us.api.blizzard.com/wow/item/${itemid}?locale=en_US&access_token=MYTOKEN`);

        try{
            let response2 = await superagent.get(`https://us.api.blizzard.com/data/wow/item/${itemid}?namespace=static-us&locale=en_US&access_token=MYTOKEN`);
            let body2 = response2.body;

            let response3 = await superagent.get(`https://us.api.blizzard.com/data/wow/media/item/${itemid}?namespace=static-us&locale=en_US&access_token=MYTOKEN`);
            let body3 = response3.body;
        }catch(error){
            //console.log("Id could be Invalid. Please check");
        }

        let embed = new Discord.RichEmbed()
        .setColor('RANDOM')
        .setTitle('Item Lookup')
        .setThumbnail(body3.assets[0].value)
        .addField('Item Name:', body.name)
        .addField('Type:', `${body2.inventory_type.name} ${body2.item_subclass.name}`, true)
        .addField('Source:', body.itemSource.sourceType, true)
        .addField('Item ID:', body.id)
        .addField('Display ID:', body.displayInfoId)
        .addField('Item Level:', body.itemLevel)
        .addField('Required Level:', body.requiredLevel)

        if (body.itemSpells[0]) {
            embed.addField(`Effect**(${body.itemSpells[0].trigger})**:`, body.itemSpells[0].scaledDescription)
        } else {
            embed.addField(`Effect:`, `This item doesn't have any effects.`)
        }

        if (body.bonusStats[1].stat == 7) {
            embed.addField(`Stamina:`, `${body.bonusStats[1].amount}`, true)
        } else {

        }

        if (body.bonusStats[0].stat == 74) {
            embed.addField(`Strength/Intellect:`, `${body.bonusStats[0].amount}`, true)
        } else {

        }

        if (!body.id) {
            message.channel.send(`${body.reason}`)
        }

        message.channel.send(embed);
    }
    catch(error){
        //console.log(error); //(or) you can throw error like the below
        //throw new error;
    }

}

module.exports.help = {
    name: "getinfo"
}

你试过使用try-catch吗?我还在学习过程中,你能告诉我怎么做吗?谢谢