From 553f212cc8cfbddeaaf3bfa7fc0ad45cdb255810 Mon Sep 17 00:00:00 2001 From: zhaoyingbo Date: Wed, 4 Dec 2024 09:54:10 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=8E=92=E9=99=A4?= =?UTF-8?q?=E6=8F=90=E5=88=B0=E7=9A=84=E4=BA=BA=E5=92=8C=E6=B6=88=E6=81=AF?= =?UTF-8?q?ID=E7=9A=84=E5=8A=9F=E8=83=BD=E4=BB=A5=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E8=81=8A=E5=A4=A9=E8=AE=B0=E5=BD=95=E8=8E=B7=E5=8F=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bun.lockb | Bin 164153 -> 164667 bytes controller/groupAgent/agent.ts | 11 ++++++++++- controller/groupAgent/chatHistory.ts | 26 ++++++++++++++++++++------ package.json | 8 ++++---- 4 files changed, 34 insertions(+), 11 deletions(-) diff --git a/bun.lockb b/bun.lockb index 7332b94ec2ff279231b1c5cda4d1b317678fdc78..27756fd74d1f6bdb3d7f7296576e274e361fa8dc 100755 GIT binary patch delta 25793 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 aO5$E?^rLI6p@O(M*f6+oL#!do>Hh!)_;}&~ delta 25355 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 diff --git a/controller/groupAgent/agent.ts b/controller/groupAgent/agent.ts index a1c18f4..95e4ce2 100644 --- a/controller/groupAgent/agent.ts +++ b/controller/groupAgent/agent.ts @@ -9,7 +9,15 @@ const agent = async (ctx: Context.Data) => { larkCard, larkService, appInfo, - larkBody: { messageId, msgText, chatId, mentions, rawMsgText, openId }, + larkBody: { + messageId, + msgText, + chatId, + mentions, + rawMsgText, + openId, + mentionedRobot, + }, } = ctx const cardGender = larkCard.child("groupAgent") // 回复一个loading的卡片 @@ -36,6 +44,7 @@ const agent = async (ctx: Context.Data) => { mentions, senderOpenId: openId, excludedMessageIds: [message_id, messageId], + excludeMentions: [mentionedRobot?.id?.open_id || ""], }) // 如果没有聊天记录,返回错误信息 if (chatHistory.length === 0) { diff --git a/controller/groupAgent/chatHistory.ts b/controller/groupAgent/chatHistory.ts index 1abfa75..9c4a24a 100644 --- a/controller/groupAgent/chatHistory.ts +++ b/controller/groupAgent/chatHistory.ts @@ -50,14 +50,16 @@ const getChatHistory = async ( endTime, senderOpenId, mentions: targetUsers, - excludedMessageIds = [], // 新增参数 + excludedMessageIds = [], + excludeMentions = [], }: { chatId: string startTime: string endTime: string senderOpenId?: string mentions?: LarkEvent.Mention[] - excludedMessageIds?: string[] // 新增参数类型 + excludedMessageIds?: string[] // 不需要的消息 ID + excludeMentions?: string[] // 不需要的提到的人 } ): Promise<{ messages: Message[] @@ -108,15 +110,27 @@ const getChatHistory = async ( // 遍历历史消息 for (const chat of chatHistory) { - // 过滤掉不需要的消息 ID - if (excludedMessageIds.includes(chat.message_id)) { - continue - } + let hasExcludeMention = false + if (chat.mentions) { for (const mention of chat.mentions) { mentions.set(mention.id, mention.name) + // 过滤掉不需要的提到的人 + if (excludeMentions.includes(mention.id)) { + hasExcludeMention = true + } } } + + // 如果提到了不要包含的人,则跳过该消息 + if (hasExcludeMention) { + continue + } + + // 过滤掉不需要的消息 ID + if (excludedMessageIds.includes(chat.message_id)) { + continue + } // 过滤掉不是文本和post消息的消息 if (!allowedMsgTypes.includes(chat.msg_type)) { continue diff --git a/package.json b/package.json index b472a07..59e888d 100644 --- a/package.json +++ b/package.json @@ -29,20 +29,20 @@ "husky": "^9.1.7", "lint-staged": "^15.2.10", "oxlint": "^0.13.2", - "prettier": "^3.4.1", + "prettier": "^3.4.2", "prisma": "5.22.0", - "typescript-eslint": "^8.16.0" + "typescript-eslint": "^8.17.0" }, "peerDependencies": { "typescript": "^5.5.4" }, "dependencies": { "@egg/hooks": "^1.2.0", - "@egg/lark-msg-tool": "^1.18.0", + "@egg/lark-msg-tool": "^1.19.0", "@egg/logger": "^1.6.0", "@egg/net-tool": "^1.19.0", "@egg/path-tool": "^1.4.1", - "@langchain/core": "^0.3.19", + "@langchain/core": "^0.3.20", "@langchain/openai": "^0.3.14", "@prisma/client": "5.22.0", "joi": "^17.13.3",