fix(chat): 修复当用户ID为空时主人认证失败的问题

在某些情况下(例如,某些平台或匿名使用场景),用户信息中可能不包含`user_id`。之前的代码没有处理这种情况,导致在调用`permission_api.is_master`时会因`user_id`为空而引发异常。

本次修改增加了对`user_id`的空值检查。如果`user_id`不存在,将直接返回空字符串,避免不必要的权限验证和潜在的错误,从而增强了代码的健壮性。
This commit is contained in:
minecraft1024a
2025-10-25 17:15:20 +08:00
parent 0381320859
commit a2eb7521d5

View File

@@ -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 ""