如何获取discord.py中ClientException异常内部的具体错误消息
解决方法
1 修正现有代码的类型判断错误
你当前写的isinstance(err, commands.ClientException())存在语法问题:isinstance的第二个参数需要传入异常类本身,不需要加括号实例化,否则类型判断逻辑会完全失效。
2 提取异常消息匹配目标文本
直接把异常对象转为字符串即可获取完整的错误提示内容,之后用in关键字判断是否包含目标子串即可。你也可以通过异常对象的args属性提取消息内容,效果一致。
正确的实现代码如下:
@commands.Cog.listener() async def on_error(self, err): # 异常类型判断,注意不要给ClientException加括号 if isinstance(err, commands.ClientException): # 提取异常消息 err_msg = str(err) # 匹配目标文本 if "Already playing audio" in err_msg: print("触发已在播放音频的异常") # 此处添加你需要的对应处理逻辑 else: print(f"其他客户端异常:{err_msg}")
补充说明
- 如果要通过
args属性获取,只需把err_msg = str(err)替换为err_msg = err.args[0]即可,对于仅携带单条文本提示的异常,两种写法的返回结果完全相同。
内容的提问来源于stack exchange,提问作者Jaxon. B
相关产品推荐
相关产品推荐

