![](/img/trans.png)
[英]Discord.js | How to get members currently connected to a Voice Channel?
[英](Discord.js) How do i get all the members connected to the voice channels of a category?
因此,我正在制作一个名为“movedebat”的命令,将连接到频道类别的语音频道的所有成员移动到专门用于辩论的频道。
为了实现我的目标,我试图获取所有连接成员的列表,然后使用for(成员中的成员)循环并移动每个成员。
let debate_channel = message.guild.channels.find(c => c.id === '497910775512563742');
let group_of_channels = message.guild.channels.find(c => c.id === '497908108803440653');
let connected_members = message.guild.channels.filter((c => parentID === group_of_channels.id)&&(c => c.type == 2)).members;
if(message.member.permissions.has('ADMINISTRATOR')){
for(connected_member in connected_members){
console.log(connected_member.id);
connected_member.setVoiceChannel(debate_channel)
.then(() => console.log(`Moved ${connected_member.displayName}`))
.catch(console.error);
}
}
问题是它根本不起作用。 我不会在不和谐或控制台中发现任何错误。 我唯一得到的是警告DeprecationWarning: Collection#filterArray: use Collection#filter instead
,但我用Google搜索,人们似乎说它并不重要。 我认为有问题的一行是'let connected_members(...)成员;' 一。 我应该提一下,我希望在我的控制台中看到至少1个成员ID,但我没有得到任何,这意味着for循环不是'执行'。
感谢您阅读我,希望有人能帮忙! ^^
声明connected_members
,应该在Collection.filter()
使用单个函数。
Collection.filter()
返回另一个Collection,其members
不是属性。 您必须遍历每个频道才能获得其成员。
for...in
“迭代所有非符号, 对象的可枚举属性 ”(MDN)。 在Collection( Map )中,元素不是属性,而是键值对。 您可以在此上下文中使用for...of
if (message.member.permissions.missing('ADMINISTRATOR')) return;
const channels = message.guild.channels.filter(c => c.parentID === '497908108803440653' && c.type === 'voice');
for (const [channelID, channel] of channels) {
for (const [memberID, member] of channel.members) {
member.setVoiceChannel('497910775512563742')
.then(() => console.log(`Moved ${member.user.tag}.`))
.catch(console.error);
}
}
附注:使用Map.get()
通过ID查找Collection中的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.