检索存在于语音通道中的成员
Posted
技术标签:
【中文标题】检索存在于语音通道中的成员【英文标题】:Retrieving members present in a voice channel 【发布时间】:2021-06-17 09:42:44 【问题描述】:我已经非常接近我正在使用 node.js Discord 机器人处理的事情,但我真的停留在这一点上。我正在尝试在与运行命令的人相同的语音频道中检索所有成员的姓名和 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 并将其发布到消息中。任何帮助将不胜感激。
我想我也可能有一个更大的问题 - 似乎我只拉了一个成员,尽管我在语音频道中有自己和两个虚拟帐户。这是包含该成员的位:
【问题讨论】:
【参考方案1】:您似乎正在使用.find
来查找成员。这行不通。以下是您应该使用的替换它。 .filter
将返回一个可以与 sn-p 后使用的 Collection。
.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) Bob#0001 (ID: 1234567890)
【讨论】:
非常感谢 - 感谢您在推理中发表评论。我对此很陌生,所有这些信息都很有帮助。当我放置该代码时,我收到错误:TypeError:membersofChannel.each 不是一个函数,我将在上面更新我的代码,也是我在控制台中为 membersofChannel 获得的一部分。 我的答案已被编辑。请看一下,如果它回答了您的问题,请勾选复选标记以向其他人展示这对您有所帮助!以上是关于检索存在于语音通道中的成员的主要内容,如果未能解决你的问题,请参考以下文章