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



我从未处理过对象,也不知道它们是如何工作的。我试着搜索了一下,但没有找到我想要的东西。我想在样本中获得人们的用户名,并将他们全部嵌入到一个嵌入中,以显示谁在线

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));
}

返回

{
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

从那时起,您现在有了一个playerlist数组,您可以使用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);

我希望这有帮助
如果有人有更好/更有效的方法,请告诉我:(

最新更新