Discord.py命令多参数缺失错误处理:区分未传参/仅传1个参数的实现
实现方案
你需要捕获commands.MissingRequiredArgument(必填参数缺失)类型的错误,再统计已传入的参数数量做分支判断即可,代码示例如下:
@ran.error async def ran_error(ctx, error): # 匹配必填参数缺失错误 if isinstance(error, commands.MissingRequiredArgument): # 非Cog场景参数计数:减去ctx本身占用的1位 arg_count = len(ctx.args) - 1 # Cog场景请改用下面的计数规则,减去ctx和self两个占用位 # arg_count = len(ctx.args) - 2 if arg_count == 0: # 未传任何参数的操作a逻辑 await ctx.send("未传入任何参数,执行操作a") elif arg_count == 1: # 仅传1个参数的操作b逻辑 await ctx.send("仅传入1个参数,执行操作b") # 保留原有通用命令错误的处理逻辑 elif isinstance(error, commands.CommandError): # 原有通用错误处理代码 await ctx.send("命令执行出错")
补充说明
- 如果需要获取已经传入的参数值,可直接从
ctx.args列表读取,非Cog场景下第一个传入参数对应ctx.args[1] - 其他特殊错误类型也可以按照相同的格式新增分支处理
内容的提问来源于stack exchange,提问作者TrueVulpis
相关产品推荐
相关产品推荐

