From 15d96f7b43700af863fcd291c8347093a812ab6a Mon Sep 17 00:00:00 2001 From: foxplaying <166147707+foxplaying@users.noreply.github.com> Date: Thu, 23 Oct 2025 21:04:47 +0800 Subject: [PATCH] fix --- src/recv_handler/message_handler.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/recv_handler/message_handler.py b/src/recv_handler/message_handler.py index b0ebb40..411f2fa 100644 --- a/src/recv_handler/message_handler.py +++ b/src/recv_handler/message_handler.py @@ -12,6 +12,7 @@ from .qq_emoji_list import qq_face from .message_sending import message_send_instance from . import RealMessageType, MessageType, ACCEPT_FORMAT +import re import time import json import base64 @@ -585,9 +586,16 @@ class MessageHandler: if face_raw_id in qq_face: face_content: str = qq_face.get(face_raw_id) return Seg(type="text", data=face_content) - else: - logger.warning(f"不支持的表情:{face_raw_id}") - return None + + # 兜底处理:读取 raw.faceText + raw_data = message_data.get("raw", {}) + face_text = raw_data.get("faceText", "") + if face_text: + face_text_clean = face_text.lstrip("/") + return Seg(type="text", data=f"[表情:{face_text_clean}]") + + logger.warning(f"不支持的表情:{face_raw_id}") + return None async def handle_image_message(self, raw_message: dict) -> Seg | None: """ @@ -599,11 +607,19 @@ class MessageHandler: """ message_data: dict = raw_message.get("data") image_sub_type = message_data.get("sub_type") + summary = message_data.get("summary", "") try: image_base64 = await get_image_base64(message_data.get("url")) except Exception as e: logger.error(f"图片消息处理失败: {str(e)}") + """如果有 summary 就返回 summary 内容""" + summary = re.sub(r"[\[\]]", "", summary) + if summary: + return Seg(type="text", data=f"[表情包:{summary}]") return None + if "动画表情" in summary: + """将动画表情视为表情包,防止报错""" + return Seg(type="emoji", data=image_base64) if image_sub_type == 0: """这部分认为是图片""" return Seg(type="image", data=image_base64)