静音整个 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