From 7cc2fd081064bcebf233e32d76dee9acc9d0cfdd Mon Sep 17 00:00:00 2001 From: Kevin-Glaser <17831954923@163.com> Date: Thu, 23 Oct 2025 17:18:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=81=B6=E5=8F=91=E6=80=A7?= =?UTF-8?q?=E9=92=89=E9=92=89=E6=9C=BA=E5=99=A8=E4=BA=BA=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E5=8F=91=E9=80=81=E6=B6=88=E6=81=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复偶发性钉钉机器人重复发送消息问题,当前消息去重时间阈值为五分钟 --- core/handlers.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/core/handlers.py b/core/handlers.py index f0b17c3..fb86dc9 100644 --- a/core/handlers.py +++ b/core/handlers.py @@ -28,11 +28,22 @@ class DifyAiCardBotHandler(ChatbotHandler): def __init__(self, dify_api_client: DifyClient): super().__init__() self.dify_api_client = dify_api_client - self.cache = Cache(expiry_time=60 * int(os.getenv("DIFY_CONVERSATION_REMAIN_TIME"))) # 每个用户维持会话时间xx秒 + remain_time = os.getenv("DIFY_CONVERSATION_REMAIN_TIME", "60") + self.cache = Cache(expiry_time=60 * int(remain_time)) # 每个用户维持会话时间60*xx秒 + self.message_cache = Cache(expiry_time=300) # 5分钟内去重 async def process(self, callback_msg: CallbackMessage): logger.debug(callback_msg) incoming_message = ChatbotMessage.from_dict(callback_msg.data) + message_id = incoming_message.message_id + + # 检查消息是否已处理 + if self.message_cache.get(message_id): + logger.info(f"重复消息已忽略: {message_id}") + return AckMessage.STATUS_OK, "OK" + + # 标记消息已处理 + self.message_cache.set(message_id, True) logger.info(f"收到用户消息:{incoming_message}")