我正在为我的不和谐机器人制作一种琐事命令,其中用户会随机获得一个缺少字母的单词,他们必须猜测该单词是什么才能获胜。
不过,我也想对机器人的琐事消息做出反应,用户可以按下它立即显示单词是什么,以便他们可以输入并获胜。
我基本上要寻找的是一种使用 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!")
答案 0 :(得分:0)
在 except
部分之后,您应该放置 asyncio.TimeoutError
。而不是将它放在 :
之后。
意思是:
except asyncio.TimeoutError:
await wordMessage.edit(content=f"You guys took too long!. The word was {wordChosen}.")