总结功能修复

This commit is contained in:
liuwei
2025-05-07 15:05:58 +08:00
parent 62c1599932
commit 67c3430395
2 changed files with 35 additions and 56 deletions

View File

@@ -1,3 +1,4 @@
import asyncio
import json
import re
import threading
@@ -115,12 +116,8 @@ class MessageSummaryPlugin(MessagePluginInterface):
await self.bot.send_text_message(group_id, "⏳群消息总结中… 😊")
# 创建线程异步处理总结生成和发送
summary_thread = threading.Thread(
target=self._async_generate_and_send_summary,
args=(chat_content, group_name, group_id, message)
)
summary_thread.daemon = True # 设置为守护线程,主程序退出时线程也会退出
summary_thread.start()
self._run_async_in_thread(self._async_generate_and_send_summary, chat_content, group_name, group_id,
message)
return True, "异步总结已启动"
@@ -128,12 +125,21 @@ class MessageSummaryPlugin(MessagePluginInterface):
self.LOG.error(f"处理消息总结命令失败: {e}")
return False, None
def _run_async_in_thread(self, coro, *args, **kwargs):
def runner():
asyncio.run(coro(*args, **kwargs))
t = threading.Thread(target=runner)
t.daemon = True
t.start()
return t
async def _async_generate_and_send_summary(self, chat_content: str, group_name: str, group_id: str,
message: Dict[str, Any]):
message: Dict[str, Any]):
"""异步生成并发送总结"""
try:
# 生成总结
summary, image_path = self._generate_summary(chat_content, group_name)
summary, image_path = await self._generate_summary(chat_content, group_name)
if image_path:
await self.bot.send_image_message(group_id, Path(image_path))
@@ -155,7 +161,7 @@ class MessageSummaryPlugin(MessagePluginInterface):
sanitized_name = "群聊"
return sanitized_name
def _generate_summary(self, chat_content: str, group_name: str) -> Tuple[str, Optional[str]]:
async def _generate_summary(self, chat_content: str, group_name: str) -> Tuple[str, Optional[str]]:
"""生成总结"""
# Dify API配置
content_compress = chat_content
@@ -210,7 +216,7 @@ class MessageSummaryPlugin(MessagePluginInterface):
tokens_info = f"\n\n【tokens】输入: {prompt_tokens} 生成: {completion_tokens} 总: {total_tokens}"
answer += tokens_info
try:
spath = convert_md_str_to_image(answer, "output.png")
spath = await convert_md_str_to_image(answer, "output.png")
except Exception as e:
self.LOG.error(f"生成image失败:{e}")
# 返回文本内容和图片路径