繁体   English   中英

如何动态设置所有通道 discord.js 的权限

[英]How to dynamically set permissions for ALL channels discord.js

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

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

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 个 discord 服务器,我不希望这样。

您可以遍历服务器中的所有通道并使用类似这样的方式将它们静音

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 ,发送错误消息,无论您想要什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM