静音整个 Discord 语音通道 (JS)

Posted

技术标签:

【中文标题】静音整个 Discord 语音通道 (JS)【英文标题】:Muting an Entire Discord Voice Channel (JS) 【发布时间】:2020-11-03 08:30:13 【问题描述】:

我正在为我朋友组的游戏服务器开发一个不和谐机器人。我想添加一个命令,使语音频道中的每个人都静音。我认为这个msg.member.voice.channel.members.setmute(true); 可以工作,但它返回的不是一个函数并使机器人崩溃。这个msg.member.voice.setMute(true); 的工作原理是它将服务器静音发送消息的成员,但显然不是我想要的整个频道。我是 discord.js 的新手,文档有点混乱。感谢您的宝贵时间!

【问题讨论】:

【参考方案1】:

不久前,我在一个项目中做过类似的事情,我不得不让除了发出命令的人之外的所有人都静音。

您可以通过遍历当前频道中所有用户的数组来完成此操作。

// Your invokation here, for example your switch/case hook for some command (i.e. '!muteall')
// Check if user is in a voice channel:
if (message.member.voice.channel) 
  let channel = message.guild.channels.cache.get(message.member.voice.channel.id);
  for (const [memberID, member] of channel.members) 
    // I added the following if statement to mute everyone but the invoker:
    // if (member != message.member)

    // This single line however, nested inside the for loop, should mute everyone in the channel:
    member.voice.setMute(true);
  
 else 
  message.reply('You need to join a voice channel first!');

【讨论】:

起初它不起作用,但是一旦我将“消息”更改为“味精”,它就起作用了!非常感谢你! 别担心,伙计,很高兴你成功了!可能只是我们设置事件处理程序的方式有所不同:client.on('message', async message => //... )。如果您不介意投票,我将不胜感激? 如果您想处理任何错误,请使用Promise.all(类似于Promise.all(channel.members.map(m => m.voice.setMute(true)))Promise.all(channel.members.filter(m => m.id !== message.member.id).map(m => m.voice.setMute(true))) 以忽略调用程序)。这样您就可以使用Promise.all(...).catch(console.error)try await Promise.all(...) catch (error) console.error(error) ,例如。

以上是关于静音整个 Discord 语音通道 (JS)的主要内容,如果未能解决你的问题,请参考以下文章

获取一个类别Channel的权限并设置为语音通道discord.py

Discord.js 机器人提到语音通道

带有斜杠命令的 Discord.js 语音通道

Discord.js - 检查用户是不是静音/静音更改

如何将变量设置为用户指定的语音通道 - Discord.js

Discord.js 将 mpeg 音频流流式传输到语音通道