From d46ec75dcbc548110d7b7286fdc4aeb80d6ad7d3 Mon Sep 17 00:00:00 2001 From: LWR Date: Tue, 14 Feb 2023 22:22:01 +0800 Subject: [PATCH] fix: Fixed task was destroyed but it is pending (CPython #91887) --- starbot/utils/AsyncEvent.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/starbot/utils/AsyncEvent.py b/starbot/utils/AsyncEvent.py index b9b2bbf..9b41e7d 100644 --- a/starbot/utils/AsyncEvent.py +++ b/starbot/utils/AsyncEvent.py @@ -14,6 +14,7 @@ class AsyncEvent: """ __handlers: Optional[Dict] = {} + __running_tasks = set() def __init__(self): self.__handlers = {} @@ -74,7 +75,9 @@ class AsyncEvent: name = name.upper() if name in self.__handlers: for coroutine in self.__handlers[name]: - asyncio.create_task(coroutine(data)) + task = asyncio.create_task(coroutine(data)) + self.__running_tasks.add(task) + task.add_done_callback(lambda t: self.__running_tasks.remove(t)) if name != '__ALL__': self.dispatch('__ALL__', {