我从来没有处理过对象,也不知道它们是如何工作的。试着搜索,但没有想出我要找的东西。我希望在样例中获得人的用户名,并将它们全部嵌入到一个嵌入式系统中,以便在网上显示whos。
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' }
发布于 2022-03-28 13:02:07
您的代码看起来并不糟糕,只是我看到了一些问题。
因为player列表是一个数组,所以需要首先更正这一行,
因为不能像这样对数组进行那样的构造:
- 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);我希望这能帮上忙!
如果某人有一个更好/更有效的方法,请告诉我:)
https://stackoverflow.com/questions/71646489
复制相似问题