diff --git a/monitor.py b/monitor.py index a221f69..ae8704f 100644 --- a/monitor.py +++ b/monitor.py @@ -699,12 +699,17 @@ class MessageHistory: self._ensure_user_messages_table() conn = self._get_conn() try: + # ⭐ Task #1704: 只查询最近一条匹配消息的reply_status + # 问题:多条相同内容消息时,只要有一条状态为0就跳过所有 + # 修复:只检查最近一条匹配消息的状态 cursor = conn.execute( - """SELECT COUNT(*) FROM user_messages - WHERE platform=? AND content=? AND reply_status=0""", + """SELECT reply_status FROM user_messages + WHERE platform=? AND content=? + ORDER BY id DESC LIMIT 1""", (platform, content.strip()) ) - return cursor.fetchone()[0] > 0 + row = cursor.fetchone() + return row is not None and row[0] == 0 except Exception as e: logger.error(f"[{platform}] 检查消息是否已回复失败: {e}") return False