【问题标题】:Muting an Entire Discord Voice Channel (JS)静音整个 Discord 语音通道 (JS)
【发布时间】:2023-03-28 19:50:01
【问题描述】:

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

【问题讨论】:

    标签: javascript discord bots 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) },例如。
    猜你喜欢
    • 2022-12-11
    • 2023-02-23
    • 2021-01-31
    • 2021-04-05
    • 2020-06-26
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    • 2021-03-22
    相关资源
    最近更新 更多