So, I can’t figure out how to make my discord bot send a message 2 hours after the last message. The problem for me is that I want the bot to reset the 2 hours timer if a new message comes, but I don’t know how to do that without breaking the program. Can anyone help me out?
Advertisement
Answer
To point you in a general direction. You want something like
await asyncio.sleep(60*60*2) do_stuff
One way would be to take the above lines in a function and run them as a task in asyncio and you somewhere store it as a persitent variable.
If the command arrives you take the old task, cancel it, start a new one.
async def nested(): await asyncio.sleep(60*60*20) return 42 async def schedule(): # Schedule nested() to run soon concurrently # with "main()". bot.mytask = asyncio.create_task(nested()) # "task" can now be used to cancel "nested()", or # can simply be awaited to wait until it is complete: await bot.mytask async def cancelit(): bot.mytask.cancel() # reshedule it...