Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox_Bot into dev
This commit is contained in:
@@ -37,7 +37,7 @@ class EventManager:
|
|||||||
return
|
return
|
||||||
|
|
||||||
self._events: dict[str, BaseEvent] = {}
|
self._events: dict[str, BaseEvent] = {}
|
||||||
self._event_handlers: dict[str, type[BaseEventHandler]] = {}
|
self._event_handlers: dict[str, BaseEventHandler] = {}
|
||||||
self._pending_subscriptions: dict[str, list[str]] = {} # 缓存失败的订阅
|
self._pending_subscriptions: dict[str, list[str]] = {} # 缓存失败的订阅
|
||||||
self._scheduler_callback: Any | None = None # scheduler 回调函数
|
self._scheduler_callback: Any | None = None # scheduler 回调函数
|
||||||
self._initialized = True
|
self._initialized = True
|
||||||
@@ -62,16 +62,17 @@ class EventManager:
|
|||||||
allowed_triggers = []
|
allowed_triggers = []
|
||||||
if allowed_subscribers is None:
|
if allowed_subscribers is None:
|
||||||
allowed_subscribers = []
|
allowed_subscribers = []
|
||||||
if event_name in self._events:
|
_event_name = event_name.value if isinstance(event_name, EventType) else event_name
|
||||||
logger.warning(f"事件 {event_name} 已存在,跳过注册")
|
if _event_name in self._events:
|
||||||
|
logger.warning(f"事件 {_event_name} 已存在,跳过注册")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
event = BaseEvent(event_name, allowed_subscribers, allowed_triggers)
|
event = BaseEvent(_event_name, allowed_subscribers, allowed_triggers)
|
||||||
self._events[event_name] = event
|
self._events[_event_name] = event
|
||||||
logger.debug(f"事件 {event_name} 注册成功")
|
logger.debug(f"事件 {_event_name} 注册成功")
|
||||||
|
|
||||||
# 检查是否有缓存的订阅需要处理
|
# 检查是否有缓存的订阅需要处理
|
||||||
self._process_pending_subscriptions(event_name)
|
self._process_pending_subscriptions(_event_name)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@@ -84,7 +85,8 @@ class EventManager:
|
|||||||
Returns:
|
Returns:
|
||||||
BaseEvent: 事件实例,不存在返回None
|
BaseEvent: 事件实例,不存在返回None
|
||||||
"""
|
"""
|
||||||
return self._events.get(event_name)
|
_event_name = event_name.value if isinstance(event_name, EventType) else event_name
|
||||||
|
return self._events.get(_event_name)
|
||||||
|
|
||||||
def get_all_events(self) -> dict[str, BaseEvent]:
|
def get_all_events(self) -> dict[str, BaseEvent]:
|
||||||
"""获取所有已注册的事件
|
"""获取所有已注册的事件
|
||||||
@@ -175,10 +177,11 @@ class EventManager:
|
|||||||
|
|
||||||
# 处理init_subscribe,缓存失败的订阅
|
# 处理init_subscribe,缓存失败的订阅
|
||||||
if self._event_handlers[handler_name].init_subscribe:
|
if self._event_handlers[handler_name].init_subscribe:
|
||||||
failed_subscriptions = [
|
failed_subscriptions: list[str] = []
|
||||||
event_name for event_name in self._event_handlers[handler_name].init_subscribe
|
for event_name in self._event_handlers[handler_name].init_subscribe:
|
||||||
if not self.subscribe_handler_to_event(handler_name, event_name)
|
if not self.subscribe_handler_to_event(handler_name, event_name):
|
||||||
]
|
_event_name = event_name.value if isinstance(event_name, EventType) else event_name
|
||||||
|
failed_subscriptions.append(_event_name)
|
||||||
|
|
||||||
# 缓存失败的订阅
|
# 缓存失败的订阅
|
||||||
if failed_subscriptions:
|
if failed_subscriptions:
|
||||||
@@ -188,22 +191,22 @@ class EventManager:
|
|||||||
logger.info(f"事件处理器 {handler_name} 注册成功")
|
logger.info(f"事件处理器 {handler_name} 注册成功")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def get_event_handler(self, handler_name: str) -> type[BaseEventHandler] | None:
|
def get_event_handler(self, handler_name: str) -> BaseEventHandler | None:
|
||||||
"""获取指定事件处理器实例
|
"""获取指定事件处理器实例
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
handler_name (str): 处理器名称
|
handler_name (str): 处理器名称
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Type[BaseEventHandler]: 处理器实例,不存在返回None
|
BaseEventHandler: 处理器实例,不存在返回None
|
||||||
"""
|
"""
|
||||||
return self._event_handlers.get(handler_name)
|
return self._event_handlers.get(handler_name)
|
||||||
|
|
||||||
def get_all_event_handlers(self) -> dict[str, type[BaseEventHandler]]:
|
def get_all_event_handlers(self) -> dict[str, BaseEventHandler]:
|
||||||
"""获取所有已注册的事件处理器
|
"""获取所有已注册的事件处理器
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Dict[str, Type[BaseEventHandler]]: 所有处理器的字典
|
Dict[str, BaseEventHandler]: 所有处理器的字典
|
||||||
"""
|
"""
|
||||||
return self._event_handlers.copy()
|
return self._event_handlers.copy()
|
||||||
|
|
||||||
@@ -383,7 +386,7 @@ class EventManager:
|
|||||||
"pending_subscriptions": len(self._pending_subscriptions),
|
"pending_subscriptions": len(self._pending_subscriptions),
|
||||||
}
|
}
|
||||||
|
|
||||||
def _process_pending_subscriptions(self, event_name: EventType | str) -> None:
|
def _process_pending_subscriptions(self, event_name: str) -> None:
|
||||||
"""处理指定事件的缓存订阅
|
"""处理指定事件的缓存订阅
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
|||||||
Reference in New Issue
Block a user