fix(引用回复): 仅在回复内容非空时启用引用回复

修复引用回复逻辑,避免在回复内容为空时错误地引用上一条消息。
同时增强保存引用消息时的空值检查,确保只有有效的消息内容被保存。
This commit is contained in:
2026-03-25 16:55:33 +08:00
parent 36ef2e12a2
commit 4cf0c273b5
2 changed files with 12 additions and 8 deletions

View File

@@ -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,

View File

@@ -354,13 +354,15 @@ 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() ?: ""
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) {
val lastMessage = messageList.lastOrNull()