You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord Bot开发:用户无权限调用指令时发送错误提示的实现方法

Discord Bot 无权限调用指令提示实现方案

问题根因

你使用的@commands.has_permissions(manage_messages=True)装饰器会在触发权限校验失败时,直接抛出commands.MissingPermissions异常,不会进入clear函数内部执行逻辑,因此你在函数内编写的if/else判断完全不会生效。

实现方案

方案一:全局错误处理(推荐)

一次配置适配所有带权限校验的指令,无需为每个指令单独写错误逻辑,直接在你的Cog类或Bot主文件中添加如下监听代码即可:

@commands.Cog.listener()
async def on_command_error(self, ctx, error):
    # 捕获权限不足异常
    if isinstance(error, commands.MissingPermissions):
        await ctx.send("您没有权限使用该指令", delete_after=3)
    # 可扩展其他异常处理,例如参数输入错误
    elif isinstance(error, commands.BadArgument):
        await ctx.send("指令参数输入错误,请核对后重试", delete_after=3)

方案二:单指令专属错误处理

如果仅需要为clear指令做权限提示,可单独为其绑定错误处理函数,代码放在clear函数的同层级位置即可:

@clear.error
async def clear_error(self, ctx, error):
    if isinstance(error, commands.MissingPermissions):
        await ctx.send("您没有权限使用该指令", delete_after=3)

内容的提问来源于stack exchange,提问作者Marcos Souza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 11:21:03