异步处理总结流程,防止阻塞

This commit is contained in:
liuwei
2025-04-14 13:58:44 +08:00
parent 7eddfc001b
commit bfdb1831d3

View File

@@ -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:
"""处理群名,去除特殊字符并限制长度"""