diff --git a/Touchkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageRecord/index.tsx b/Touchkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageRecord/index.tsx index 44b01c97..23ea4a23 100644 --- a/Touchkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageRecord/index.tsx +++ b/Touchkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageRecord/index.tsx @@ -12,6 +12,7 @@ import TransferMessage from "./components/TransferMessage"; import { ChatRecord, ContractData, weChatGroup } from "@/pages/pc/ckbox/data"; import { formatWechatTime } from "@/utils/common"; import { getEmojiPath } from "@/components/EmojiSeclection/wechatEmoji"; +import { parseSystemMessage } from "@/utils/filter"; import styles from "./com.module.scss"; import { useWeChatStore } from "@/store/module/weChat/weChat"; import { useContactStore } from "@/store/module/weChat/contacts"; @@ -856,13 +857,15 @@ const MessageRecord: React.FC = ({ contract }) => { {group.messages .filter(v => [10000].includes(v.msgType)) - .map(msg => ( -
- ))} + .map(msg => { + // 解析系统消息,提取纯文本(移除img标签和_wc_custom_link_标签) + const parsedText = parseSystemMessage(msg.content); + return ( +
+ {parsedText} +
+ ); + })} {group.messages .filter(v => [570425393, 90000].includes(v.msgType)) diff --git a/Touchkebao/src/utils/filter.ts b/Touchkebao/src/utils/filter.ts index 199c2ce8..04058d51 100644 --- a/Touchkebao/src/utils/filter.ts +++ b/Touchkebao/src/utils/filter.ts @@ -86,3 +86,37 @@ export const messageFilter = (message: string) => { return message; } }; + +/** + * 解析系统消息中的HTML标签,提取纯文本 + * 例如: 你领取了许老板的<_wc_custom_link_>红包。 + * 提取为:🧧 你领取了许老板的红包 + */ +export const parseSystemMessage = (html: string): string => { + if (!html) return ""; + + let text = html; + + // 移除所有 标签 + text = text.replace(/]*>/gi, ""); + + // 提取 <_wc_custom_link_> 标签内的文本内容 + // 匹配 <_wc_custom_link_ ...>内容 + text = text.replace( + /<_wc_custom_link_[^>]*>(.*?)<\/_wc_custom_link_>/gi, + "$1", + ); + + // 清理多余的空格(将多个连续空格替换为单个空格) + text = text.replace(/\s+/g, " "); + + // 去除首尾空格 + text = text.trim(); + + // 如果消息内容包含红包相关关键词,在前面添加🧧图标 + if (/红包|hongbao/i.test(text)) { + text = `🧧 ${text}`; + } + + return text; +};