Skip to content

AyakaConfig

读写独立配置文件

基本使用

设计一个Config类中,该类继承AyakaConfig,编写方法参考pydantic.BaseModel

注意,继承时必须编写__config_name__的值

from ayaka import AyakaConfig, AyakaBox

box = AyakaBox("test")

class Config(AyakaConfig):
    __config_name__ = "一个名字"
    name:str = ""
    age:int = 0
    numbers:list[int] = [1,2]

# 加载配置
config = Config()

# 使用配置
@box.on_cmd("f1")
async def func_1():
    print(config.name, config.age, config.numbers)

# 修改配置
@box.on_cmd("f2")
async def func_2():
    config.name = "测试1"
    # config.save()

注意:一定要编写类型提示和默认值。如果配置文件不存在 或 存在但缺少一些数据,那么此时默认值便会写入配置文件中。因此,一定要编写默认值

代码 备注
name:str = "" 正确
name = "" 错误
name:str 错误
name 错误

对应配置文件data/ayaka/一个名字.json

{
    "name": "",
    "age": 0,
    "numbers": [ 1, 2 ]
}

自动保存

如果是修改不可变对象,那么ayaka会自动将新配置写入文件,可省略AyakaConfig().save()

如果是修改数组、字典等可变对象的值,则需要调用AyakaConfig().save()方法来提醒ayaka将数据写入文件

# 修改不可变对象
@box.on_cmd("f1")
async def func_1():
    config.name = "测试1"

# 修改可变对象
@box.on_cmd("f2")
async def func_2():
    config.numbers.boxend(-1)
    config.save()

进阶:可以嵌套

可以嵌套其他BaseModel模型

from pydantic import BaseModel
from ayaka import AyakaConfig, Ayakabox

box = Ayakabox("test")

class User(BaseModel):
    name: str
    age: int

class Config(AyakaConfig):
    __config_name__ = box.name
    user: User = User(name="默认", age=0)
    id:int = 1000

config = Config()

对应配置文件

{
    "user": {
        "name": "默认",
        "age": 0
    },
    "id": 1000
}

下一步

在这里~ ↘