如何仅让有权限执行的用户可见专属Slash Commands?
如何让仅有权限的用户看到管理类Slash命令
当然可以实现,核心是在注册Slash命令时就配置权限要求,而非仅在执行阶段做校验。这样无对应权限的用户在命令列表里根本看不到这些命令,具体操作分两种场景:
1. 全局通用命令
以Discord机器人为例,注册命令时通过default_member_permissions参数指定所需权限。比如注册/ban命令时,要求用户拥有封禁成员的权限:
# discord.py 示例代码 @bot.tree.command(name="ban") @app_commands.default_permissions(ban_members=True) async def ban(interaction: discord.Interaction, member: discord.Member, reason: str = None): await member.ban(reason=reason) await interaction.response.send_message(f"已封禁 {member.mention}", ephemeral=True)
完成配置后,只有具备封禁权限的用户才能在命令列表中看到/ban。
2. 服务器专属命令
如果是针对单个服务器注册的命令,除了上述默认权限设置,还可以通过Discord服务器的内置配置做精细化调整:
- 进入服务器设置 → 集成 → 选择你的机器人 → 找到目标命令
- 点击命令旁的「权限」按钮,添加或移除允许查看/执行该命令的角色、用户
注意事项
你之前提到的执行阶段权限校验(比如在命令逻辑里判断用户权限),只能阻止无权限用户执行命令,但无法隐藏命令。只有在命令注册阶段配置权限要求,才能真正实现“无权限用户看不到命令”的效果。
内容的提问来源于stack exchange,提问作者Effectys
相关产品推荐
相关产品推荐

