mirror of https://github.com/Mai-with-u/MaiBot.git
158 lines
4.4 KiB
Python
158 lines
4.4 KiB
Python
from typing import Dict, Optional, Any
|
||
from dataclasses import dataclass
|
||
from .info_base import InfoBase
|
||
|
||
|
||
@dataclass
|
||
class CycleInfo(InfoBase):
|
||
"""循环信息类
|
||
|
||
用于记录和管理心跳循环的相关信息,包括循环ID、时间信息、动作信息等。
|
||
继承自 InfoBase 类,使用字典存储具体数据。
|
||
|
||
Attributes:
|
||
type (str): 信息类型标识符,固定为 "cycle"
|
||
|
||
Data Fields:
|
||
cycle_id (str): 当前循环的唯一标识符
|
||
start_time (str): 循环开始的时间
|
||
end_time (str): 循环结束的时间
|
||
action (str): 在循环中采取的动作
|
||
action_data (Dict[str, Any]): 动作相关的详细数据
|
||
reason (str): 触发循环的原因
|
||
observe_info (str): 当前的回复信息
|
||
"""
|
||
|
||
type: str = "cycle"
|
||
|
||
def get_type(self) -> str:
|
||
"""获取信息类型"""
|
||
return self.type
|
||
|
||
def get_data(self) -> Dict[str, str]:
|
||
"""获取信息数据"""
|
||
return self.data
|
||
|
||
def get_info(self, key: str) -> Optional[str]:
|
||
"""获取特定属性的信息
|
||
|
||
Args:
|
||
key: 要获取的属性键名
|
||
|
||
Returns:
|
||
属性值,如果键不存在则返回 None
|
||
"""
|
||
return self.data.get(key)
|
||
|
||
def set_cycle_id(self, cycle_id: str) -> None:
|
||
"""设置循环ID
|
||
|
||
Args:
|
||
cycle_id (str): 循环的唯一标识符
|
||
"""
|
||
self.data["cycle_id"] = cycle_id
|
||
|
||
def set_start_time(self, start_time: str) -> None:
|
||
"""设置开始时间
|
||
|
||
Args:
|
||
start_time (str): 循环开始的时间,建议使用标准时间格式
|
||
"""
|
||
self.data["start_time"] = start_time
|
||
|
||
def set_end_time(self, end_time: str) -> None:
|
||
"""设置结束时间
|
||
|
||
Args:
|
||
end_time (str): 循环结束的时间,建议使用标准时间格式
|
||
"""
|
||
self.data["end_time"] = end_time
|
||
|
||
def set_action(self, action: str) -> None:
|
||
"""设置采取的动作
|
||
|
||
Args:
|
||
action (str): 在循环中执行的动作名称
|
||
"""
|
||
self.data["action"] = action
|
||
|
||
def set_action_data(self, action_data: Dict[str, Any]) -> None:
|
||
"""设置动作数据
|
||
|
||
Args:
|
||
action_data (Dict[str, Any]): 动作相关的详细数据,将被转换为字符串存储
|
||
"""
|
||
self.data["action_data"] = str(action_data)
|
||
|
||
def set_reason(self, reason: str) -> None:
|
||
"""设置原因
|
||
|
||
Args:
|
||
reason (str): 触发循环的原因说明
|
||
"""
|
||
self.data["reason"] = reason
|
||
|
||
def set_observe_info(self, observe_info: str) -> None:
|
||
"""设置回复信息
|
||
|
||
Args:
|
||
observe_info (str): 当前的回复信息
|
||
"""
|
||
self.data["observe_info"] = observe_info
|
||
|
||
def get_cycle_id(self) -> Optional[str]:
|
||
"""获取循环ID
|
||
|
||
Returns:
|
||
Optional[str]: 循环的唯一标识符,如果未设置则返回 None
|
||
"""
|
||
return self.get_info("cycle_id")
|
||
|
||
def get_start_time(self) -> Optional[str]:
|
||
"""获取开始时间
|
||
|
||
Returns:
|
||
Optional[str]: 循环开始的时间,如果未设置则返回 None
|
||
"""
|
||
return self.get_info("start_time")
|
||
|
||
def get_end_time(self) -> Optional[str]:
|
||
"""获取结束时间
|
||
|
||
Returns:
|
||
Optional[str]: 循环结束的时间,如果未设置则返回 None
|
||
"""
|
||
return self.get_info("end_time")
|
||
|
||
def get_action(self) -> Optional[str]:
|
||
"""获取采取的动作
|
||
|
||
Returns:
|
||
Optional[str]: 在循环中执行的动作名称,如果未设置则返回 None
|
||
"""
|
||
return self.get_info("action")
|
||
|
||
def get_action_data(self) -> Optional[str]:
|
||
"""获取动作数据
|
||
|
||
Returns:
|
||
Optional[str]: 动作相关的详细数据(字符串形式),如果未设置则返回 None
|
||
"""
|
||
return self.get_info("action_data")
|
||
|
||
def get_reason(self) -> Optional[str]:
|
||
"""获取原因
|
||
|
||
Returns:
|
||
Optional[str]: 触发循环的原因说明,如果未设置则返回 None
|
||
"""
|
||
return self.get_info("reason")
|
||
|
||
def get_observe_info(self) -> Optional[str]:
|
||
"""获取回复信息
|
||
|
||
Returns:
|
||
Optional[str]: 当前的回复信息,如果未设置则返回 None
|
||
"""
|
||
return self.get_info("observe_info")
|