新增是否启用新yaml配置的配置项,更新readme

This commit is contained in:
2024-11-24 11:23:03 +08:00
parent 994d27e481
commit 8221fa7928
3 changed files with 79 additions and 63 deletions

View File

@ -1,13 +1,14 @@
import shutil
from pydantic import BaseModel
from nonebot import logger
from nonebot import logger, get_plugin_config
from ruamel.yaml import YAML
import yaml as yaml_
from pathlib import Path
class ConfigModel(BaseModel):
marshoai_use_yaml_config: bool = False
marshoai_token: str = ""
# marshoai_support_image_models: list = ["gpt-4o","gpt-4o-mini"]
marshoai_default_name: str = "marsho"
@ -52,16 +53,16 @@ destination_file = destination_folder / "config.yaml"
def copy_config(source_template, destination_file):
"""
'''
复制模板配置文件到config
"""
'''
shutil.copy(source_template, destination_file)
def check_yaml_is_changed(source_template):
"""
'''
检查配置文件是否需要更新
"""
'''
with open(config_file_path, 'r', encoding="utf-8") as f:
old = yaml.load(f)
with open(source_template, 'r', encoding="utf-8") as f:
@ -75,9 +76,9 @@ def check_yaml_is_changed(source_template):
def merge_configs(old_config, new_config):
"""
'''
合并配置文件
"""
'''
for key, value in new_config.items():
if key in old_config:
continue
@ -86,29 +87,33 @@ def merge_configs(old_config, new_config):
old_config[key] = value
return old_config
if not config_file_path.exists():
logger.info("配置文件不存在,正在创建")
config_file_path.parent.mkdir(parents=True, exist_ok=True)
copy_config(source_template, destination_file)
config: ConfigModel = get_plugin_config(ConfigModel)
if config.marshoai_use_yaml_config:
if not config_file_path.exists():
logger.info("配置文件不存在,正在创建")
config_file_path.parent.mkdir(parents=True, exist_ok=True)
copy_config(source_template, destination_file)
else:
logger.info("配置文件存在,正在读取")
if check_yaml_is_changed(source_template):
yaml_2 = YAML()
logger.info("插件新的配置已更新, 正在更新")
with open(config_file_path, 'r', encoding="utf-8") as f:
old_config = yaml_2.load(f)
with open(source_template, 'r', encoding="utf-8") as f:
new_config = yaml_2.load(f)
merged_config = merge_configs(old_config, new_config)
with open(destination_file, 'w', encoding="utf-8") as f:
yaml_2.dump(merged_config, f)
with open(config_file_path, "r", encoding="utf-8") as f:
yaml_config = yaml_.load(f, Loader=yaml_.FullLoader)
config = ConfigModel(**yaml_config)
else:
logger.info("配置文件存在,正在读取")
if check_yaml_is_changed(source_template):
logger.info("插件新的配置已更新, 正在更新")
with open(config_file_path, 'r', encoding="utf-8") as f:
old_config = yaml.load(f)
with open(source_template, 'r', encoding="utf-8") as f:
new_config = yaml.load(f)
merged_config = merge_configs(old_config, new_config)
with open(destination_file, 'w', encoding="utf-8") as f:
yaml.dump(merged_config, f)
with open(config_file_path, "r", encoding="utf-8") as f:
yaml_config = yaml_.load(f, Loader=yaml_.FullLoader)
config = ConfigModel(**yaml_config)
logger.info("MarshoAI 支持新的 YAML 配置系统,若要使用,请将 MARSHOAI_USE_YAML_CONFIG 配置项设置为 true。")