我对javascript不太满意,但我一直在尝试获取所有语音通道中的用户数。 例如:如果“语音通道1”中有2个用户,而“语音通道2”中有1个用户,我要在控制台中打印数字3,即语音通道中的所有用户。
var Count;
for(Count in bot.users.array()){
var User = bot.users.array()[Count];
console.log(User.username);
}
此代码在控制台中打印所有成员(联机/脱机)的名称,但是我不知道如何获取语音通道中唯一的用户数。
答案 0 :(得分:1)
您可以过滤(Collection.filter()
)行会(Guild.channels
)中的所有通道,以检索仅Collection个语音通道。然后,您可以遍历每个通道并将连接到该通道的成员数添加到计数中。
// Assuming 'newMember' is the second parameter of the event.
const voiceChannels = newMember.guild.channels.filter(c => c.type === 'voice');
let count = 0;
for (const [id, voiceChannel] of voiceChannels) count += voiceChannel.members.size;
console.log(count);
答案 1 :(得分:0)
如果您不想在事件中使用此功能,而是在嵌入,消息等中使用;这是我的解决方案。我使用了@slothiful的解决方案,但做了一些更改。
// I used my "message" property. You can change it with yours.
const voiceChannels = message.guild.channels.cache.filter(c => c.type === 'voice');
let count = 0;
for (const [id, voiceChannel] of voiceChannels) count += voiceChannel.members.size;
message.channel.send(count);