优化代码格式和异常处理
- 修复异常处理链,使用from语法保留原始异常 - 格式化代码以符合项目规范 - 优化导入模块的顺序 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
from dataclasses import dataclass, asdict
|
||||
from typing import List, Optional, Union, Dict
|
||||
|
||||
|
||||
@dataclass
|
||||
class Seg:
|
||||
"""消息片段类,用于表示消息的不同部分
|
||||
|
||||
|
||||
Attributes:
|
||||
type: 片段类型,可以是 'text'、'image'、'seglist' 等
|
||||
data: 片段的具体内容
|
||||
@@ -13,40 +14,39 @@ class Seg:
|
||||
- 对于 seglist 类型,data 是 Seg 列表
|
||||
translated_data: 经过翻译处理的数据(可选)
|
||||
"""
|
||||
|
||||
type: str
|
||||
data: Union[str, List['Seg']]
|
||||
|
||||
data: Union[str, List["Seg"]]
|
||||
|
||||
# def __init__(self, type: str, data: Union[str, List['Seg']],):
|
||||
# """初始化实例,确保字典和属性同步"""
|
||||
# # 先初始化字典
|
||||
# self.type = type
|
||||
# self.data = data
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, data: Dict) -> 'Seg':
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, data: Dict) -> "Seg":
|
||||
"""从字典创建Seg实例"""
|
||||
type=data.get('type')
|
||||
data=data.get('data')
|
||||
if type == 'seglist':
|
||||
type = data.get("type")
|
||||
data = data.get("data")
|
||||
if type == "seglist":
|
||||
data = [Seg.from_dict(seg) for seg in data]
|
||||
return cls(
|
||||
type=type,
|
||||
data=data
|
||||
)
|
||||
return cls(type=type, data=data)
|
||||
|
||||
def to_dict(self) -> Dict:
|
||||
"""转换为字典格式"""
|
||||
result = {'type': self.type}
|
||||
if self.type == 'seglist':
|
||||
result['data'] = [seg.to_dict() for seg in self.data]
|
||||
result = {"type": self.type}
|
||||
if self.type == "seglist":
|
||||
result["data"] = [seg.to_dict() for seg in self.data]
|
||||
else:
|
||||
result['data'] = self.data
|
||||
result["data"] = self.data
|
||||
return result
|
||||
|
||||
|
||||
@dataclass
|
||||
class GroupInfo:
|
||||
"""群组信息类"""
|
||||
|
||||
platform: Optional[str] = None
|
||||
group_id: Optional[int] = None
|
||||
group_name: Optional[str] = None # 群名称
|
||||
@@ -54,28 +54,28 @@ class GroupInfo:
|
||||
def to_dict(self) -> Dict:
|
||||
"""转换为字典格式"""
|
||||
return {k: v for k, v in asdict(self).items() if v is not None}
|
||||
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, data: Dict) -> 'GroupInfo':
|
||||
def from_dict(cls, data: Dict) -> "GroupInfo":
|
||||
"""从字典创建GroupInfo实例
|
||||
|
||||
|
||||
Args:
|
||||
data: 包含必要字段的字典
|
||||
|
||||
|
||||
Returns:
|
||||
GroupInfo: 新的实例
|
||||
"""
|
||||
if data.get('group_id') is None:
|
||||
if data.get("group_id") is None:
|
||||
return None
|
||||
return cls(
|
||||
platform=data.get('platform'),
|
||||
group_id=data.get('group_id'),
|
||||
group_name=data.get('group_name',None)
|
||||
platform=data.get("platform"), group_id=data.get("group_id"), group_name=data.get("group_name", None)
|
||||
)
|
||||
|
||||
|
||||
@dataclass
|
||||
class UserInfo:
|
||||
"""用户信息类"""
|
||||
|
||||
platform: Optional[str] = None
|
||||
user_id: Optional[int] = None
|
||||
user_nickname: Optional[str] = None # 用户昵称
|
||||
@@ -84,29 +84,31 @@ class UserInfo:
|
||||
def to_dict(self) -> Dict:
|
||||
"""转换为字典格式"""
|
||||
return {k: v for k, v in asdict(self).items() if v is not None}
|
||||
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, data: Dict) -> 'UserInfo':
|
||||
def from_dict(cls, data: Dict) -> "UserInfo":
|
||||
"""从字典创建UserInfo实例
|
||||
|
||||
|
||||
Args:
|
||||
data: 包含必要字段的字典
|
||||
|
||||
|
||||
Returns:
|
||||
UserInfo: 新的实例
|
||||
"""
|
||||
return cls(
|
||||
platform=data.get('platform'),
|
||||
user_id=data.get('user_id'),
|
||||
user_nickname=data.get('user_nickname',None),
|
||||
user_cardname=data.get('user_cardname',None)
|
||||
platform=data.get("platform"),
|
||||
user_id=data.get("user_id"),
|
||||
user_nickname=data.get("user_nickname", None),
|
||||
user_cardname=data.get("user_cardname", None),
|
||||
)
|
||||
|
||||
|
||||
@dataclass
|
||||
class BaseMessageInfo:
|
||||
"""消息信息类"""
|
||||
|
||||
platform: Optional[str] = None
|
||||
message_id: Union[str,int,None] = None
|
||||
message_id: Union[str, int, None] = None
|
||||
time: Optional[int] = None
|
||||
group_info: Optional[GroupInfo] = None
|
||||
user_info: Optional[UserInfo] = None
|
||||
@@ -121,68 +123,61 @@ class BaseMessageInfo:
|
||||
else:
|
||||
result[field] = value
|
||||
return result
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, data: Dict) -> 'BaseMessageInfo':
|
||||
def from_dict(cls, data: Dict) -> "BaseMessageInfo":
|
||||
"""从字典创建BaseMessageInfo实例
|
||||
|
||||
|
||||
Args:
|
||||
data: 包含必要字段的字典
|
||||
|
||||
|
||||
Returns:
|
||||
BaseMessageInfo: 新的实例
|
||||
"""
|
||||
group_info = GroupInfo.from_dict(data.get('group_info', {}))
|
||||
user_info = UserInfo.from_dict(data.get('user_info', {}))
|
||||
group_info = GroupInfo.from_dict(data.get("group_info", {}))
|
||||
user_info = UserInfo.from_dict(data.get("user_info", {}))
|
||||
return cls(
|
||||
platform=data.get('platform'),
|
||||
message_id=data.get('message_id'),
|
||||
time=data.get('time'),
|
||||
platform=data.get("platform"),
|
||||
message_id=data.get("message_id"),
|
||||
time=data.get("time"),
|
||||
group_info=group_info,
|
||||
user_info=user_info
|
||||
user_info=user_info,
|
||||
)
|
||||
|
||||
|
||||
@dataclass
|
||||
class MessageBase:
|
||||
"""消息类"""
|
||||
|
||||
message_info: BaseMessageInfo
|
||||
message_segment: Seg
|
||||
raw_message: Optional[str] = None # 原始消息,包含未解析的cq码
|
||||
|
||||
def to_dict(self) -> Dict:
|
||||
"""转换为字典格式
|
||||
|
||||
|
||||
Returns:
|
||||
Dict: 包含所有非None字段的字典,其中:
|
||||
- message_info: 转换为字典格式
|
||||
- message_segment: 转换为字典格式
|
||||
- raw_message: 如果存在则包含
|
||||
"""
|
||||
result = {
|
||||
'message_info': self.message_info.to_dict(),
|
||||
'message_segment': self.message_segment.to_dict()
|
||||
}
|
||||
result = {"message_info": self.message_info.to_dict(), "message_segment": self.message_segment.to_dict()}
|
||||
if self.raw_message is not None:
|
||||
result['raw_message'] = self.raw_message
|
||||
result["raw_message"] = self.raw_message
|
||||
return result
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, data: Dict) -> 'MessageBase':
|
||||
def from_dict(cls, data: Dict) -> "MessageBase":
|
||||
"""从字典创建MessageBase实例
|
||||
|
||||
|
||||
Args:
|
||||
data: 包含必要字段的字典
|
||||
|
||||
|
||||
Returns:
|
||||
MessageBase: 新的实例
|
||||
"""
|
||||
message_info = BaseMessageInfo.from_dict(data.get('message_info', {}))
|
||||
message_segment = Seg(**data.get('message_segment', {}))
|
||||
raw_message = data.get('raw_message',None)
|
||||
return cls(
|
||||
message_info=message_info,
|
||||
message_segment=message_segment,
|
||||
raw_message=raw_message
|
||||
)
|
||||
|
||||
|
||||
|
||||
message_info = BaseMessageInfo.from_dict(data.get("message_info", {}))
|
||||
message_segment = Seg(**data.get("message_segment", {}))
|
||||
raw_message = data.get("raw_message", None)
|
||||
return cls(message_info=message_info, message_segment=message_segment, raw_message=raw_message)
|
||||
|
||||
Reference in New Issue
Block a user