有一个命令将需要清理的消息数量作为函数的参数,当传递错误类型的参数时,例如输入命令时,如何处理错误!clear @User?我试过这个,它不起作用:
@Bot.command(pass_context = True)
@commands.has_permissions(administrator = True)
async def clear(ctx, amount = 10):
try:
if amount <= 10:
now = "Done"
elif amount <= 50:
now = "Thats all?"
elif amount >= 90:
now = "Big clear, buddy"
elif amount >= 50:
now = "Good cleaning"
cln = discord.Embed(title = f'Messages cleared: {amount}. {now}', color= 0xFF3861)
await ctx.channel.purge(limit = amount)
await ctx.send(embed = cln)
except:
print("Do something")
发生该错误是因为 discord.py 看到 for 的标准值
amount是一个整数,并且在没有任何警告的情况下独立地尝试在函数体开始执行之前将任何参数转换为整数。解决方案是将默认值设置为函数体内已经存在的数字:好吧,关于为什么错误出现在您的代码中:在 python 中,该块
except必然需要正在处理的异常类型。如果需要处理任何异常,则将该类指定为Exception所有异常类的父类(可能不是第一代,但仍然是)。也就是说,不是第一个块中的示例,而是第二个块中的示例是正确的:
像这样写:
所以你指明这个变量只能保存数字(如果不指定数字,那么控制台会看到如下错误:BadArgument),然后写结构
try: ... except BadArgument: ...或者你也可以这样写: