首页 > 解决方案 > 我正在尝试创建一个 discord.js 命令,该命令创建一个名为“MUTED”的角色并覆盖所有频道权限以将“发送消息”设置为 false

问题描述

我想让它创建角色,然后覆盖服务器中存在的每个通道中的权限。

module.exports = {
    name: "createmuterole",
    description: "creates a muted role for mute command to work",
    guildOnly: true,
    execute(message, args) {
        if (!message.member.permissions.has("MANAGE_SERVER")) return message.channel.send(`You donot have the required permission to perform this command, ${message.author.username}`);
        const Muted = message.guild.roles.cache.find((role) => role.name === "Muted");
        message.guild.roles.create({
            data: {
                name: "Muted",
                color: "#000000",
                permissions: [],
            },
        });

        message.guild.updateOverwrite(guild.channels.roles.Muted, { SEND_MESSAGES: false }); //this part doesn't seem to be working
        message.channel.send("Role sucessfully Created");
    },
};

标签: javascriptnode.jspermissionsdiscorddiscord.js

解决方案


这个例子应该提供使人静音的基本结构。请记住,以下示例通过 id 使人员静音,因此您将不得不对其进行修改,使其适用于角色。

guild.channels.cache.forEach(async (channel, id) => {
    await channel.overwritePermissions([
      {
        id: member.id,
        deny: ["SEND_MESSAGES"],
      },
    ]);
  });

这样做是覆盖每个通道权限并拒绝为该 ID 发送消息的权限。


推荐阅读