【问题标题】:Discord.js / Mute everyoneDiscord.js / 让所有人静音
【发布时间】:2020-09-03 06:06:19
【问题描述】:

所以我编写了以下代码,应该使给定频道中的所有成员静音:

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

但它不起作用,我不知道为什么,因为我真的不知道 setMute() 函数是如何工作的。

编辑:我不确定如何访问每个成员并将其静音

【问题讨论】:

  • 为什么是member[1].setMute(true) 而不是member.setMute(true)
  • let channel = message.member.voice.channel.members这真的是频道成员的集合,你为什么叫这个channel?然后迭代channel.members 似乎也是错误的,因为我认为该集合没有额外的members 属性
  • 不知何故不添加 members 属性使其不可迭代。无论如何,我是 Discord.js 的新手,StackOverview 的答案显然已经过时了

标签: javascript discord.js


【解决方案1】:

“setMute”函数是成员语音状态对象的一部分。您直接从 GuildMember 对象本身使用它。您可能已经知道,语音状态对象是 GuildMember 对象的属性“语音”。所以这里是解决方案:

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

VoiceChannel 的属性 Members 是一个 Discord 集合(从 Javascript Map 扩展而来),我将使用 forEach 循环进行迭代,这样我就可以避免 Downlevel Iteration。

这应该可行:

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

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

这里有一些有用的链接:
TextChannel#members | discord.js
Collection | discord.js
Map - JavaScript | MDN

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-04
    • 2019-07-31
    • 2019-07-28
    • 1970-01-01
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多