discord bot (python) 如何使用 wait_for 等待消息或反应

时间:2021-05-25 14:14:41

标签: python discord discord.py

我正在为我的不和谐机器人制作一种琐事命令,其中用户会随机获得一个缺少字母的单词,他们必须猜测该单词是什么才能获胜。

不过,我也想对机器人的琐事消息做出反应,用户可以按下它立即显示单词是什么,以便他们可以输入并获胜。

我基本上要寻找的是一种使用 wait_for 协程来等待反应的方法,该反应将显示单词和提示获胜者的消息。 (反应的使用是可选的,因此并不总是保证可以使用而不只是猜测单词)。

这是我目前所拥有的。


        wordChosen = random.choice(randomWords)

        def check(m): # Checks if the user entered the correct word.
            if m.content.lower() != wordChosen:
                return False
            elif m.channel != channel:
                return False
            else: # User met the requirements.
                return True


        try:
            msg = await self.client.wait_for(
                "message",
                timeout=60,
                check=check
            )
        except:
            asyncio.TimeoutError
            await wordMessage.edit(content=f"You guys took too long!. The word was {wordChosen}.")
        else:
            if msg:
               await msg.channel.send(f"{msg.author.mention} guessed the word!")

1 个答案:

答案 0 :(得分:0)

except 部分之后,您应该放置 asyncio.TimeoutError。而不是将它放在 : 之后。

意思是:

except asyncio.TimeoutError:
            await wordMessage.edit(content=f"You guys took too long!. The word was {wordChosen}.")