From 5c5515d4625f891286bfdf82f9dcae0b660e66ad Mon Sep 17 00:00:00 2001 From: Soulter <37870767+Soulter@users.noreply.github.com> Date: Mon, 24 Nov 2025 22:00:59 +0800 Subject: [PATCH] fix: segmented reply regex error handling (#3771) * fix: segmented reply regex error handling closes: #3761 * fix: improve regex handling for segmented replies to support multiline input * fix: update regex handling in ResultDecorateStage to use findall for segmented replies * fix: update error logging message for segmented reply regex handling --- .../core/pipeline/result_decorate/stage.py | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/astrbot/core/pipeline/result_decorate/stage.py b/astrbot/core/pipeline/result_decorate/stage.py index 5dfb52f6f..ef394edcf 100644 --- a/astrbot/core/pipeline/result_decorate/stage.py +++ b/astrbot/core/pipeline/result_decorate/stage.py @@ -161,11 +161,21 @@ class ResultDecorateStage(Stage): # 不分段回复 new_chain.append(comp) continue - split_response = re.findall( - self.regex, - comp.text, - re.DOTALL | re.MULTILINE, - ) + try: + split_response = re.findall( + self.regex, + comp.text, + re.DOTALL | re.MULTILINE, + ) + except re.error: + logger.error( + f"分段回复正则表达式错误,使用默认分段方式: {traceback.format_exc()}", + ) + split_response = re.findall( + r".*?[。?!~…]+|.+$", + comp.text, + re.DOTALL | re.MULTILINE, + ) if not split_response: new_chain.append(comp) continue