修:OCR md 残留死循环 - checkbox/[V]残片 + 断链检测

问题:bot md回复被OCR识别后再次进入自动回复管道,形成死循环。
[V] GitHu [V] gitee... 等checkbox碎片和 [text](url 断链碎片
未触发现有 md 检测,导致自言自语。

修复:
1. 行级OCR过滤:含2+个 [V] 标记的行直接丢弃
2. _is_markdown_document 加两条:
   - checkbox 标记 [V]/[v]/[x]/[V ] 等 → md 残留
   - 断链 [text]( → QQ群聊不用此语法
This commit is contained in:
youpaishidifu
2026-07-27 21:22:35 +08:00
parent 25073c35f1
commit 8d5e9b7e17
+10
View File
@@ -1069,6 +1069,10 @@ class MessageMonitor:
if re.match(r'^\[[VX√✗]\s*\](?:\s*[A-Za-z0-9_\-./]+)?\s*$', line):
logger.debug(f"[{platform}] OCR 过滤: checkbox残片 line={line!r}")
continue
# 多 checkbox 碎片:一行含 2+ 个 [V] 标记,md 列表 OCR 残留
if len(re.findall(r'\[\s*[VXvx√✗]\s*\]', line)) >= 2:
logger.debug(f"[{platform}] OCR 过滤: 多checkbox碎片 line={line!r}")
continue
if re.match(r'^\d{1,2}[::\s]\d{1,2}', line):
continue
if re.match(r'^\d{4}[/-]\d{1,2}', line):
@@ -1451,6 +1455,12 @@ class MessageMonitor:
# 内联 # # 标题标记(如 "# # 必装依赖" → 分割后 `# #` 或 `# #`)
if re.search(r'#\s*#', text):
return True
# OCR 退化 md checkbox:`[V]`、`[v]`、`[x]` 等(含空格变体 [V ])
if re.search(r'\[\s*[VXvx√✗]\s*\]', text):
return True
# OCR 退化 md 链接:`[text](...` 缺闭合括号,QQ 群聊几乎不用此语法
if re.search(r'\[.+?\]\(', text):
return True
return False
@staticmethod