优化群总结内容。若是群名太长则进行压缩
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
import json
|
import json
|
||||||
|
import re
|
||||||
from typing import Dict, Any, Tuple, Optional, List
|
from typing import Dict, Any, Tuple, Optional, List
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
@@ -103,8 +104,13 @@ class MessageSummaryPlugin(MessagePluginInterface):
|
|||||||
chat_content = self.message_storage.get_messages(group_id, all_contacts)
|
chat_content = self.message_storage.get_messages(group_id, all_contacts)
|
||||||
if len(chat_content) < 100:
|
if len(chat_content) < 100:
|
||||||
return False, None
|
return False, None
|
||||||
|
|
||||||
|
# 获取群名并处理
|
||||||
|
group_name = all_contacts.get(group_id, group_id)
|
||||||
|
group_name = self._sanitize_group_name(group_name)
|
||||||
|
|
||||||
# 生成总结
|
# 生成总结
|
||||||
summary, image_path = self._generate_summary(chat_content, all_contacts.get(group_id, group_id))
|
summary, image_path = self._generate_summary(chat_content, group_name)
|
||||||
|
|
||||||
# 发送总结结果
|
# 发送总结结果
|
||||||
wcf = message.get("wcf")
|
wcf = message.get("wcf")
|
||||||
@@ -121,7 +127,19 @@ class MessageSummaryPlugin(MessagePluginInterface):
|
|||||||
self.LOG.error(f"处理消息总结命令失败: {e}")
|
self.LOG.error(f"处理消息总结命令失败: {e}")
|
||||||
return False, None
|
return False, None
|
||||||
|
|
||||||
def _generate_summary(self, chat_content: str, group_id: str) -> Tuple[str, Optional[str]]:
|
def _sanitize_group_name(self, group_name: str) -> str:
|
||||||
|
"""处理群名,去除特殊字符并限制长度"""
|
||||||
|
# 去除特殊字符,只保留字母、数字、中文和基本标点
|
||||||
|
sanitized_name = re.sub(r'[^\w\s\u4e00-\u9fff,.,。]', '', group_name)
|
||||||
|
# 限制长度为15个字符
|
||||||
|
if len(sanitized_name) > 15:
|
||||||
|
sanitized_name = sanitized_name[:15]
|
||||||
|
# 如果处理后为空,则使用默认名称
|
||||||
|
if not sanitized_name:
|
||||||
|
sanitized_name = "群聊"
|
||||||
|
return sanitized_name
|
||||||
|
|
||||||
|
def _generate_summary(self, chat_content: str, group_name: str) -> Tuple[str, Optional[str]]:
|
||||||
"""生成总结"""
|
"""生成总结"""
|
||||||
# Dify API配置
|
# Dify API配置
|
||||||
content_compress = chat_content
|
content_compress = chat_content
|
||||||
@@ -134,10 +152,10 @@ class MessageSummaryPlugin(MessagePluginInterface):
|
|||||||
# 准备请求数据
|
# 准备请求数据
|
||||||
data = {
|
data = {
|
||||||
"inputs": {},
|
"inputs": {},
|
||||||
"query": f"请根据以下{group_id}群聊记录生成一份精华总结:\n\n{content_compress}",
|
"query": f"请根据以下{group_name}群聊记录生成一份精华总结:\n\n{content_compress}",
|
||||||
"response_mode": "blocking", # 使用阻塞模式,直接获取完整响应
|
"response_mode": "blocking", # 使用阻塞模式,直接获取完整响应
|
||||||
"conversation_id": "",
|
"conversation_id": "",
|
||||||
"user": group_id if group_id is not None else "message_summary_bot",
|
"user": group_name if group_name is not None else "message_summary_bot",
|
||||||
"files": [] # 不包含文件
|
"files": [] # 不包含文件
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user