我正在用Python写一个discord机器人,它已经具有两个异步覆盖的方法on_ready和on_message以某种方式对消息做出反应。
现在我想添加一个函数,该函数应该每周调用一次。我尝试使用asyncio.sleep()进行操作,但我不想在该特定时间启动漫游器,然后休眠604.800 sec(以秒为单位的1周)以每周重复一次该功能。
这是我到目前为止所得到的:
class MyClient(discord.Client):
async def on_ready(self):
#some initial stuff
self.loop.create_task(self.routine())
async def on_message(self, message):
#reply to chat messages
await message.channel.send("Reply")
async def routine(self):
while True:
print("I'm on that routine boi")
await asyncio.sleep(3)
目前为止,我可以不协调地使用漫游器,每3秒获取一次输出。但我更希望schedule module中的内容使用[]
scheduler.every().sunday.at("8:55").do(self.routine())
是否有机会与asyncio结合使用来做类似的事情?
我正在用Python写一个discord机器人,该机器人已经具有两个异步覆盖的方法on_ready和on_message以某种方式对消息做出反应。现在我想添加一个函数,该函数应该...
事件循环提供了计划在将来某个时候调用回调函数的机制,如here in Python docs所示>>
class MyClient(discord.Client):
async def on_ready(self):
#some initial stuff
self.loop.create_task(self.routine())
async def on_message(self, message):
#reply to chat messages
await message.channel.send("Reply")
async def routine(self):
while True:
print("I'm on that routine boi")
loop.call_later(delay, callback, *args, context=None)¶
# await asyncio.sleep(3)
delay += delay + 604800