[英]Discord bot async/await in error handling
我对 Python 有点陌生,我一直在尝试了解异步函数的工作原理。 话虽如此,我正在尝试使用一些用户输入制作 Discord 机器人,以便机器人显示自定义嵌入。 那是容易的部分,因为现在我被困在错误处理上。 一旦机器人要求输入,我希望它回问该输入是否不正确或超出范围。
while True:
value = await bot.wait_for("message", check=check, timeout=150.0)
try:
value = int(value.content)
if value > 0 or value < 10:
raise ValueError('A very specific bad thing happened.')
else:
break
except:
ctx.reply("That's not a valid value")
我确实知道我的错误在于循环内的await
,但我不知道该怎么做。 我正在寻找的是机器人再次询问它是否不正确。 _我一直在做很多研究,但我没有发现任何与此相关的东西。 提前致谢!
ctx.reply
是一个协程,它之前应该有一个await
。
命令看起来更好的一种方法是在每次迭代后发送一条消息,以确认您的输入是否不正确,或者是其他错误。
而且你的代码中也有逻辑错误,在if
中。 每次输入大于 0 或小于 10 时,它都会引发ValueError
。这基本上是每次输入 integer 时。 并且由于每次出现错误时都会运行 except 部分,因此这是一个无限循环。
我假设您希望输入不是整数来引发“不是有效值”错误,如果您没有,您可以将except:
更改为except ValueError:
以仅在存在 ValueError 时运行。
这是我写的代码
while True:
await ctx.send("Enter a value:")
value = await self.bot.wait_for("message", check=check, timeout=150.0)
try:
value = int(value.content)
if value > 0 and value < 10:
raise ValueError('A very specific bad thing happened.')
else:
break
except:
await ctx.reply("That's not a valid value")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.