mirror of https://github.com/Mai-with-u/MaiBot.git
fix:修复标题生成问题
parent
e2c40db366
commit
3f321b59c9
|
|
@ -138,6 +138,7 @@ class MessageRecv(Message):
|
||||||
|
|
||||||
这个方法必须在创建实例后显式调用,因为它包含异步操作。
|
这个方法必须在创建实例后显式调用,因为它包含异步操作。
|
||||||
"""
|
"""
|
||||||
|
print(f"self.message_segment: {self.message_segment}")
|
||||||
self.processed_plain_text = await self._process_message_segments(self.message_segment)
|
self.processed_plain_text = await self._process_message_segments(self.message_segment)
|
||||||
|
|
||||||
async def _process_single_segment(self, segment: Seg) -> str:
|
async def _process_single_segment(self, segment: Seg) -> str:
|
||||||
|
|
@ -208,129 +209,6 @@ class MessageRecv(Message):
|
||||||
return f"[处理失败的{segment.type}消息]"
|
return f"[处理失败的{segment.type}消息]"
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class MessageRecvS4U(MessageRecv):
|
|
||||||
def __init__(self, message_dict: dict[str, Any]):
|
|
||||||
super().__init__(message_dict)
|
|
||||||
self.is_gift = False
|
|
||||||
self.is_fake_gift = False
|
|
||||||
self.is_superchat = False
|
|
||||||
self.gift_info = None
|
|
||||||
self.gift_name = None
|
|
||||||
self.gift_count: Optional[str] = None
|
|
||||||
self.superchat_info = None
|
|
||||||
self.superchat_price = None
|
|
||||||
self.superchat_message_text = None
|
|
||||||
self.is_screen = False
|
|
||||||
self.is_internal = False
|
|
||||||
self.voice_done = None
|
|
||||||
|
|
||||||
self.chat_info = None
|
|
||||||
|
|
||||||
async def process(self) -> None:
|
|
||||||
self.processed_plain_text = await self._process_message_segments(self.message_segment)
|
|
||||||
|
|
||||||
async def _process_single_segment(self, segment: Seg) -> str:
|
|
||||||
"""处理单个消息段
|
|
||||||
|
|
||||||
Args:
|
|
||||||
segment: 消息段
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
str: 处理后的文本
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
if segment.type == "text":
|
|
||||||
self.is_voice = False
|
|
||||||
self.is_picid = False
|
|
||||||
self.is_emoji = False
|
|
||||||
return segment.data # type: ignore
|
|
||||||
elif segment.type == "image":
|
|
||||||
self.is_voice = False
|
|
||||||
# 如果是base64图片数据
|
|
||||||
if isinstance(segment.data, str):
|
|
||||||
self.has_picid = True
|
|
||||||
self.is_picid = True
|
|
||||||
self.is_emoji = False
|
|
||||||
image_manager = get_image_manager()
|
|
||||||
# print(f"segment.data: {segment.data}")
|
|
||||||
_, processed_text = await image_manager.process_image(segment.data)
|
|
||||||
return processed_text
|
|
||||||
return "[发了一张图片,网卡了加载不出来]"
|
|
||||||
elif segment.type == "emoji":
|
|
||||||
self.has_emoji = True
|
|
||||||
self.is_emoji = True
|
|
||||||
self.is_picid = False
|
|
||||||
if isinstance(segment.data, str):
|
|
||||||
return await get_image_manager().get_emoji_description(segment.data)
|
|
||||||
return "[发了一个表情包,网卡了加载不出来]"
|
|
||||||
elif segment.type == "voice":
|
|
||||||
self.has_picid = False
|
|
||||||
self.is_picid = False
|
|
||||||
self.is_emoji = False
|
|
||||||
self.is_voice = True
|
|
||||||
if isinstance(segment.data, str):
|
|
||||||
return await get_voice_text(segment.data)
|
|
||||||
return "[发了一段语音,网卡了加载不出来]"
|
|
||||||
elif segment.type == "mention_bot":
|
|
||||||
self.is_voice = False
|
|
||||||
self.is_picid = False
|
|
||||||
self.is_emoji = False
|
|
||||||
self.is_mentioned = float(segment.data) # type: ignore
|
|
||||||
return ""
|
|
||||||
elif segment.type == "priority_info":
|
|
||||||
self.is_voice = False
|
|
||||||
self.is_picid = False
|
|
||||||
self.is_emoji = False
|
|
||||||
if isinstance(segment.data, dict):
|
|
||||||
# 处理优先级信息
|
|
||||||
self.priority_mode = "priority"
|
|
||||||
self.priority_info = segment.data
|
|
||||||
"""
|
|
||||||
{
|
|
||||||
'message_type': 'vip', # vip or normal
|
|
||||||
'message_priority': 1.0, # 优先级,大为优先,float
|
|
||||||
}
|
|
||||||
"""
|
|
||||||
return ""
|
|
||||||
elif segment.type == "gift":
|
|
||||||
self.is_voice = False
|
|
||||||
self.is_gift = True
|
|
||||||
# 解析gift_info,格式为"名称:数量"
|
|
||||||
name, count = segment.data.split(":", 1) # type: ignore
|
|
||||||
self.gift_info = segment.data
|
|
||||||
self.gift_name = name.strip()
|
|
||||||
self.gift_count = int(count.strip())
|
|
||||||
return ""
|
|
||||||
elif segment.type == "voice_done":
|
|
||||||
msg_id = segment.data
|
|
||||||
logger.info(f"voice_done: {msg_id}")
|
|
||||||
self.voice_done = msg_id
|
|
||||||
return ""
|
|
||||||
elif segment.type == "superchat":
|
|
||||||
self.is_superchat = True
|
|
||||||
self.superchat_info = segment.data
|
|
||||||
price, message_text = segment.data.split(":", 1) # type: ignore
|
|
||||||
self.superchat_price = price.strip()
|
|
||||||
self.superchat_message_text = message_text.strip()
|
|
||||||
|
|
||||||
self.processed_plain_text = str(self.superchat_message_text)
|
|
||||||
self.processed_plain_text += (
|
|
||||||
f"(注意:这是一条超级弹幕信息,价值{self.superchat_price}元,请你认真回复)"
|
|
||||||
)
|
|
||||||
|
|
||||||
return self.processed_plain_text
|
|
||||||
elif segment.type == "screen":
|
|
||||||
self.is_screen = True
|
|
||||||
self.screen_info = segment.data
|
|
||||||
return "屏幕信息"
|
|
||||||
else:
|
|
||||||
return ""
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"处理消息段失败: {str(e)}, 类型: {segment.type}, 数据: {segment.data}")
|
|
||||||
return f"[处理失败的{segment.type}消息]"
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class MessageProcessBase(Message):
|
class MessageProcessBase(Message):
|
||||||
"""消息处理基类,用于处理中和发送中的消息"""
|
"""消息处理基类,用于处理中和发送中的消息"""
|
||||||
|
|
|
||||||
|
|
@ -725,8 +725,24 @@ class MemoryChest:
|
||||||
try:
|
try:
|
||||||
prompt = f"""
|
prompt = f"""
|
||||||
请为以下内容生成一个描述全面的标题,要求描述内容的主要概念和事件:
|
请为以下内容生成一个描述全面的标题,要求描述内容的主要概念和事件:
|
||||||
|
例如:
|
||||||
|
<example>
|
||||||
|
标题:达尔文的自然选择理论
|
||||||
|
内容:达尔文的自然选择是生物进化理论的重要组成部分,它解释了生物进化过程中的自然选择机制。
|
||||||
|
</example>
|
||||||
|
<example>
|
||||||
|
标题:麦麦的禁言插件和支持版本
|
||||||
|
内容:
|
||||||
|
麦麦的禁言插件是一款能够实现禁言的插件
|
||||||
|
麦麦的禁言插件可能不支持0.10.2
|
||||||
|
MutePlugin 是禁言插件的名称
|
||||||
|
</example>
|
||||||
|
|
||||||
|
|
||||||
|
需要对以下内容生成标题:
|
||||||
{merged_content}
|
{merged_content}
|
||||||
|
|
||||||
|
|
||||||
标题不要分点,不要换行,不要输出其他内容,不要浮夸,以白话简洁的风格输出标题
|
标题不要分点,不要换行,不要输出其他内容,不要浮夸,以白话简洁的风格输出标题
|
||||||
请只输出标题,不要输出其他内容:
|
请只输出标题,不要输出其他内容:
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue