【问题标题】:How to dynamically set permissions for ALL channels discord.js如何动态设置所有频道 discord.js 的权限
【发布时间】:2021-07-17 20:12:29
【问题描述】:

所以我发出了静音命令,但我找不到为每个频道设置权限并排除更改私人频道权限的方法。

所以比如设置频道权限如下:

message.channel.updateOverwrite(role1, {
      SEND_MESSAGES: false,
      SPEAK: false,
      ADD_REACTIONS: false,
      READ_MESSAGE_HISTORY: true
});
message.channel.updateOverwrite(role2, {
     SEND_MESSAGES: null,
     SPEAK: null,
     ADD_REACTIONS: null,
})

这仅设置执行命令的通道的权限,我想知道是否有一种方法可以为服务器中的每个通道设置权限(私有通道除外←如果这是不可能的,那么忽略它),而且我知道您可以使用频道 ID 为每个频道设置权限,但这仅限于 1 个不和谐服务器,我不希望这样。

【问题讨论】:

    标签: javascript node.js discord.js bots


    【解决方案1】:

    您可以循环访问服务器中的所有频道并使用类似这样的方式将它们静音

    message.guild.channels.cache.forEach(channel => { //Get each channel
        if (channel.type === "text") { //Check if it's a text channel
            try {
                channel.updateOverwrite(role1, {
                    SEND_MESSAGES: false,
                    SPEAK: false,
                    ADD_REACTIONS: false,
                    READ_MESSAGE_HISTORY: true
                });
    
                channel.updateOverwrite(role2, {
                    SEND_MESSAGES: null,
                    SPEAK: null,
                    ADD_REACTIONS: null,
                });
            } catch (error) { //Run this if there was an error setting the permissions
                //Error handling code here
            };
        };
    });
    

    这段代码所做的只是获取服务器中每个频道的列表,忽略语音频道,并设置权限。如果您的机器人没有编辑频道的权限,则会执行 catch 块。您可以简单地拥有它return,发送错误消息,随心所欲。

    【讨论】:

      猜你喜欢
      • 2021-01-02
      • 2021-04-18
      • 2020-07-23
      • 1970-01-01
      • 2021-06-21
      • 1970-01-01
      • 1970-01-01
      • 2021-05-28
      • 2021-07-10
      相关资源
      最近更新 更多