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":
|
if key == "version":
|
||||||
continue
|
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:
|
if key in target:
|
||||||
# 键已存在,更新值
|
# 键已存在,更新值
|
||||||
target_value = target[key]
|
target_value = target[key]
|
||||||
@@ -497,6 +502,19 @@ def load_config(config_path: str) -> Config:
|
|||||||
logger.info("正在解析和验证配置文件...")
|
logger.info("正在解析和验证配置文件...")
|
||||||
config = Config.from_dict(config_data)
|
config = Config.from_dict(config_data)
|
||||||
logger.info("配置文件解析和验证完成")
|
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
|
return config
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.critical(f"配置文件解析失败: {e}")
|
logger.critical(f"配置文件解析失败: {e}")
|
||||||
|
|||||||
@@ -34,20 +34,39 @@ class PermissionManager(IPermissionManager):
|
|||||||
|
|
||||||
def _load_master_users(self):
|
def _load_master_users(self):
|
||||||
"""从配置文件加载Master用户列表"""
|
"""从配置文件加载Master用户列表"""
|
||||||
|
logger.info("开始从配置文件加载Master用户...")
|
||||||
try:
|
try:
|
||||||
master_users_config = global_config.permission.master_users
|
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()
|
self._master_users = set()
|
||||||
for user_info in master_users_config:
|
return
|
||||||
if isinstance(user_info, list) and len(user_info) == 2:
|
|
||||||
|
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
|
platform, user_id = user_info
|
||||||
self._master_users.add((str(platform), str(user_id)))
|
if not isinstance(platform, str) or not isinstance(user_id, str):
|
||||||
logger.info(f"已加载 {len(self._master_users)} 个Master用户")
|
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:
|
except Exception as e:
|
||||||
logger.warning(f"加载Master用户配置失败: {e}")
|
logger.error(f"加载Master用户配置时发生严重错误: {e}", exc_info=True)
|
||||||
self._master_users = set()
|
self._master_users = set()
|
||||||
|
|
||||||
def reload_master_users(self):
|
def reload_master_users(self):
|
||||||
"""重新加载Master用户配置"""
|
"""重新加载Master用户配置"""
|
||||||
|
logger.info("正在重新加载Master用户配置...")
|
||||||
self._load_master_users()
|
self._load_master_users()
|
||||||
logger.info("Master用户配置已重新加载")
|
logger.info("Master用户配置已重新加载")
|
||||||
|
|
||||||
@@ -62,10 +81,10 @@ class PermissionManager(IPermissionManager):
|
|||||||
bool: 是否为Master用户
|
bool: 是否为Master用户
|
||||||
"""
|
"""
|
||||||
user_tuple = (user.platform, user.user_id)
|
user_tuple = (user.platform, user.user_id)
|
||||||
is_master = user_tuple in self._master_users
|
is_master_flag = user_tuple in self._master_users
|
||||||
if is_master:
|
if is_master_flag:
|
||||||
logger.debug(f"用户 {user.platform}:{user.user_id} 是Master用户")
|
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:
|
async def check_permission(self, user: UserInfo, permission_node: str) -> bool:
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user