修复闲聊消息过滤:拦截'有时间吗'等无主题查询

This commit is contained in:
youpaishidifu
2026-08-22 10:17:54 +08:00
parent 05e7722816
commit 1ab422cfd5
+52
View File
@@ -7281,6 +7281,58 @@ class MessageMonitor:
if not text:
logger.debug(f"[ocr] 过滤器2结果: 空文本,返回False")
return False
# ⭐ 闲聊消息检测(2026-08-22 新增)
# 特征:短文本 + 疑问词 + 无具体查询主题
# 例:"有时间吗"、"在不在"、"好的"、"嗯嗯" → 缺乏可查库的具体主题
# 检测逻辑:
# 1. 长度 ≤ 8 字符(太短无法构成完整查询)
# 2. 包含疑问词 "吗" 或 "呢",或匹配闲聊模式
# 3. 无核心关键词(无插件名、功能词、名词等)
_chat_patterns = [
r'^有[\s\S]*?[吗呢]$', # "有时间吗"、"有东西吗"、"有人吗"
r'^在不在$', # "在不在"
r'^在[嘛吗]$', # "在吗"、"在嘛"
r'^你好吗?$', # "你好"、"你好吗"
r'^好(?:的|吧)?$', # "好"、"好的"、"好吧"
r'^嗯(?:嗯|哼|哦)?$', # "嗯"、"嗯嗯"、"嗯哼"、"嗯哦"
r'^哦(?:哦)?$', # "哦"、"哦哦"
r'^收到$', # "收到"
r'^明白(?:了)?$', # "明白"、"明白了"
r'^知道(?:了|道)?$', # "知道"、"知道了"、"知道道"
r'^嗯?啊$|啊?$|嗯?唉$', # "啊"、"唉"、"嗯唉"
]
_clean_text = re.sub(r'[;;,,。!?!?.\s]', '', text) # 去除标点
if len(_clean_text) <= 8 and ('吗' in _clean_text or '呢' in _clean_text or '在不在' in _clean_text):
for pat in _chat_patterns:
if re.match(pat, _clean_text):
logger.debug(f"[ocr] 过滤器2结果: 检测到闲聊消息(无具体主题),返回True: {text!r}")
return True
# ⭐ 闲聊消息检测(2026-08-22 新增)
# 特征:短文本 + 疑问词 + 无具体查询主题
# 例:"有时间吗"、"在不在"、"好的"、"嗯嗯" → 缺乏可查库的具体主题
# 检测逻辑:
# 1. 长度 ≤ 8 字符(太短无法构成完整查询)
# 2. 包含疑问词 "吗" 或 "呢"(疑问句式)
# 3. 无核心关键词(无插件名、功能词、名词等)
_chat_patterns = [
r'^有[\s\S]*?吗$', # "有时间吗"、"有东西吗"
r'^在不在$', # "在不在"
r'^你好吗?$', # "你好"、"你好吗"
r'^好的?$', # "好"、"好的"
r'^嗯(?:嗯)?$', # "嗯"、"嗯嗯"
r'^哦?$', # "哦"
r'^嗯哼$', # "嗯哼"
r'^收到$', # "收到"
r'^明白$', # "明白"
r'^知道了$', # "知道了"
]
if len(text) <= 8 and ('吗' in text or '呢' in text):
for pat in _chat_patterns:
if re.match(pat, text.strip()):
logger.debug(f"[ocr] 过滤器2结果: 检测到闲聊消息(无具体主题),返回True: {text!r}")
return True
# HTML 标签:<br>、<br/>、<p>、</p>、<div>等
if re.search(r'<\s*(?:br|p|div|span|a|img)\s*/?\s*>', text, re.IGNORECASE):
logger.debug(f"[ocr] 过滤器2结果: 检测到HTML标签,返回True")