From d7d1c1544a29cb4e2dc4ccc8ea08206b6c70cb77 Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Sat, 12 Apr 2025 15:01:38 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=F0=9F=90=9B=20fix:=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E9=87=8D=E5=90=AFbot=E6=97=B6=E5=8F=AF=E8=83=BD=E5=8F=91?= =?UTF-8?q?=E7=94=9F=E6=8A=A5=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在 gewechat, wecom 等消息平台没启动成功的情况下重启bot会报错 --- .../platform/sources/gewechat/gewechat_platform_adapter.py | 5 ++++- astrbot/core/platform/sources/wecom/wecom_adapter.py | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/astrbot/core/platform/sources/gewechat/gewechat_platform_adapter.py b/astrbot/core/platform/sources/gewechat/gewechat_platform_adapter.py index 930359837..7d8dddfca 100644 --- a/astrbot/core/platform/sources/gewechat/gewechat_platform_adapter.py +++ b/astrbot/core/platform/sources/gewechat/gewechat_platform_adapter.py @@ -67,7 +67,10 @@ class GewechatPlatformAdapter(Platform): async def terminate(self): self.client.shutdown_event.set() - await self.client.server.shutdown() + try: + await self.client.server.shutdown() + except Exception as _: + pass logger.info("Gewechat 适配器已被优雅地关闭。") async def logout(self): diff --git a/astrbot/core/platform/sources/wecom/wecom_adapter.py b/astrbot/core/platform/sources/wecom/wecom_adapter.py index 4386a80ab..c6b7c096d 100644 --- a/astrbot/core/platform/sources/wecom/wecom_adapter.py +++ b/astrbot/core/platform/sources/wecom/wecom_adapter.py @@ -237,5 +237,8 @@ class WecomPlatformAdapter(Platform): async def terminate(self): self.server.shutdown_event.set() - await self.server.server.shutdown() + try: + await self.server.server.shutdown() + except Exception as _: + pass logger.info("企业微信 适配器已被优雅地关闭") From bced9ffff94970f1166443385d5d454afcd4cd7a Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Sat, 12 Apr 2025 15:24:37 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=F0=9F=90=9B=20fix:=20=E4=BF=AE=E5=A4=8Dzhi?= =?UTF-8?q?pu=E5=B7=A5=E5=85=B7=E8=B0=83=E7=94=A8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- astrbot/core/platform/sources/webchat/webchat_event.py | 2 +- astrbot/core/provider/func_tool_manager.py | 2 +- astrbot/core/provider/sources/openai_source.py | 6 ++++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/astrbot/core/platform/sources/webchat/webchat_event.py b/astrbot/core/platform/sources/webchat/webchat_event.py index ef5532920..30a6322a5 100644 --- a/astrbot/core/platform/sources/webchat/webchat_event.py +++ b/astrbot/core/platform/sources/webchat/webchat_event.py @@ -21,7 +21,7 @@ class WebChatMessageEvent(AstrMessageEvent): await web_chat_back_queue.put( {"type": "end", "data": "", "streaming": False} ) - return + return "" cid = session_id.split("!")[-1] data = "" diff --git a/astrbot/core/provider/func_tool_manager.py b/astrbot/core/provider/func_tool_manager.py index 72180759a..325f89199 100644 --- a/astrbot/core/provider/func_tool_manager.py +++ b/astrbot/core/provider/func_tool_manager.py @@ -339,7 +339,7 @@ class FuncCall: ] logger.info(f"已关闭 MCP 服务 {name}") - def get_func_desc_openai_style(self, omit_empty_parameter_field = True) -> list: + def get_func_desc_openai_style(self, omit_empty_parameter_field = False) -> list: """ 获得 OpenAI API 风格的**已经激活**的工具描述 """ diff --git a/astrbot/core/provider/sources/openai_source.py b/astrbot/core/provider/sources/openai_source.py index 703572b87..110d0d435 100644 --- a/astrbot/core/provider/sources/openai_source.py +++ b/astrbot/core/provider/sources/openai_source.py @@ -87,7 +87,8 @@ class ProviderOpenAIOfficial(Provider): async def _query(self, payloads: dict, tools: FuncCall) -> LLMResponse: if tools: - omit_empty_param_field = "grok" not in payloads.get("model", "").lower() + model = payloads.get("model", "").lower() + omit_empty_param_field = "gemini" in model tool_list = tools.get_func_desc_openai_style( omit_empty_parameter_field=omit_empty_param_field ) @@ -124,7 +125,8 @@ class ProviderOpenAIOfficial(Provider): ) -> AsyncGenerator[LLMResponse, None]: """流式查询API,逐步返回结果""" if tools: - omit_empty_param_field = "grok" not in payloads.get("model", "").lower() + model = payloads.get("model", "").lower() + omit_empty_param_field = "gemini" in model tool_list = tools.get_func_desc_openai_style( omit_empty_parameter_field=omit_empty_param_field ) From d6239822db4ca4affbef5f9190f2ed278cb943c6 Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Sat, 12 Apr 2025 15:27:33 +0800 Subject: [PATCH 3/3] release: v3.5.3.2 --- astrbot/core/config/default.py | 2 +- changelogs/v3.5.3.2.md | 41 ++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 changelogs/v3.5.3.2.md diff --git a/astrbot/core/config/default.py b/astrbot/core/config/default.py index d4542b31a..3be2acb15 100644 --- a/astrbot/core/config/default.py +++ b/astrbot/core/config/default.py @@ -2,7 +2,7 @@ 如需修改配置,请在 `data/cmd_config.json` 中修改或者在管理面板中可视化修改。 """ -VERSION = "3.5.3.1" +VERSION = "3.5.3.2" DB_PATH = "data/data_v3.db" # 默认配置 diff --git a/changelogs/v3.5.3.2.md b/changelogs/v3.5.3.2.md new file mode 100644 index 000000000..fdbe4fa3e --- /dev/null +++ b/changelogs/v3.5.3.2.md @@ -0,0 +1,41 @@ +# What's Changed + +> 📢 在升级前,请完整阅读本次更新日志。 +> 此版本为针对 `v3.5.3` 的紧急修复版本 +> 修复以下 BUG: +> 1. 智谱 GLM 在函数工具有空参数时报错的问题。 + +--- + +v3.5.3 + +## ✨ 新增的功能 + +1. Telegram、Webchat、QQ官方机器人平台(私聊)支持流式输出(实验性)。@Soulter @Raven95676 @anka-afk +2. 支持针对不同消息平台开启/关闭插件 @zhx8702 @Raven95676 @Soulter +3. 插件市场支持显示 Star 个数、插件管理支持插件帮助对话框 @kterna +4. 飞书平台支持主动消息发送 @Soulter +5. Telegram 平台适配显示指令列表,支持自动补全 @Raven95676 +6. 新增配置项允许配置当超出最多携带对话数量时,一次性丢弃多少条旧消息 @Rail1bc +7. StarTool 新增获取插件数据目录接口 @Raven95676 + +## 🎈 功能性优化 + +1. 优化 /his 指令对函数调用的显示 @anka-afk +2. QQ 官方机器人支持对同一条消息多次回复 @kuangfeng + +## 🐛 修复的 Bug + +1. ‼️ 修复使用 gemini 时,函数数工具调用会重复调用已经在过去会话中调用过的工具 @Soulter +2. 修复使用 Gemini 模型时出现 的问题 @anka-afk +4. 修复使用 OneAPI + Gemini(openai) 传递空参数函数工具时可能报错的问题 @Soulter +5. 修复 permission 过滤算子的 raise_error 参数失效的问题 @Soulter +6. 修复函数调用时可能出现 `messages with role 'tool' must be a response to a preceeding message with 'tool_calls'` 报错的问题 @anka-afk +7. 修复 dify 下删除对话的报错问题 @Soulter +8. 修复人格预设对话多次插入上下文的问题 @Rail1bc +9. 修复了 event.get_sender_id() 返回值与函数注释不一致的问题 @zsbai + + +## 🧩 新增的插件 + +待补充