【问题标题】:How to mute/unmute all in discord voice channel for discord.js?如何在 discord.js 的不和谐语音频道中静音/取消静音?
【发布时间】:2021-01-02 21:54:37
【问题描述】:

我正在尝试创建一个机器人,通过向他们添加角色“TempMute”来使当前在语音频道中的每个人静音。然后,当我发送 /unmuteAll 时,我希望所有拥有“TempMute”标签的人都删除该标签。我尝试了几种不同的方法,但都没有成功。我正在使用 discord.js 版本 12.2.0。

const Discord = require('discord.js');


voiceChatChannelId="123456789"

bot.on('message', (message) => {
    var vc = bot.channels.cache.get(voiceChatChannelId);

    if (message.content == '/muteAll') {
        for (let member of vc.members){
            //add members all to "TempMute" role
        }
    }

    else if (message.content == '/unmuteAll') {
        for (let member of vc.members){
            //remove ALL members from role "TempMute"
        }
    }
});

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案1】:

    由于您已经拥有GuildMember,您可以使用GuildMember.roles.addGuildMember.roles.remove 方法来添加或删除角色。


    bot.on('message', (message) => {
        var vc = bot.channels.cache.get(voiceChatChannelId);
    
        if (message.content == '/muteAll') {
            for (let member of vc.members.array()){
                //add members all to "TempMute" role
                 member.roles.add("RoleID")
            }
        }
    
        else if (message.content == '/unmuteAll') {
            for (let member of vc.members.array()){
                //remove ALL members from role "TempMute"
                 member.roles.remove("RoleID")
            }
        }
    });
    

    【讨论】:

    • 我收到一个错误“TypeError: Cannot read property 'remove' of undefined”。我(服务器所有者)以及另一个帐户(用作没有特殊管理员权限的测试帐户)在语音频道中。
    • 尝试console.log(member)console.log(member.roles)。这些是未定义的吗?
    • console.log(member.roles) 未定义,console.log(member) 打印每个用户的所有json信息。
    • 问题是您试图循环通过 Collection 而不首先将其转换为 Array (或者您可以只使用 Collection#forEach 代替)。检查我更新的代码。
    猜你喜欢
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 2016-12-26
    • 2021-05-04
    • 2020-08-31
    • 2020-10-01
    相关资源
    最近更新 更多