From bfdb1831d397a091581c5150aa8cdaa30fd3f1ba Mon Sep 17 00:00:00 2001 From: liuwei Date: Mon, 14 Apr 2025 13:58:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=82=E6=AD=A5=E5=A4=84=E7=90=86=E6=80=BB?= =?UTF-8?q?=E7=BB=93=E6=B5=81=E7=A8=8B=EF=BC=8C=E9=98=B2=E6=AD=A2=E9=98=BB?= =?UTF-8?q?=E5=A1=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/message_summary/main.py | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/plugins/message_summary/main.py b/plugins/message_summary/main.py index 35bffbd..bc2a276 100644 --- a/plugins/message_summary/main.py +++ b/plugins/message_summary/main.py @@ -1,5 +1,6 @@ import json import re +import threading from typing import Dict, Any, Tuple, Optional, List import requests @@ -110,9 +111,27 @@ class MessageSummaryPlugin(MessagePluginInterface): group_name = self._sanitize_group_name(group_name) if wcf: wcf.send_text("⏳群消息总结中… 😊", 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() + + return True, "异步总结已启动" + + except Exception as e: + self.LOG.error(f"处理消息总结命令失败: {e}") + return False, None + + def _async_generate_and_send_summary(self, chat_content: str, group_name: str, group_id: str, message: Dict[str, Any]): + """异步生成并发送总结""" + try: # 生成总结 summary, image_path = self._generate_summary(chat_content, group_name) - + # 发送总结结果 wcf = message.get("wcf") if wcf: @@ -121,12 +140,13 @@ class MessageSummaryPlugin(MessagePluginInterface): if image_path: wcf.send_file(image_path, group_id) - - return True, None - + else: + wcf.send_text("❌ 生成总结图片失败", group_id) except Exception as e: - self.LOG.error(f"处理消息总结命令失败: {e}") - return False, None + self.LOG.error(f"异步生成总结失败: {e}") + wcf = message.get("wcf") + if wcf: + wcf.send_text(f"❌ 生成总结失败: {str(e)}", group_id) def _sanitize_group_name(self, group_name: str) -> str: """处理群名,去除特殊字符并限制长度"""