From 48d07af574a0ffda72b6a2150fa118532c77568a Mon Sep 17 00:00:00 2001 From: anka <1350989414@qq.com> Date: Thu, 3 Apr 2025 11:50:12 +0800 Subject: [PATCH] =?UTF-8?q?feature(fix=3F):=20=E5=9C=A8=E5=8F=91=E9=80=81?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E4=B9=8B=E5=89=8D=E7=BB=9F=E4=B8=80=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E6=B6=88=E6=81=AF=E5=86=85=E5=AE=B9=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA,=20=E4=B8=8D=E5=85=81=E8=AE=B8=E5=8F=91?= =?UTF-8?q?=E9=80=81=E7=A9=BA=E6=B6=88=E6=81=AF,=20=E4=BB=A5=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E8=AF=A5=E6=B6=88=E6=81=AF=E5=86=85=E5=AE=B9=E4=B8=8D?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=9F=A5=E7=9C=8B=E4=BB=A5=E5=8F=8Agemini?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- astrbot/core/pipeline/respond/stage.py | 21 +++++++++++++++++++ .../core/provider/sources/gemini_source.py | 6 +++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/astrbot/core/pipeline/respond/stage.py b/astrbot/core/pipeline/respond/stage.py index a43f0b32d..202a3b8aa 100644 --- a/astrbot/core/pipeline/respond/stage.py +++ b/astrbot/core/pipeline/respond/stage.py @@ -72,6 +72,20 @@ class RespondStage(Stage): # random return random.uniform(self.interval[0], self.interval[1]) + async def _is_empty_message_chain(self, chain): + """检查消息链是否为空 + + Args: + chain (MessageChain): 消息链 + """ + for comp in chain: + if isinstance(comp, Plain): + if comp.text.strip(): + return False + else: + return True + return True + async def process( self, event: AstrMessageEvent ) -> Union[None, AsyncGenerator[None, None]]: @@ -82,6 +96,13 @@ class RespondStage(Stage): if len(result.chain) > 0: await event._pre_send() + # 检查消息链是否为空 + if await self._is_empty_message_chain(result.chain): + logger.info("消息为空,跳过发送阶段") + event.clear_result() + event.stop_event() + return + if self.enable_seg and ( (self.only_llm_result and result.is_llm_result()) or not self.only_llm_result diff --git a/astrbot/core/provider/sources/gemini_source.py b/astrbot/core/provider/sources/gemini_source.py index 3233b3453..cc34784c5 100644 --- a/astrbot/core/provider/sources/gemini_source.py +++ b/astrbot/core/provider/sources/gemini_source.py @@ -127,7 +127,7 @@ class ProviderGoogleGenAI(Provider): if message["role"] == "user": if isinstance(message["content"], str): if not message["content"]: - message["content"] = "" + message["content"] = "" google_genai_conversation.append( {"role": "user", "parts": [{"text": message["content"]}]} @@ -138,7 +138,7 @@ class ProviderGoogleGenAI(Provider): for part in message["content"]: if part["type"] == "text": if not part["text"]: - part["text"] = "" + part["text"] = "" parts.append({"text": part["text"]}) elif part["type"] == "image_url": parts.append( @@ -156,7 +156,7 @@ class ProviderGoogleGenAI(Provider): elif message["role"] == "assistant": if "content" in message: if not message["content"]: - message["content"] = "" + message["content"] = "" google_genai_conversation.append( {"role": "model", "parts": [{"text": message["content"]}]} )