from dataclasses import dataclass from typing import Dict, Any, Optional from datetime import datetime from event_system.event_manager import Event @dataclass class PluginCallStartEvent(Event): """插件调用开始事件""" plugin_name: str # 插件名称 command: str # 触发的命令 full_command: str # 完整命令内容 user_id: str # 用户ID group_id: Optional[str] = None # 群组ID,私聊为None is_group: bool = False # 是否群聊 message: Dict[str, Any] = None # 原始消息内容 timestamp: datetime = None # 事件时间戳 def __post_init__(self): if self.timestamp is None: self.timestamp = datetime.now() @dataclass class PluginCallEndEvent(Event): """插件调用结束事件""" plugin_name: str # 插件名称 command: str # 触发的命令 user_id: str # 用户ID group_id: Optional[str] = None # 群组ID,私聊为None is_group: bool = False # 是否群聊 process_result: bool = True # 处理结果:True成功,False失败 result_message: Optional[str] = None # 处理结果消息 process_time: int = 0 # 处理耗时(毫秒) timestamp: datetime = None # 事件时间戳 def __post_init__(self): if self.timestamp is None: self.timestamp = datetime.now() @dataclass class PluginCallErrorEvent(Event): """插件调用错误事件""" plugin_name: str # 插件名称 command: str # 触发的命令 user_id: str # 用户ID group_id: Optional[str] # 群组ID,私聊为None is_group: bool # 是否群聊 error_message: str # 错误信息 stack_trace: Optional[str] = None # 堆栈跟踪 process_time: int = 0 # 处理耗时(毫秒) timestamp: datetime = None # 事件时间戳 def __post_init__(self): if self.timestamp is None: self.timestamp = datetime.now()