mirror of https://github.com/Mai-with-u/MaiBot.git
116 lines
3.3 KiB
Python
116 lines
3.3 KiB
Python
from typing import Dict, Optional
|
||
from dataclasses import dataclass
|
||
from .info_base import InfoBase
|
||
|
||
|
||
@dataclass
|
||
class ObsInfo(InfoBase):
|
||
"""OBS信息类
|
||
|
||
用于记录和管理OBS相关的信息,包括说话消息、截断后的说话消息和聊天类型。
|
||
继承自 InfoBase 类,使用字典存储具体数据。
|
||
|
||
Attributes:
|
||
type (str): 信息类型标识符,固定为 "obs"
|
||
|
||
Data Fields:
|
||
talking_message (str): 说话消息内容
|
||
talking_message_str_truncate (str): 截断后的说话消息内容
|
||
chat_type (str): 聊天类型,可以是 "private"(私聊)、"group"(群聊)或 "other"(其他)
|
||
"""
|
||
|
||
type: str = "obs"
|
||
|
||
def set_talking_message(self, message: str) -> None:
|
||
"""设置说话消息
|
||
|
||
Args:
|
||
message (str): 说话消息内容
|
||
"""
|
||
self.data["talking_message"] = message
|
||
|
||
def set_talking_message_str_truncate(self, message: str) -> None:
|
||
"""设置截断后的说话消息
|
||
|
||
Args:
|
||
message (str): 截断后的说话消息内容
|
||
"""
|
||
self.data["talking_message_str_truncate"] = message
|
||
|
||
def set_previous_chat_info(self, message: str) -> None:
|
||
"""设置之前聊天信息
|
||
|
||
Args:
|
||
message (str): 之前聊天信息内容
|
||
"""
|
||
self.data["previous_chat_info"] = message
|
||
|
||
def set_chat_type(self, chat_type: str) -> None:
|
||
"""设置聊天类型
|
||
|
||
Args:
|
||
chat_type (str): 聊天类型,可以是 "private"(私聊)、"group"(群聊)或 "other"(其他)
|
||
"""
|
||
if chat_type not in ["private", "group", "other"]:
|
||
chat_type = "other"
|
||
self.data["chat_type"] = chat_type
|
||
|
||
def set_chat_target(self, chat_target: str) -> None:
|
||
"""设置聊天目标
|
||
|
||
Args:
|
||
chat_target (str): 聊天目标,可以是 "private"(私聊)、"group"(群聊)或 "other"(其他)
|
||
"""
|
||
self.data["chat_target"] = chat_target
|
||
|
||
def get_talking_message(self) -> Optional[str]:
|
||
"""获取说话消息
|
||
|
||
Returns:
|
||
Optional[str]: 说话消息内容,如果未设置则返回 None
|
||
"""
|
||
return self.get_info("talking_message")
|
||
|
||
def get_talking_message_str_truncate(self) -> Optional[str]:
|
||
"""获取截断后的说话消息
|
||
|
||
Returns:
|
||
Optional[str]: 截断后的说话消息内容,如果未设置则返回 None
|
||
"""
|
||
return self.get_info("talking_message_str_truncate")
|
||
|
||
def get_chat_type(self) -> str:
|
||
"""获取聊天类型
|
||
|
||
Returns:
|
||
str: 聊天类型,默认为 "other"
|
||
"""
|
||
return self.get_info("chat_type") or "other"
|
||
|
||
def get_type(self) -> str:
|
||
"""获取信息类型
|
||
|
||
Returns:
|
||
str: 当前信息对象的类型标识符
|
||
"""
|
||
return self.type
|
||
|
||
def get_data(self) -> Dict[str, str]:
|
||
"""获取所有信息数据
|
||
|
||
Returns:
|
||
Dict[str, str]: 包含所有信息数据的字典
|
||
"""
|
||
return self.data
|
||
|
||
def get_info(self, key: str) -> Optional[str]:
|
||
"""获取特定属性的信息
|
||
|
||
Args:
|
||
key: 要获取的属性键名
|
||
|
||
Returns:
|
||
Optional[str]: 属性值,如果键不存在则返回 None
|
||
"""
|
||
return self.data.get(key)
|