ayaka.config
管理插件配置,读写ayaka_setting.json文件
1''' 2 管理插件配置,读写ayaka_setting.json文件 3''' 4 5import json 6from pathlib import Path 7from pydantic import BaseModel, ValidationError, validator 8from typing import List, Literal 9from loguru import logger 10 11total_settings: dict = {} 12setting_filepath = Path("ayaka_setting.json") 13if not setting_filepath.exists(): 14 with setting_filepath.open("w+", encoding="utf8") as f: 15 f.write("{}") 16 17with setting_filepath.open("r", encoding="utf8") as f: 18 total_settings = json.load(f) 19 20 21class AyakaPluginConfig(BaseModel): 22 @classmethod 23 def setup_app_name(cls, app_name): 24 cls.app_name = app_name 25 26 def __init__(self): 27 try: 28 super().__init__(**total_settings.get(self.app_name, {})) 29 except ValidationError as e: 30 logger.error( 31 f"导入配置失败,请检查 ayaka_setting.json 中,{self.app_name}的配置是否正确") 32 raise e 33 self.force_update() 34 35 def __setattr__(self, name, value): 36 super().__setattr__(name, value) 37 self.force_update() 38 39 def force_update(self): 40 total_settings[self.app_name] = self.dict() 41 with setting_filepath.open("w+", encoding="utf8") as f: 42 json.dump(total_settings, f, ensure_ascii=0, indent=4) 43 44 45def create_ayaka_plugin_config_base(app_name): 46 class _AyakaPluginConfig(AyakaPluginConfig): 47 pass 48 _AyakaPluginConfig.setup_app_name(app_name) 49 return _AyakaPluginConfig 50 51 52INIT_STATE = "init" 53AYAKA_VERSION = "0.4.5" 54 55 56BaseConfig = create_ayaka_plugin_config_base("__root__") 57 58 59class Config(BaseConfig): 60 version: str = AYAKA_VERSION 61 # 命令抬头 62 prefix: str = "#" 63 # 参数分割符 64 separate: str = " " 65 # 是否排除go-cqhttp缓存的过期消息 66 exclude_old_msg: bool = True 67 # 是否使用playwright 68 use_playwright: bool = True 69 # ayaka插件的所有者 70 owners: List[int] = [] 71 # ayaka插件的管理者 72 admins: List[int] = [] 73 # 切换bot类型 74 bot_type: Literal["nonebot", "ayakabot"] = "nonebot" 75 # 是否处于调试模式 76 debug: bool = False 77 78 @validator('separate') 79 def name_must_contain_space(cls, v): 80 if not v: 81 logger.warning("ayaka的分割符被设置为空字符串,这会使得ayaka无法正确分割参数") 82 return v 83 84 85ayaka_root_config = Config() 86ayaka_root_config.version = AYAKA_VERSION
class
AyakaPluginConfig(pydantic.main.BaseModel):
22class AyakaPluginConfig(BaseModel): 23 @classmethod 24 def setup_app_name(cls, app_name): 25 cls.app_name = app_name 26 27 def __init__(self): 28 try: 29 super().__init__(**total_settings.get(self.app_name, {})) 30 except ValidationError as e: 31 logger.error( 32 f"导入配置失败,请检查 ayaka_setting.json 中,{self.app_name}的配置是否正确") 33 raise e 34 self.force_update() 35 36 def __setattr__(self, name, value): 37 super().__setattr__(name, value) 38 self.force_update() 39 40 def force_update(self): 41 total_settings[self.app_name] = self.dict() 42 with setting_filepath.open("w+", encoding="utf8") as f: 43 json.dump(total_settings, f, ensure_ascii=0, indent=4)
AyakaPluginConfig()
27 def __init__(self): 28 try: 29 super().__init__(**total_settings.get(self.app_name, {})) 30 except ValidationError as e: 31 logger.error( 32 f"导入配置失败,请检查 ayaka_setting.json 中,{self.app_name}的配置是否正确") 33 raise e 34 self.force_update()
Create a new model by parsing and validating input data from keyword arguments.
Raises ValidationError if the input data cannot be parsed to form a valid model.
Inherited Members
- pydantic.main.BaseModel
- dict
- json
- parse_obj
- parse_raw
- parse_file
- from_orm
- construct
- copy
- schema
- schema_json
- validate
- update_forward_refs
def
create_ayaka_plugin_config_base(app_name):
60class Config(BaseConfig): 61 version: str = AYAKA_VERSION 62 # 命令抬头 63 prefix: str = "#" 64 # 参数分割符 65 separate: str = " " 66 # 是否排除go-cqhttp缓存的过期消息 67 exclude_old_msg: bool = True 68 # 是否使用playwright 69 use_playwright: bool = True 70 # ayaka插件的所有者 71 owners: List[int] = [] 72 # ayaka插件的管理者 73 admins: List[int] = [] 74 # 切换bot类型 75 bot_type: Literal["nonebot", "ayakabot"] = "nonebot" 76 # 是否处于调试模式 77 debug: bool = False 78 79 @validator('separate') 80 def name_must_contain_space(cls, v): 81 if not v: 82 logger.warning("ayaka的分割符被设置为空字符串,这会使得ayaka无法正确分割参数") 83 return v
Inherited Members
- pydantic.main.BaseModel
- dict
- json
- parse_obj
- parse_raw
- parse_file
- from_orm
- construct
- copy
- schema
- schema_json
- validate
- update_forward_refs