处理重复消息问题,偶尔在等待时候会出现重复消息。
This commit is contained in:
8
robot.py
8
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 # 跳过本条消息,继续处理下一条
|
||||
|
||||
Reference in New Issue
Block a user