Discord.js 有没有一种方法可以在不和谐的嵌入中循环所有字段?
因此,我正在编写一个Discord机器人,它从hypixelapi(一个流行的Minecraft服务器的API)获取并显示一组数据。我对其进行了编码,以便以EMEBD的形式显示某些玩家统计信息。但是,API不存储没有值(即0)的统计数据。这意味着,当用户试图查看嵌入时,bot会出错,因为它无法发送没有值的字段 最初我有一个想法,将API的每个变量存储在一个数组中,并通过该数组进行循环。通过这种方式,我可以检查其中是否有Discord.js 有没有一种方法可以在不和谐的嵌入中循环所有字段?,discord.js,Discord.js,因此,我正在编写一个Discord机器人,它从hypixelapi(一个流行的Minecraft服务器的API)获取并显示一组数据。我对其进行了编码,以便以EMEBD的形式显示某些玩家统计信息。但是,API不存储没有值(即0)的统计数据。这意味着,当用户试图查看嵌入时,bot会出错,因为它无法发送没有值的字段 最初我有一个想法,将API的每个变量存储在一个数组中,并通过该数组进行循环。通过这种方式,我可以检查其中是否有未定义的,并在嵌入中用0或N/A替换它们。然而,这是一个非常漫长和混乱的过程,
未定义的
,并在嵌入中用0或N/A替换它们。然而,这是一个非常漫长和混乱的过程,所以我想知道是否有可能循环现有嵌入的字段值并以这种方式进行检查
以下是我的代码示例:
var bedwars_solos = new Discord.MessageEmbed()
.setTitle(rank + ' ' + player.displayname + ' | Solo Bedwars')
.setDescription('If a stat says `undefined`, the Hypixel API is currently not detecting it.')
.addFields(
{ name: 'Games Played', value: (player.stats.Bedwars.eight_one_games_played_bedwars).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","), inline: true},
{ name: 'Wins', value: (player.stats.Bedwars.eight_one_wins_bedwars).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","), inline: true},
{ name: 'Winstreak', value: (player.stats.Bedwars.eight_one_winstreak).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","), inline: true},
{ name: 'Kills', value: (player.stats.Bedwars.eight_one_kills_bedwars).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","), inline: true},
{ name: 'Void Kills', value: (player.stats.Bedwars.eight_one_void_kills_bedwars).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","), inline: true},
{ name: 'Final Kills', value: (player.stats.Bedwars.eight_one_final_kills_bedwars).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","), inline: true},
{ name: 'Deaths', value: (player.stats.Bedwars.eight_one_deaths_bedwars).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","), inline: true},
{ name: 'Void Deaths', value: (player.stats.Bedwars.eight_one_void_deaths_bedwars).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","), inline: true},
{ name: 'Final Deaths', value: (player.stats.Bedwars.eight_one_final_deaths_bedwars).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","), inline: true},
{ name: 'K/D', value: (player.stats.Bedwars.eight_one_kills_bedwars / player.stats.Bedwars.eight_one_deaths_bedwars).toFixed(2), inline: true},
{ name: 'Final K/D', value: (player.stats.Bedwars.eight_one_final_kills_bedwars / player.stats.Bedwars.eight_one_final_deaths_bedwars).toFixed(2), inline: true},
{ name: 'Beds Broken', value: (player.stats.Bedwars.eight_one_beds_broken_bedwars).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","), inline: true},
)
.setColor(0xFF5100)
.setTimestamp()
.setThumbnail('./thumbnails/BedWars.png')
.setFooter('HypStats by SirArchibald')
bot在API中找不到值时出错,因为它无法在任何情况下使用.toString()
。而不是执行以下操作:
value: (player.stats.Bedwars.eight_one_games_played_bedwars).toString()
你可以做:
value: (player.stats.Bedwars.eight_one_games_played_bedwars || 0).toString()
注意,| | 0
部分作为0
将是当上一个字段未定义或等效为false时用于.toString
的值