简体   繁体   English

Discord.js / 将所有人静音

[英]Discord.js / Mute everyone

So I wrote the following code that is supposed to mute all the members in a given channel:因此,我编写了以下代码,用于将给定频道中的所有成员静音:

client.on('message', message => {
     if (message.content == 'sh!') {
         let channel = message.member.voice.channel
         for (let member of channel.members) {
             member[1].setMute(true)
         }
     }
})

But it does not work and I cannot find out why because I do not really know how the setMute() function works.但它不起作用,我无法找出原因,因为我真的不知道 setMute() 函数是如何工作的。

EDIT: I am not sure about how I can access every member and mute it编辑:我不确定如何访问每个成员并将其静音

The 'setMute' function is part of the member's voice state object. “setMute”函数是成员语音状态对象的一部分。 You're using it directly from the GuildMember object itself.您直接从 GuildMember 对象本身使用它。 As you may already know, the voice state object is the property 'voice' of the GuildMember object.您可能已经知道,语音状态对象是 GuildMember 对象的属性“语音”。 So here's the solution:所以这是解决方案:

// change this
member[1].setMute(true);
// to this
member[1].voice.setMute(true);

The property Members of a VoiceChannel is a Discord Collection (which extends from Javascript Map), I would iterate using a forEach loop so I could avoid Downlevel Iteration. VoiceChannel 的属性成员是一个 Discord 集合(从 Javascript Map 扩展),我将使用 forEach 循环进行迭代,这样我就可以避免下层迭代。

This should work:这应该有效:

client.on('message', message => {
  if (message.content == 'sh!') {
    const members = message.member.voice.channel.members;

    members.forEach(member => {
      member.voice.setMute(true);
    });
  }
});

Here's some useful links:以下是一些有用的链接:
TextChannel#members | 文字频道#members | discord.js 不和谐.js
Collection | 收藏 | discord.js 不和谐.js
Map - JavaScript | 地图- JavaScript | MDN MDN

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM