如何覆盖语音通道的权限?

时间:2020-12-31 17:07:50

标签: discord discord.js

对于我的父类别,权限设置为每个人都无法连接到创建的频道,我希望这样当有人对 ✅ 做出反应时,机器人允许任何人加入语音频道。代码不会产生错误,但权限不会改变。有谁知道为什么?

这是我的代码:

if(reaction.emoji.name === '✅') {
                    message.channel.overwritePermissions([
                        {
                           id: message.channel.guild.roles.everyone, 
                           allow: ['CONNECT'],
                           
                        },
                    ]);
                      
                }

1 个答案:

答案 0 :(得分:1)

为了更新“@everyone”角色的权限覆盖,您需要使用 message.guild.id

除此之外,您目前正在尝试更新 text channel 的覆盖以向服务器中的每个人授予 connect 权限,老实说,这并没有多大意义。 如果您尝试在执行器存在于语音通道内时执行此命令,我的建议如下:

  • 首先,您可以在您的反应收集器中传递 user 参数,因此您可以简单地使用 const member = reaction.guild.member(user.id) 来获取反应器的 GuildMember 对象。
  • bot 找到 GuildMember 对象后,您可以简单地使用 member.voice.channel 函数获取执行器的 channel 对象

最后,在完成上述所有操作后,您的代码应如下所示:

const member = reaction.guild.member(user.id)
    const channel = member.voice.channel
    channel.overwritePermissions([
        {
            id: message.guild.id,
            allow: ['CONNECT']
        }
    ])