如何在Discord.js中用角色而非权限完全隐藏斜杠命令?
通过角色限制Discord.js斜杠命令的可见性
可以实现通过角色限制斜杠命令的可见性,让未授权角色完全看不到命令,但不能像直接传PermissionFlagsBits.BanMembers那样简单调用方法,需要结合默认权限设置和权限覆盖来完成:
- 第一步:先将命令的默认成员权限设为
0,这样所有用户默认都看不到该命令
command.setDefaultMemberPermissions(0);
- 第二步:给需要访问命令的角色添加权限覆盖,通过代码批量设置的示例如下:
// 替换为你的服务器ID、命令ID和目标角色ID const guild = await client.guilds.fetch('你的服务器ID'); const targetCommand = await guild.commands.fetch('你的命令ID'); // 给指定角色开放命令可见权限 await targetCommand.permissions.add({ permissions: [ { id: '目标角色ID', type: 'ROLE', permission: true } ] });
- 额外说明:
- 如果是全局命令,需要针对每个服务器单独设置权限覆盖;如果是服务器专属命令,可以在部署阶段就配置好权限
- Discord的权限系统是"默认拒绝,明确允许"的逻辑,默认权限设为0后,只有被添加了允许权限的角色才能看到并使用命令,完全满足你要的“不可见”需求
内容的提问来源于stack exchange,提问作者Jun sj
相关产品推荐
相关产品推荐

