From 748836df23cb0159dffe7e71b3ce8129a6d2cb8a Mon Sep 17 00:00:00 2001 From: InfinityPacer <160988576+InfinityPacer@users.noreply.github.com> Date: Sun, 22 Sep 2024 01:36:26 +0800 Subject: [PATCH] fix(event): restore missing method removed in be63e9ed --- app/core/event.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/app/core/event.py b/app/core/event.py index 5db4b409..ffa54ec3 100644 --- a/app/core/event.py +++ b/app/core/event.py @@ -105,15 +105,24 @@ class EventManager(metaclass=Singleton): except Exception as e: logger.error(f"停止事件处理线程出错:{str(e)} - {traceback.format_exc()}") - def check(self, etype: EventType): + def check(self, etype: Union[EventType, ChainEventType]) -> bool: """ - 检查事件是否存在响应,去除掉被禁用的事件响应 + 检查是否有启用的事件处理器可以响应某个事件类型 + :param etype: 事件类型 (EventType 或 ChainEventType) + :return: 返回是否存在可用的处理器 """ - if etype not in self.__broadcast_subscribers: - return False - handlers = self.__broadcast_subscribers[etype] - return any([handler for handler in handlers.values() - if handler.__qualname__.split(".")[0] not in self.__disabled_handlers]) + if isinstance(etype, ChainEventType): + handlers = self.__chain_subscribers.get(etype, []) + return any( + self.__is_handler_enabled(handler) + for _, handler in handlers + ) + else: + handlers = self.__broadcast_subscribers.get(etype, []) + return any( + self.__is_handler_enabled(handler) + for handler in handlers + ) def send_event(self, etype: Union[EventType, ChainEventType], data: Optional[Dict] = None, priority: int = DEFAULT_EVENT_PRIORITY) -> Optional[Event]: