增加QQ频道卡片支持
parent
d1f2ca208b
commit
ff6fc7fbdd
|
|
@ -383,7 +383,7 @@ class MessageHandler:
|
||||||
gift = meta.get("giftData", {})
|
gift = meta.get("giftData", {})
|
||||||
gift_name = gift.get("giftName", "未知礼物")
|
gift_name = gift.get("giftName", "未知礼物")
|
||||||
gift_msg = gift.get("giftMsg", "")
|
gift_msg = gift.get("giftMsg", "")
|
||||||
seg_message.append(Seg(type="text", data=f"[收到礼物] {gift_name}:{gift_msg}"))
|
seg_message.append(Seg(type="text", data=f"[收到礼物] {gift_name}:{gift_msg}"))
|
||||||
|
|
||||||
# 推荐联系人
|
# 推荐联系人
|
||||||
elif app_name == "com.tencent.contact.lua":
|
elif app_name == "com.tencent.contact.lua":
|
||||||
|
|
@ -408,7 +408,7 @@ class MessageHandler:
|
||||||
preview_url = news.get("preview", "")
|
preview_url = news.get("preview", "")
|
||||||
if tag and title and tag in title:
|
if tag and title and tag in title:
|
||||||
title = title.replace(tag, "", 1).strip(":: -— ")
|
title = title.replace(tag, "", 1).strip(":: -— ")
|
||||||
seg_message.append(Seg(type="text", data=f"[{tag}] {title}:{desc}"))
|
seg_message.append(Seg(type="text", data=f"[{tag}] {title}:{desc}"))
|
||||||
if preview_url:
|
if preview_url:
|
||||||
try:
|
try:
|
||||||
image_base64 = await get_image_base64(preview_url)
|
image_base64 = await get_image_base64(preview_url)
|
||||||
|
|
@ -425,7 +425,7 @@ class MessageHandler:
|
||||||
cover_url = feed.get("cover", "")
|
cover_url = feed.get("cover", "")
|
||||||
if tag and title and tag in title:
|
if tag and title and tag in title:
|
||||||
title = title.replace(tag, "", 1).strip(":: -— ")
|
title = title.replace(tag, "", 1).strip(":: -— ")
|
||||||
seg_message.append(Seg(type="text", data=f"[{tag}] {title}:{desc}"))
|
seg_message.append(Seg(type="text", data=f"[{tag}] {title}:{desc}"))
|
||||||
if cover_url:
|
if cover_url:
|
||||||
try:
|
try:
|
||||||
image_base64 = await get_image_base64(cover_url)
|
image_base64 = await get_image_base64(cover_url)
|
||||||
|
|
@ -448,7 +448,7 @@ class MessageHandler:
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning(f"群公告Base64解码失败: {e}")
|
logger.warning(f"群公告Base64解码失败: {e}")
|
||||||
if title and text:
|
if title and text:
|
||||||
content = f"[{title}]:{text}"
|
content = f"[{title}]:{text}"
|
||||||
elif title:
|
elif title:
|
||||||
content = f"[{title}]"
|
content = f"[{title}]"
|
||||||
elif text:
|
elif text:
|
||||||
|
|
@ -464,7 +464,7 @@ class MessageHandler:
|
||||||
desc = detail.get("desc", "")
|
desc = detail.get("desc", "")
|
||||||
preview_url = detail.get("preview", "")
|
preview_url = detail.get("preview", "")
|
||||||
tag = "QQ小程序"
|
tag = "QQ小程序"
|
||||||
seg_message.append(Seg(type="text", data=f"[{tag}] {title}:{desc}"))
|
seg_message.append(Seg(type="text", data=f"[{tag}] {title}:{desc}"))
|
||||||
if preview_url:
|
if preview_url:
|
||||||
try:
|
try:
|
||||||
image_base64 = await get_image_base64(preview_url)
|
image_base64 = await get_image_base64(preview_url)
|
||||||
|
|
@ -500,6 +500,32 @@ class MessageHandler:
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"QQ空间图片下载失败: {e}")
|
logger.error(f"QQ空间图片下载失败: {e}")
|
||||||
|
|
||||||
|
# QQ频道分享(含预览图)
|
||||||
|
elif app_name == "com.tencent.forum":
|
||||||
|
detail = meta.get("detail") if isinstance(meta, dict) else None
|
||||||
|
if detail:
|
||||||
|
feed = detail.get("feed", {})
|
||||||
|
poster = detail.get("poster", {})
|
||||||
|
channel_info = detail.get("channel_info", {})
|
||||||
|
guild_name = channel_info.get("guild_name", "")
|
||||||
|
nick = poster.get("nick", "QQ用户")
|
||||||
|
title = feed.get("title", {}).get("contents", [{}])[0].get("text_content", {}).get("text", "帖子")
|
||||||
|
face_content = ""
|
||||||
|
for item in feed.get("contents", {}).get("contents", []):
|
||||||
|
emoji = item.get("emoji_content")
|
||||||
|
if emoji:
|
||||||
|
eid = emoji.get("id")
|
||||||
|
if eid in qq_face:
|
||||||
|
face_content += qq_face.get(eid, "")
|
||||||
|
pic_urls = [img.get("pic_url") for img in feed.get("images", []) if img.get("pic_url")]
|
||||||
|
seg_message.append(Seg(type="text", data=f"[频道帖子] [{guild_name}]{nick}:{title}{face_content}"))
|
||||||
|
for pic_url in pic_urls:
|
||||||
|
try:
|
||||||
|
image_base64 = await get_image_base64(pic_url)
|
||||||
|
seg_message.append(Seg(type="image", data=image_base64))
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"QQ频道图片下载失败: {e}")
|
||||||
|
|
||||||
# QQ地图位置分享
|
# QQ地图位置分享
|
||||||
elif app_name == "com.tencent.map":
|
elif app_name == "com.tencent.map":
|
||||||
location = meta.get("Location.Search", {})
|
location = meta.get("Location.Search", {})
|
||||||
|
|
@ -554,7 +580,7 @@ class MessageHandler:
|
||||||
if not desc:
|
if not desc:
|
||||||
desc = ""
|
desc = ""
|
||||||
|
|
||||||
seg_message.append(Seg(type="text", data=f"[{tag}] {title}:{desc}"))
|
seg_message.append(Seg(type="text", data=f"[{tag}] {title}:{desc}"))
|
||||||
|
|
||||||
# 未识别类型
|
# 未识别类型
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue