修复引用消息错误的问题

This commit is contained in:
xuncha
2026-02-25 19:22:53 +08:00
parent 4bb5bc6e32
commit e4e25394e2
3 changed files with 26 additions and 8 deletions

3
.gitignore vendored
View File

@@ -62,4 +62,5 @@ chatlab-format.md
*.bak
AGENTS.md
.claude/
.agents/
.agents/
resources/wx_send

View File

@@ -1856,13 +1856,13 @@
}
}
// 卡片类消息:气泡变透明,让卡片自己做视觉容器
.message-bubble .bubble-content:has(.link-message),
.message-bubble .bubble-content:has(.card-message),
.message-bubble .bubble-content:has(.chat-record-message),
.message-bubble .bubble-content:has(.official-message),
.message-bubble .bubble-content:has(.channel-video-card),
.message-bubble .bubble-content:has(.location-message) {
// 卡片类消息:气泡变透明,让卡片自己做视觉容器(仅直接子元素,排除引用消息内的卡片)
.message-bubble .bubble-content:has(> .link-message),
.message-bubble .bubble-content:has(> .card-message),
.message-bubble .bubble-content:has(> .chat-record-message),
.message-bubble .bubble-content:has(> .official-message),
.message-bubble .bubble-content:has(> .channel-video-card),
.message-bubble .bubble-content:has(> .location-message) {
background: transparent !important;
padding: 0 !important;
border: none !important;

View File

@@ -4037,6 +4037,23 @@ function MessageBubble({
const q = (selector: string) => getDoc()?.querySelector(selector)?.textContent?.trim() || ''
const xmlType = message.xmlType || q('appmsg > type') || q('type')
// type 57: 引用回复消息,解析 refermsg 渲染为引用样式
if (xmlType === '57') {
const replyText = q('title') || cleanMessageContent(message.parsedContent) || ''
const referContent = q('refermsg > content') || ''
const referSender = q('refermsg > displayname') || ''
return (
<div className="bubble-content">
<div className="quoted-message">
{referSender && <span className="quoted-sender">{referSender}</span>}
<span className="quoted-text">{renderTextWithEmoji(cleanMessageContent(referContent))}</span>
</div>
<div className="message-text">{renderTextWithEmoji(cleanMessageContent(replyText))}</div>
</div>
)
}
const title = message.linkTitle || q('title') || cleanMessageContent(message.parsedContent) || 'Card'
const desc = message.appMsgDesc || q('des')
const url = message.linkUrl || q('url')