Discord bot在所有渠道获得的用户数

时间:2019-06-18 03:10:11

标签: javascript discord.js

我对javascript不太满意,但我一直在尝试获取所有语音通道中的用户数。 例如:如果“语音通道1”中有2个用户,而“语音通道2”中有1个用户,我要在控制台中打印数字3,即语音通道中的所有用户。

var Count;
for(Count in bot.users.array()){
   var User = bot.users.array()[Count];
   console.log(User.username);
}

此代码在控制台中打印所有成员(联机/脱机)的名称,但是我不知道如何获取语音通道中唯一的用户数。

2 个答案:

答案 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);