From e2d0e57bbe48fee7f8107cfc4673b1b16aa413d7 Mon Sep 17 00:00:00 2001 From: liuwei Date: Wed, 25 Jun 2025 13:45:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86=E9=87=8D=E5=A4=8D=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E9=97=AE=E9=A2=98=EF=BC=8C=E5=81=B6=E5=B0=94=E5=9C=A8?= =?UTF-8?q?=E7=AD=89=E5=BE=85=E6=97=B6=E5=80=99=E4=BC=9A=E5=87=BA=E7=8E=B0?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E6=B6=88=E6=81=AF=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- robot.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/robot.py b/robot.py index 690a836..aa20c54 100644 --- a/robot.py +++ b/robot.py @@ -3,6 +3,7 @@ import asyncio import threading import time import tomllib +from collections import deque import toml from loguru import logger @@ -99,6 +100,7 @@ class Robot: sender_email=self.config.email.get("sender_email", "bovine_liu@163.com"), sender_password=self.config.email.get("sender_password", "LTS9BhmX9XhS36QS") ) + self.recent_msg_ids = deque(maxlen=20) def init_wechat_ipad(self): """初始化wechat_ipad客户端""" @@ -244,6 +246,12 @@ class Robot: # 处理消息 try: wxmsg: WxMessage = WxMessage.from_json(message) + # 判断是否已经收到过。处理。存储最近20个msg_id,处理之前判断是否在清单里面,如果在,这不重新处理了。 + msg_id = wxmsg.msg_id + if msg_id in self.recent_msg_ids: + self.LOG.info(f"出现重复ID消息:{msg_id}") + continue # 已处理,跳过 + self.recent_msg_ids.append(msg_id) except Exception as e: self.LOG.error(f"WxMessage.from_json 解析失败,消息内容: {message},错误: {e}") continue # 跳过本条消息,继续处理下一条