mirror of https://github.com/Mai-with-u/MaiBot.git
愚蠢的拼写错误喵
parent
abb62281c5
commit
8b7d21fa4f
|
|
@ -69,7 +69,7 @@ class BaseEvent:
|
||||||
self.enabled = True
|
self.enabled = True
|
||||||
|
|
||||||
from src.plugin_system.base.base_events_handler import BaseEventHandler
|
from src.plugin_system.base.base_events_handler import BaseEventHandler
|
||||||
self.subcribers: List["BaseEventHandler"] = [] # 订阅该事件的事件处理器列表
|
self.subscribers: List["BaseEventHandler"] = [] # 订阅该事件的事件处理器列表
|
||||||
|
|
||||||
def __name__(self):
|
def __name__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
@ -87,7 +87,7 @@ class BaseEvent:
|
||||||
return HandlerResultsCollection([])
|
return HandlerResultsCollection([])
|
||||||
|
|
||||||
# 按权重从高到低排序订阅者
|
# 按权重从高到低排序订阅者
|
||||||
sorted_subscribers = sorted(self.subcribers, key=lambda h: getattr(h, 'weight', 0), reverse=True)
|
sorted_subscribers = sorted(self.subscribers, key=lambda h: getattr(h, 'weight', 0), reverse=True)
|
||||||
|
|
||||||
results = []
|
results = []
|
||||||
for subscriber in sorted_subscribers:
|
for subscriber in sorted_subscribers:
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ class BaseEventHandler(ABC):
|
||||||
"""处理器权重,越大权重越高"""
|
"""处理器权重,越大权重越高"""
|
||||||
intercept_message: bool = False
|
intercept_message: bool = False
|
||||||
"""是否拦截消息,默认为否"""
|
"""是否拦截消息,默认为否"""
|
||||||
init_subcribe: List[str] = []
|
init_subscribe: List[str] = []
|
||||||
"""初始化时订阅的事件名称"""
|
"""初始化时订阅的事件名称"""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|
@ -43,7 +43,7 @@ class BaseEventHandler(ABC):
|
||||||
"""
|
"""
|
||||||
raise NotImplementedError("子类必须实现 execute 方法")
|
raise NotImplementedError("子类必须实现 execute 方法")
|
||||||
|
|
||||||
def subcribe(self, event_name: str) -> None:
|
def subscribe(self, event_name: str) -> None:
|
||||||
"""订阅一个事件
|
"""订阅一个事件
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
|
@ -56,7 +56,7 @@ class BaseEventHandler(ABC):
|
||||||
return
|
return
|
||||||
|
|
||||||
logger.debug(f"{self.log_prefix} 订阅事件 {event_name}")
|
logger.debug(f"{self.log_prefix} 订阅事件 {event_name}")
|
||||||
self.subcribed_events.append(event_name)
|
self.subscribed_events.append(event_name)
|
||||||
|
|
||||||
def unsubscribe(self, event_name: str) -> None:
|
def unsubscribe(self, event_name: str) -> None:
|
||||||
"""取消订阅一个事件
|
"""取消订阅一个事件
|
||||||
|
|
@ -68,8 +68,8 @@ class BaseEventHandler(ABC):
|
||||||
|
|
||||||
if event_manager.unsubscribe_handler_from_event(self.handler_name, event_name):
|
if event_manager.unsubscribe_handler_from_event(self.handler_name, event_name):
|
||||||
logger.debug(f"{self.log_prefix} 取消订阅事件 {event_name}")
|
logger.debug(f"{self.log_prefix} 取消订阅事件 {event_name}")
|
||||||
if event_name in self.subcribed_events:
|
if event_name in self.subscribed_events:
|
||||||
self.subcribed_events.remove(event_name)
|
self.subscribed_events.remove(event_name)
|
||||||
else:
|
else:
|
||||||
logger.warning(f"{self.log_prefix} 未订阅事件 {event_name},无法取消订阅")
|
logger.warning(f"{self.log_prefix} 未订阅事件 {event_name},无法取消订阅")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -151,10 +151,10 @@ class EventManager:
|
||||||
|
|
||||||
self._event_handlers[handler_name] = handler_class()
|
self._event_handlers[handler_name] = handler_class()
|
||||||
|
|
||||||
# 处理init_subcribe,缓存失败的订阅
|
# 处理init_subscribe,缓存失败的订阅
|
||||||
if self._event_handlers[handler_name].init_subcribe:
|
if self._event_handlers[handler_name].init_subscribe:
|
||||||
failed_subscriptions = []
|
failed_subscriptions = []
|
||||||
for event_name in self._event_handlers[handler_name].init_subcribe:
|
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):
|
||||||
failed_subscriptions.append(event_name)
|
failed_subscriptions.append(event_name)
|
||||||
|
|
||||||
|
|
@ -205,14 +205,14 @@ class EventManager:
|
||||||
logger.error(f"事件 {event_name} 不存在,无法订阅事件处理器 {handler_name}")
|
logger.error(f"事件 {event_name} 不存在,无法订阅事件处理器 {handler_name}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if handler_instance in event.subcribers:
|
if handler_instance in event.subscribers:
|
||||||
logger.warning(f"事件处理器 {handler_name} 已经订阅了事件 {event_name},跳过重复订阅")
|
logger.warning(f"事件处理器 {handler_name} 已经订阅了事件 {event_name},跳过重复订阅")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
event.subcribers.append(handler_instance)
|
event.subscribers.append(handler_instance)
|
||||||
|
|
||||||
# 按权重从高到低排序订阅者
|
# 按权重从高到低排序订阅者
|
||||||
event.subcribers.sort(key=lambda h: getattr(h, 'weight', 0), reverse=True)
|
event.subscribers.sort(key=lambda h: getattr(h, 'weight', 0), reverse=True)
|
||||||
|
|
||||||
logger.info(f"事件处理器 {handler_name} 成功订阅到事件 {event_name},当前权重排序完成")
|
logger.info(f"事件处理器 {handler_name} 成功订阅到事件 {event_name},当前权重排序完成")
|
||||||
return True
|
return True
|
||||||
|
|
@ -234,9 +234,9 @@ class EventManager:
|
||||||
|
|
||||||
# 查找并移除处理器实例
|
# 查找并移除处理器实例
|
||||||
removed = False
|
removed = False
|
||||||
for subscriber in event.subcribers[:]:
|
for subscriber in event.subscribers[:]:
|
||||||
if hasattr(subscriber, 'handler_name') and subscriber.handler_name == handler_name:
|
if hasattr(subscriber, 'handler_name') and subscriber.handler_name == handler_name:
|
||||||
event.subcribers.remove(subscriber)
|
event.subscribers.remove(subscriber)
|
||||||
removed = True
|
removed = True
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
@ -260,7 +260,7 @@ class EventManager:
|
||||||
if event is None:
|
if event is None:
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
return {handler.handler_name: handler for handler in event.subcribers}
|
return {handler.handler_name: handler for handler in event.subscribers}
|
||||||
|
|
||||||
async def trigger_event(self, event_name: str, params: Dict[str, Any] = None) -> Optional[HandlerResultsCollection]:
|
async def trigger_event(self, event_name: str, params: Dict[str, Any] = None) -> Optional[HandlerResultsCollection]:
|
||||||
"""触发指定事件
|
"""触发指定事件
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue