I’m trying to multitask with discord py, but I have a problem
@tasks.loop(seconds=10) async def taskLoop(ctx, something): await ctx.send(something) @client.command() async def startX(ctx, something): taskLoop.start(ctx, something) @client.command() async def endX(ctx): taskLoop.cancel() taskLoop.stop()
In discord I start the command like:
So it works, every 10 seconds the bot sends “zzzzzzzzzz”
When I try to create a new task (while the previous one is still running), for example:
I get the error:
Command raised an exception: RuntimeError: Task is already launched and is not completed.
Obviously I understand it’s because the other task is still working, but I looked in the documentation and couldn’t find a way to create multiple tasks.
Are there any solutions for this? Thread maybe?
You can’t really start the same task more than once. You can create a “task generator” which will generate and start the tasks
started_tasks =  async def task_loop(ctx, something): # the function that will "loop" await ctx.send(something) def task_generator(ctx, something): t = tasks.loop(seconds=10)(task_loop) started_tasks.append(t) t.start(ctx, something) @bot.command() async def start(ctx, something): task_generator(ctx, something) @bot.command() async def stop(ctx): for t in started_tasks: t.cancel()