使用wait_for进行用户身份验证的条件语句

时间:2020-07-20 00:59:48

标签: discord discord.py discord.py-rewrite

我正在尝试创建一个类似于“关守”的功能,在该功能中,我必须批准或拒绝某些东西。

def confirm(m):
    return m.author == 'my id' m.content == 'confirm' or m.content == 'Confirm'

def deny(m)
    return m.author == 'my id' and m.content == 'deny' or m.content == 'Deny'

auth = await self.bot.wait_for('message', check=confirm)
deauth = await self.bot.wait_for('message', check=deny)

await target.send("```ini\n[Authenticated.]```".format(auth))
await target.send("```ini\n[Denied.]```.format(deauth)"

这里的问题很简单,就是我不确定如何在函数中创建if else语句。

可能的解决方案

  • 我假设if else语句是将确认和拒绝功能混为一谈的产物?
  • 查看API参考后,我看到wait_for接受了以下参数:event, *, check=None, timeout=None
  • 我假设可以完成的工作是使用try:和类似asyncio.CancelledError的异常

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您需要创建一张检查这些消息中的任何一条的支票。然后,wait_for返回消息后,您可以检查其内容

def confirm_or_deny(m):
    return m.author.id == id  and m.content.lower() in ['confirm', 'deny']

msg = await self.bot.wait_for('message', check=deny)

if msg.content.lower() == 'confirm':
    ...
else:
    ...