Discord.js 斜线命令权限系统不起作用

Posted

技术标签:

【中文标题】Discord.js 斜线命令权限系统不起作用【英文标题】:Discord.js slash command permission system not working 【发布时间】:2021-12-22 13:18:12 【问题描述】:

这是权限设置的主要代码。

const run = (client) => __awaiter(void 0, void 0, void 0, function* () 
    const commandFiles = glob_1.default.sync(process.cwd() + "/src/commands/**/*.ts,.js");
    const guild = client.guilds.cache.get(config_json_1.default.guildId);
    commandFiles.map(value => 
        Promise.resolve().then(() => __importStar(require(value))).then((file) => __awaiter(void 0, void 0, void 0, function* () 
            exports.commands.set(file.info.name, file);
            const command = yield guild.commands.create(file.info);
            if (file.permission == undefined || file.permission == "@everyone")
                return;
            const json = (file.permission == "admin" ? 
                id: config_json_1.default.adminRole,
                permission: true,
                type: "ROLE"
             : 
                id: config_json_1.default.freelancerRole,
                permission: true,
                type: "ROLE"
            );
            command.permissions.add(
                permissions: [json]
            );
        ));
    );

我已经委托了一个不和谐机器人的开发人员,除了任何人都可以使用任何命令这一事实之外,一切都在工作。他有一个自定义权限系统,使用上述方法设置它。但是,这不起作用。我已经调试了配置角色 id,file.permission 已设置,他很肯定它可以工作。 File.permission 在命令文件中使用exports.permission = "admin"; 设置,defaultpermission 为 true。

【问题讨论】:

这段代码显示了权限是如何定义的。您应该编辑您的问题并添加显示在运行命令时如何评估权限的代码部分。 【参考方案1】:

Discord 没有名为admin 的权限,您必须改用ADMINISTRATOR 权限!

【讨论】:

谢谢,但它会关闭角色权限而不是实际的不和谐权限。问题是“admin”只是他用来检查是否使用 adminRole 或 freelancerRole 的纯文本字符串。他将命令文件中的字符串转发到权限文件,以便知道要向哪个角色添加权限。

以上是关于Discord.js 斜线命令权限系统不起作用的主要内容,如果未能解决你的问题,请参考以下文章

(discord.js) 检查机器人是不是有权限不起作用

Discord.js:GuildMember 的 setMute 命令不起作用?

Discord.js API 中的权限?

具有用户权限、客户端权限和限制的 Discord.js 命令处理程序

Discord.js 缺少对斜杠命令的访问权限

Discord.js 关于消息命令不起作用