我正在使用 node.js Discord bot 处理一些我正在处理的事情,但在这一点上真的卡住了。我试图在与运行命令的人相同的语音频道中检索所有成员的姓名和 ID。但是,我很难规划出从数据中提取这些内容的最后一步。这是我所拥有的:
client.on('message', message => {
if (message.author.bot) {
return;
}
if (message.content === '!tausbot sunday') {
const channeltoCheck = message.member.voice.id;
console.log('channeltoCheck:');
console.log(channeltoCheck);
const membersofChannel = message.guild.members.cache.find(channeltoCheck => channeltoCheck.id == channeltoCheck);
console.log(membersofChannel);
const myArray = {};
membersofChannel.each(member => {
myArray.push(`${member.user.tag} (ID: ${member.user.id})`)
});
message.channel.send(`**MEMBERS**\n${myArray.join("\n") || "No members found"}`);
}
});
membersofChannel 为我获取到 console.log 的数据,但我需要从中提取用户名和 ID 并将其发布在消息中。任何帮助将不胜感激。
我想我也可能有一个更大的问题 - 虽然我在语音频道中有自己和两个虚拟帐户,但我似乎只拉了一个成员。这是包括成员的位:
答案 0 :(得分:0)
您似乎正在使用 .find
来查找成员。这是行不通的。以下是您应该用来替换它的内容。 .filter
将返回一个可以与之后的代码段一起使用的集合。
.filter(member => member.voice.channelID === channelToCheck);
// Filter by their voice channel
假设您返回的是一个数组或一个单独的 GuildMember,您可以将所有数据放入一个新的数组中。然后,您将使用 Array.join()
连接所有数据。这将它放入一个不错的干净列表中。
const myArray = {}; // Create an Array to put the new data in
membersofChannel.each(member => { // For each member, do...
myArray.push(`${member.user.tag} (ID: ${member.user.id})`) // Pull the username and ID
});
message.channel.send(`**MEMBERS**\n${myArray.join("\n") || "No members found"}`)
// Separate entries with a new line
// Send the message containing the information
.join("\n")
将用新行分隔每个成员。假设 Joe#0001 和 Bob#0001 在 VC 中,他们运行命令。它将返回以下内容:
成员
乔#0001(ID:1234567890)
鲍勃#0001(ID:1234567890)