我有一个异步函数,它需要一个字符串用户和一个字符串消息当用户键入开始时,它会提出一个问题并休眠并等待答案。有时在 6 个问题之后,
await.sleep(10)
停止工作并打印超时函数的答案,而实际上没有等待 10 秒。我不知道是什么原因造成的。无论用户输入多少次开始提出问题,我都希望它等待。
class MyBot:
def __init__(self):
self.state = 'waiting_for_start'
self.question = ''
self.answer = ''
async def on_message(self, user, message):
if self.state == 'waiting_for_start':
if message == 'start':
# gets question/answer
self.question = 'What is the capital of France?'
self.answer = 'Paris'
# ask question
await self.send_message(self.question)
self.state = 'waiting_for_answer'
asyncio.create_task(self.timeout())
elif self.state == 'waiting_for_answer':
if message == self.answer:
# says congrats and awards user points
await self.send_message(f'Congratulations {user}! You have earned 10 points.')
self.reset()
else:
# continue waiting for answer
pass
async def timeout(self):
await asyncio.sleep(10)
if self.state == 'waiting_for_answer':
# prints times up and displays answer
await self.send_message(f'Time\'s up! The answer was {self.answer}.')
self.reset()
def reset(self):
# resets question/answer
self.question = ''
self.answer = ''
self.state = 'waiting_for_start'
我希望
await asyncio.sleep(10)
在几个问题后继续工作,而不是直接跳到答案