mirror of https://github.com/Mai-with-u/MaiBot.git
86 lines
2.3 KiB
Python
86 lines
2.3 KiB
Python
from typing import Dict, Optional, Any, List
|
|
from dataclasses import dataclass, field
|
|
|
|
|
|
@dataclass
|
|
class StructuredInfo:
|
|
"""信息基类
|
|
|
|
这是一个基础信息类,用于存储和管理各种类型的信息数据。
|
|
所有具体的信息类都应该继承自这个基类。
|
|
|
|
Attributes:
|
|
type (str): 信息类型标识符,默认为 "base"
|
|
data (Dict[str, Union[str, Dict, list]]): 存储具体信息数据的字典,
|
|
支持存储字符串、字典、列表等嵌套数据结构
|
|
"""
|
|
|
|
type: str = "structured_info"
|
|
data: Dict[str, Any] = field(default_factory=dict)
|
|
|
|
def get_type(self) -> str:
|
|
"""获取信息类型
|
|
|
|
Returns:
|
|
str: 当前信息对象的类型标识符
|
|
"""
|
|
return self.type
|
|
|
|
def get_data(self) -> Dict[str, Any]:
|
|
"""获取所有信息数据
|
|
|
|
Returns:
|
|
Dict[str, Any]: 包含所有信息数据的字典
|
|
"""
|
|
return self.data
|
|
|
|
def get_info(self, key: str) -> Optional[Any]:
|
|
"""获取特定属性的信息
|
|
|
|
Args:
|
|
key: 要获取的属性键名
|
|
|
|
Returns:
|
|
Optional[Any]: 属性值,如果键不存在则返回 None
|
|
"""
|
|
return self.data.get(key)
|
|
|
|
def get_info_list(self, key: str) -> List[Any]:
|
|
"""获取特定属性的信息列表
|
|
|
|
Args:
|
|
key: 要获取的属性键名
|
|
|
|
Returns:
|
|
List[Any]: 属性值列表,如果键不存在则返回空列表
|
|
"""
|
|
value = self.data.get(key)
|
|
if isinstance(value, list):
|
|
return value
|
|
return []
|
|
|
|
def set_info(self, key: str, value: Any) -> None:
|
|
"""设置特定属性的信息值
|
|
|
|
Args:
|
|
key: 要设置的属性键名
|
|
value: 要设置的属性值
|
|
"""
|
|
self.data[key] = value
|
|
|
|
def get_processed_info(self) -> str:
|
|
"""获取处理后的信息
|
|
|
|
Returns:
|
|
str: 处理后的信息字符串
|
|
"""
|
|
|
|
info_str = ""
|
|
# print(f"self.data: {self.data}")
|
|
|
|
for key, value in self.data.items():
|
|
# print(f"key: {key}, value: {value}")
|
|
info_str += f"信息类型:{key},信息内容:{value}\n"
|
|
|
|
return info_str
|