From a2eb7521d511a32298e4c7580e734dc99a6eb4bd Mon Sep 17 00:00:00 2001 From: minecraft1024a Date: Sat, 25 Oct 2025 17:15:20 +0800 Subject: [PATCH] =?UTF-8?q?fix(chat):=20=E4=BF=AE=E5=A4=8D=E5=BD=93?= =?UTF-8?q?=E7=94=A8=E6=88=B7ID=E4=B8=BA=E7=A9=BA=E6=97=B6=E4=B8=BB?= =?UTF-8?q?=E4=BA=BA=E8=AE=A4=E8=AF=81=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在某些情况下(例如,某些平台或匿名使用场景),用户信息中可能不包含`user_id`。之前的代码没有处理这种情况,导致在调用`permission_api.is_master`时会因`user_id`为空而引发异常。 本次修改增加了对`user_id`的空值检查。如果`user_id`不存在,将直接返回空字符串,避免不必要的权限验证和潜在的错误,从而增强了代码的健壮性。 --- src/chat/replyer/default_generator.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/chat/replyer/default_generator.py b/src/chat/replyer/default_generator.py index eca387936..6be4d954d 100644 --- a/src/chat/replyer/default_generator.py +++ b/src/chat/replyer/default_generator.py @@ -259,15 +259,19 @@ class DefaultReplyer: async def _build_auth_role_prompt(self) -> str: """根据主人配置生成额外提示词""" - master_config = getattr(global_config.permission, "master_prompt", None) + master_config = global_config.permission.master_prompt if not master_config or not master_config.enable: return "" platform, user_id = self.chat_stream.platform, self.chat_stream.user_info.user_id try: - is_master = await permission_api.is_master(platform, user_id) - hint = master_config.master_hint if is_master else master_config.non_master_hint - return hint.strip() + if user_id: + is_master = await permission_api.is_master(platform, user_id) + hint = master_config.master_hint if is_master else master_config.non_master_hint + return hint.strip() + else: + logger.info("无法获得id") + return "" except Exception as e: logger.warning(f"检测主人身份失败: {e}") return ""