Merge branch 'dev' of https://github.com/MoFox-Studio/MoFox-Core into dev
This commit is contained in:
@@ -185,6 +185,11 @@ def _update_dict(target: TOMLDocument | dict | Table, source: TOMLDocument | dic
|
||||
if key == "version":
|
||||
continue
|
||||
|
||||
# 在合并 permission.master_users 时添加特别调试日志
|
||||
if key == "permission" and isinstance(value, (dict, Table)) and "master_users" in value:
|
||||
logger.info(f"【调试日志】在 _update_dict 中检测到 'permission' 表,其 'master_users' 的值为: {value['master_users']}")
|
||||
|
||||
|
||||
if key in target:
|
||||
# 键已存在,更新值
|
||||
target_value = target[key]
|
||||
@@ -497,6 +502,19 @@ def load_config(config_path: str) -> Config:
|
||||
logger.info("正在解析和验证配置文件...")
|
||||
config = Config.from_dict(config_data)
|
||||
logger.info("配置文件解析和验证完成")
|
||||
|
||||
# 【临时修复】在验证后,手动从原始数据重新加载 master_users
|
||||
try:
|
||||
# 先将 tomlkit 对象转换为纯 Python 字典
|
||||
config_dict = config_data.unwrap()
|
||||
if "permission" in config_dict and "master_users" in config_dict["permission"]:
|
||||
raw_master_users = config_dict["permission"]["master_users"]
|
||||
# 现在 raw_master_users 就是一个标准的 Python 列表了
|
||||
config.permission.master_users = raw_master_users
|
||||
logger.info(f"【临时修复】已手动将 master_users 设置为: {config.permission.master_users}")
|
||||
except Exception as patch_exc:
|
||||
logger.error(f"【临时修复】手动设置 master_users 失败: {patch_exc}")
|
||||
|
||||
return config
|
||||
except Exception as e:
|
||||
logger.critical(f"配置文件解析失败: {e}")
|
||||
|
||||
@@ -34,20 +34,39 @@ class PermissionManager(IPermissionManager):
|
||||
|
||||
def _load_master_users(self):
|
||||
"""从配置文件加载Master用户列表"""
|
||||
logger.info("开始从配置文件加载Master用户...")
|
||||
try:
|
||||
master_users_config = global_config.permission.master_users
|
||||
if not isinstance(master_users_config, list):
|
||||
logger.warning(f"配置文件中的 permission.master_users 不是一个列表,已跳过加载。")
|
||||
self._master_users = set()
|
||||
for user_info in master_users_config:
|
||||
if isinstance(user_info, list) and len(user_info) == 2:
|
||||
return
|
||||
|
||||
self._master_users = set()
|
||||
for i, user_info in enumerate(master_users_config):
|
||||
if not isinstance(user_info, list) or len(user_info) != 2:
|
||||
logger.warning(f"Master用户配置项格式错误 (索引: {i}): {user_info},应为 [\"platform\", \"user_id\"]")
|
||||
continue
|
||||
|
||||
platform, user_id = user_info
|
||||
self._master_users.add((str(platform), str(user_id)))
|
||||
logger.info(f"已加载 {len(self._master_users)} 个Master用户")
|
||||
if not isinstance(platform, str) or not isinstance(user_id, str):
|
||||
logger.warning(
|
||||
f"Master用户配置项 platform 或 user_id 类型错误 (索引: {i}): [{type(platform).__name__}, {type(user_id).__name__}],应为字符串"
|
||||
)
|
||||
continue
|
||||
|
||||
self._master_users.add((platform, user_id))
|
||||
logger.debug(f"成功加载Master用户: platform={platform}, user_id={user_id}")
|
||||
|
||||
logger.info(f"成功加载 {len(self._master_users)} 个Master用户")
|
||||
|
||||
except Exception as e:
|
||||
logger.warning(f"加载Master用户配置失败: {e}")
|
||||
logger.error(f"加载Master用户配置时发生严重错误: {e}", exc_info=True)
|
||||
self._master_users = set()
|
||||
|
||||
def reload_master_users(self):
|
||||
"""重新加载Master用户配置"""
|
||||
logger.info("正在重新加载Master用户配置...")
|
||||
self._load_master_users()
|
||||
logger.info("Master用户配置已重新加载")
|
||||
|
||||
@@ -62,10 +81,10 @@ class PermissionManager(IPermissionManager):
|
||||
bool: 是否为Master用户
|
||||
"""
|
||||
user_tuple = (user.platform, user.user_id)
|
||||
is_master = user_tuple in self._master_users
|
||||
if is_master:
|
||||
is_master_flag = user_tuple in self._master_users
|
||||
if is_master_flag:
|
||||
logger.debug(f"用户 {user.platform}:{user.user_id} 是Master用户")
|
||||
return is_master
|
||||
return is_master_flag
|
||||
|
||||
async def check_permission(self, user: UserInfo, permission_node: str) -> bool:
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user