修复行合并吞掉用户问句bug

- _SENT_END增加中文句末语气词(呀啊呢吧嘛)
- 行合并增加疑问特征检查:裸@末尾或含问号时不合并,防止用户问句被黏进bot回复内容
This commit is contained in:
youpaishidifu
2026-08-18 09:58:39 +08:00
parent bd4a78dbf0
commit 59cb6789f0
+5 -1
View File
@@ -3283,10 +3283,14 @@ class MessageMonitor:
# ⭐ Task #1510: _SENT_END 补 ASCII `?`。OCR 对问句常输出半角 `?`(非全角 `?`),
# 导致「游戏专用PHP有哪两种登录模式?」这类问句行不与下一行合并,
# 防止多条用户消息被 `,` 黏成一行、共享同一陈旧继承时间戳被整体误杀。
_SENT_END = re.compile(r'[。!??…~))」』\]]$')
_SENT_END = re.compile(r'[。!??…~))」』\]呀啊呢吧嘛]$')
_TS_START = re.compile(r'^(?:\d{1,2}[.;:]\d{2}|(?:昨天|前天|大前天|今天|明天|星期[一二三四五六日天]|\d+天前)\s*\d)')
merged_lines = []
for rl in ocr_lines:
# 当前行含疑问特征(裸@末尾或问号)→ 不合并,防止用户问句被黏进bot回复
if rl.endswith('@') or re.search(r'[??]', rl):
merged_lines.append(rl)
continue
if merged_lines and not _SENT_END.search(merged_lines[-1]) \
and not _TS_START.match(rl) and not _TS_START.match(merged_lines[-1]):
merged_lines[-1] = merged_lines[-1] + ',' + rl