mirror of https://github.com/Mai-with-u/MaiBot.git
代码规范
parent
316a2b6567
commit
cd9223ac63
|
|
@ -1,5 +1,7 @@
|
||||||
from typing import List, Dict, Any, Optional
|
from typing import List, Dict, Any, Optional
|
||||||
import asyncio
|
from src.common.logger import get_logger
|
||||||
|
|
||||||
|
logger = get_logger("base_event")
|
||||||
|
|
||||||
class HandlerResult:
|
class HandlerResult:
|
||||||
"""事件处理器执行结果
|
"""事件处理器执行结果
|
||||||
|
|
@ -87,24 +89,20 @@ class BaseEvent:
|
||||||
return HandlerResultsCollection([])
|
return HandlerResultsCollection([])
|
||||||
|
|
||||||
# 按权重从高到低排序订阅者
|
# 按权重从高到低排序订阅者
|
||||||
sorted_subscribers = sorted(self.subscribers, key=lambda h: getattr(h, 'weight', 0), reverse=True)
|
# 使用直接属性访问,-1代表自动权重
|
||||||
|
sorted_subscribers = sorted(self.subscribers, key=lambda h: h.weight if hasattr(h, 'weight') and h.weight != -1 else 0, reverse=True)
|
||||||
|
|
||||||
results = []
|
results = []
|
||||||
for subscriber in sorted_subscribers:
|
for subscriber in sorted_subscribers:
|
||||||
try:
|
try:
|
||||||
result = await subscriber.execute(params)
|
result = await subscriber.execute(params)
|
||||||
if not isinstance(result, HandlerResult):
|
if not result.handler_name:
|
||||||
# 兼容旧版本,将元组转换为HandlerResult
|
|
||||||
success, continue_process, message = result
|
|
||||||
result = HandlerResult(success, continue_process, message or "", getattr(subscriber, 'handler_name', 'unknown_handler'))
|
|
||||||
elif not result.handler_name:
|
|
||||||
# 补充handler_name
|
# 补充handler_name
|
||||||
result.handler_name = getattr(subscriber, 'handler_name', 'unknown_handler')
|
result.handler_name = subscriber.handler_name if hasattr(subscriber, 'handler_name') else subscriber.__class__.__name__
|
||||||
results.append(result)
|
results.append(result)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# 处理执行异常
|
# 处理执行异常
|
||||||
handler_name = getattr(subscriber, 'handler_name', str(subscriber))
|
handler_name = subscriber.handler_name if hasattr(subscriber, 'handler_name') else subscriber.__class__.__name__
|
||||||
logger = __import__('src.common.logger', fromlist=['get_logger']).get_logger("base_event")
|
|
||||||
logger.error(f"事件处理器 {handler_name} 执行失败: {e}")
|
logger.error(f"事件处理器 {handler_name} 执行失败: {e}")
|
||||||
results.append(HandlerResult(False, True, str(e), handler_name))
|
results.append(HandlerResult(False, True, str(e), handler_name))
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue