繁体   English   中英

Discord 机器人异步/等待错误处理

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM