diff --git a/resources/js/chat-room/message-renderer.js b/resources/js/chat-room/message-renderer.js index 28d3282..9397f2b 100644 --- a/resources/js/chat-room/message-renderer.js +++ b/resources/js/chat-room/message-renderer.js @@ -202,9 +202,25 @@ export function appendMessage(msg, renderBatch = null) { } else if (msg.action === "欢迎") { div.style.cssText = "background: linear-gradient(135deg, #eff6ff, #f0f9ff); border: 1.5px solid #3b82f6; border-radius: 5px; padding: 5px 10px; margin: 3px 0; box-shadow: 0 1px 3px rgba(59,130,246,0.12);"; - const fromHtml = clickableUser(msg.from_user, "#1d4ed8", nameClass); - const parsedContent = parseBracketUsers(msg.content, "#1d4ed8"); - html = `
💬 ${fromHtml}:${parsedContent} (${timeStr})
`; + const userName = msg.from_user; + const rawContent = msg.content || ""; + const colonIndex = rawContent.indexOf(":"); + let clickablePrefix = ""; + let bodyPart = rawContent; + if (colonIndex !== -1) { + const prefixStr = rawContent.substring(0, colonIndex); + bodyPart = rawContent.substring(colonIndex); + const lastIdx = prefixStr.lastIndexOf(userName); + if (lastIdx !== -1) { + clickablePrefix = + prefixStr.substring(0, lastIdx) + + clickableUser(userName, "#1d4ed8", nameClass); + } else { + clickablePrefix = prefixStr; + } + } + const parsedBody = parseBracketUsers(bodyPart, "#1d4ed8"); + html = `
💬 ${clickablePrefix}${parsedBody} (${timeStr})
`; timeStrOverride = true; } else if (SYSTEM_USERS.includes(msg.from_user)) { if (msg.from_user === "系统公告") {