From 4cf0c273b5a816c079ee60cfcecb342cf3176d86 Mon Sep 17 00:00:00 2001 From: tanjianbin <632190820@qq.com> Date: Wed, 25 Mar 2026 16:55:33 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=BC=95=E7=94=A8=E5=9B=9E=E5=A4=8D):=20?= =?UTF-8?q?=E4=BB=85=E5=9C=A8=E5=9B=9E=E5=A4=8D=E5=86=85=E5=AE=B9=E9=9D=9E?= =?UTF-8?q?=E7=A9=BA=E6=97=B6=E5=90=AF=E7=94=A8=E5=BC=95=E7=94=A8=E5=9B=9E?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复引用回复逻辑,避免在回复内容为空时错误地引用上一条消息。 同时增强保存引用消息时的空值检查,确保只有有效的消息内容被保存。 --- .../yameida/worktool/service/WeworkController.kt | 6 ++++-- .../org/yameida/worktool/service/WeworkLoopImpl.kt | 14 ++++++++------ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/yameida/worktool/service/WeworkController.kt b/app/src/main/java/org/yameida/worktool/service/WeworkController.kt index 89eeb78..b17f456 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkController.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkController.kt @@ -67,8 +67,10 @@ object WeworkController { @RequestMapping fun sendMessage(message: WeworkMessageBean): Boolean { LogUtils.d("REQUEST sendMessage(): ${message.messageId} ${message.titleList} ${message.receivedContent} ${message.at} ${message.atList?.joinToString()}") - // 如果有待引用消息,自动使用引用回复 - val result = if (!lastReceivedMessage.isNullOrBlank() && !lastReceivedName.isNullOrBlank()) { + // 如果有待引用消息且有回复内容,才使用引用回复 + val result = if (!lastReceivedMessage.isNullOrBlank() + && !lastReceivedName.isNullOrBlank() + && !message.receivedContent.isNullOrBlank()) { LogUtils.d("使用引用回复: ${lastReceivedName} -> $lastReceivedMessage") val replyResult = WeworkOperationImpl.replyMessage( message, diff --git a/app/src/main/java/org/yameida/worktool/service/WeworkLoopImpl.kt b/app/src/main/java/org/yameida/worktool/service/WeworkLoopImpl.kt index ed4a8b5..6cb1d87 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkLoopImpl.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkLoopImpl.kt @@ -354,12 +354,14 @@ object WeworkLoopImpl { WeworkController.weworkService.webSocketManager.send(messageBean) // 保存最后收到的消息内容,用于回复时引用 val lastMsg = messageList.lastOrNull() - if (lastMsg != null && lastMsg.sender == 0) { - val msgContent = lastMsg.itemMessageList.lastOrNull()?.text ?: "" - val senderName = lastMsg.nameList.firstOrNull() ?: "" - WeworkController.lastReceivedMessage = msgContent - WeworkController.lastReceivedName = senderName - LogUtils.d("保存最后消息用于引用: $senderName: $msgContent") + if (lastMsg != null && lastMsg.sender == 0 && lastMsg.itemMessageList != null) { + val msgContent = lastMsg.itemMessageList.lastOrNull()?.text?.takeIf { it.isNotBlank() } ?: "" + val senderName = lastMsg.nameList?.firstOrNull()?.takeIf { it.isNotBlank() } ?: "" + if (msgContent.isNotBlank() && senderName.isNotBlank()) { + WeworkController.lastReceivedMessage = msgContent + WeworkController.lastReceivedName = senderName + LogUtils.d("保存最后消息用于引用: $senderName: $msgContent") + } } //推测是否回复并在房间等待指令 if (needInfer) {