feat(onebot): 正确识别 QQ 表情包 (subType=1) (#99 @nagatoquin33)

* feat(onebot): 正确识别 QQ 表情包 (subType=1)

* refactor(onebot): 安全处理 sub_type 转换,只在有效时包含 sub_type 键
This commit is contained in:
nagatoquin33
2026-03-10 07:05:22 +08:00
committed by GitHub
parent 70ea0e4fba
commit fd851ccf05
@@ -257,10 +257,24 @@ class OneBotAdapter(PlatformAdapter):
) )
elif seg_type == "image": elif seg_type == "image":
# QQ 平台: subType=1 表示表情包,通过 raw_data 传递给下游统计
sub_type = seg_data.get("subType", seg_data.get("sub_type"))
# 安全地转换为整数,防止非数字值导致异常
try:
is_sticker = int(sub_type) == 1
except (TypeError, ValueError):
is_sticker = False
# 只在 sub_type 有效时包含在 raw_data 中
raw_data: dict[str, Any] = {"summary": seg_data.get("summary", "")}
if sub_type is not None:
raw_data["sub_type"] = int(sub_type)
contents.append( contents.append(
MessageContent( MessageContent(
type=MessageContentType.IMAGE, type=MessageContentType.EMOJI
if is_sticker
else MessageContentType.IMAGE,
url=seg_data.get("url", seg_data.get("file", "")), url=seg_data.get("url", seg_data.get("file", "")),
raw_data=raw_data,
) )
) )