如何动态设置所有频道的权限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,发送一条错误消息,无论你想要什么。

最新更新