Discord JS v13 从对象中获取 var 并将它们全部放入嵌入中

Discord JS v13 Getting var's from an object and putting them all in a embed

我从未使用过对象,也不知道它们是如何工作的。尝试搜索它,但没有找到我要找的东西。我想在示例中获取人们的用户名并将它们全部放入嵌入中以显示在线用户名

  if (command === "status") {
    util.status('server', 25565, options)
      .then(
        (result) => {
          console.log(result)
          dumbarry = result.players.sample.names
          console.log(dumbarry)

          if (!dumbarry) return message.channel.send("No one is online")
          
          let embed = new MessageEmbed()
            .setTitle("Mincraft Players Online")
          for (let i = 0; i < dumbarry.length; i++) {
            embed.addField(dumbarry[i], 'is online')
          }
          message.channel.send(embed)
        }
      )
      .catch((error) => console.error(error));
  }

returns

{
  version: { name: 'Paper 1.18.2', protocol: 758 },
  players: { online: 1, max: 100, sample: [ [Object] ] },
  motd: {
    raw: '§fWelcome to hell',
    clean: 'Welcome to hell',
    html: '<span><span style="color: #FFFFFF;">Welcome to hell</span></span>'
  },
  favicon: null,
  srvRecord: { host: 'server', port: 25600 },
  roundTripLatency: 139
}

在对象中

[ { id: '8c075091-7837-41ca-9d9c-bb618843b15f', name: 'newdabz' }

您的代码看起来还不错,只是我看到了一些问题。

由于玩家列表是一个数组,您需要先更正这一行,
因为您不能像那样解构数组:

- dumbarry = result.players.sample.names
+ let dumbarry = result.players.sample

从那里你现在有一个播放列表数组,你可以使用 for 循环
添加字段或将它们添加到字符串。

// Sample 1

for (let i = 0; i < dumbarry.length; i++) {
  embed.addField(dumbarry[i].name, 'is online')
}

// Sample 2

for (let player of dumbarry) {
  embed.addField(player.name, 'is online.');
}

// With string

let string = '';
for (let player of dumbarry) {
  string += `**${player.name}** is online!\n`
}
embed.setDescription(string);

希望对您有所帮助!
如果有人有更好/更有效的方法,请告诉我:)