使用discord.js访问API时出错,但仅在嵌入式系统上?
我正在制作一个Discord机器人,它从Hypixel API获取数据,Hypixel API是Minecraft服务器的API。我已经成功地编写了一些代码来获取数据,但这正是我遇到问题的地方。当我直接使用discord.js访问API时出错,但仅在嵌入式系统上?,discord,discord.js,bots,Discord,Discord.js,Bots,我正在制作一个Discord机器人,它从Hypixel API获取数据,Hypixel API是Minecraft服务器的API。我已经成功地编写了一些代码来获取数据,但这正是我遇到问题的地方。当我直接message.channel.send发送数据时,它工作正常。但是,如果我在嵌入中使用数据,它就不起作用 是否有效: fetch(`https://api.hypixel.net/player?key=API_KEY&name=${args[1]}`) .then(result=>result.
message.channel.send
发送数据时,它工作正常。但是,如果我在嵌入中使用数据,它就不起作用
是否有效:
fetch(`https://api.hypixel.net/player?key=API_KEY&name=${args[1]}`)
.then(result=>result.json())
.然后({player})=>{
message.channel.send(player.stats.Bedwars.coins)
})
不起作用:
fetch(`https://api.hypixel.net/player?key=API_KEY&name=${args[1]}`)
.then(result=>result.json())
.然后({player})=>{
var bedwars_general_1=新的Discord.MessageEmbed()
addFields先生(
{name:'Coins',value:player.stats.Bedwars.Coins,inline:true},
)
message.channel.send(bedwars\u general\u 1)
})
对于上面的示例,它工作得非常好,但是对于下面的示例,我每次都会收到以下错误消息:
UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'Bedwars' of undefined
当我添加这一行时,它也给了我这个错误
var bedwarsCoins=player.stats.Bedwars.coins
,然后将变量添加到嵌入字段
我无法理解为什么它只在某些时候起作用?该错误意味着
player
的stats
属性未定义或为空
API可能找不到任何东西,在这种情况下,您应该尝试捕获缺少stats
属性的值
.then(player => {
if (!player.stats) return console.log('Unable to find stats');
});
问题是,玩家有一个
stats
属性,如果您使用API,就可以看到这个属性。message.channel.send(player.stats.Bedwars.coins)
也可以工作,这一点也可以从中看出。只是因为某种原因,它在嵌入式系统中不起作用?请尝试将.addFields({name:'Coins',value:player.stats.Bedwars.Coins,inline:true})更改为.addField('Coins',player.stats.Bedwars.Coins,true)