pull/65/head
foxplaying 2025-10-23 21:04:47 +08:00 committed by GitHub
parent ad27c0ee4e
commit 15d96f7b43
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 19 additions and 3 deletions

View File

@ -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)