ayaka.depend.input

 1from typing import TYPE_CHECKING, Union
 2from typing_extensions import Self
 3from pydantic import ValidationError, validator
 4from .depend import AyakaDepend
 5from ..driver import MessageSegment
 6
 7if TYPE_CHECKING:
 8    from ..ayaka import AyakaApp
 9
10
11class AyakaInput(AyakaDepend):
12    '''解析命令行参数为对应成员属性
13
14    注意:每个成员属性都必须标注类型,否则可能解析顺序出错'''
15    @classmethod
16    async def create_by_app(cls, app: "AyakaApp") -> Union[Self, None]:
17        '''可用于重构'''
18        params = await cls.create_by_app_get_params(app)
19        try:
20            return cls(**params)
21        except ValidationError as e:
22            return await cls.create_by_app_deal_exc(app, e)
23
24    @classmethod
25    async def create_by_app_get_params(cls, app: "AyakaApp") -> dict:
26        '''可用于重构'''
27        args = app.args
28        props = cls.props()
29        return {k: v for k, v in zip(props, args)}
30
31    @classmethod
32    async def create_by_app_deal_exc(cls, app: "AyakaApp", e: ValidationError) -> Union[Self, None]:
33        '''可用于重构'''
34        # await app.bot.send_group_msg(group_id=app.group_id, message=str(e))
35        print(e)
36
37    @classmethod
38    def help(cls) -> dict:
39        props = cls.props()
40        data = {k: v.get("description", "") for k, v in props.items()}
41        return data
42
43    @validator("*", pre=True)
44    def __all_validator__(cls, v):
45        if isinstance(v, MessageSegment) and v.type == "text":
46            return v.data["text"]
47        return v
class AyakaInput(ayaka.depend.depend.AyakaDepend):
12class AyakaInput(AyakaDepend):
13    '''解析命令行参数为对应成员属性
14
15    注意:每个成员属性都必须标注类型,否则可能解析顺序出错'''
16    @classmethod
17    async def create_by_app(cls, app: "AyakaApp") -> Union[Self, None]:
18        '''可用于重构'''
19        params = await cls.create_by_app_get_params(app)
20        try:
21            return cls(**params)
22        except ValidationError as e:
23            return await cls.create_by_app_deal_exc(app, e)
24
25    @classmethod
26    async def create_by_app_get_params(cls, app: "AyakaApp") -> dict:
27        '''可用于重构'''
28        args = app.args
29        props = cls.props()
30        return {k: v for k, v in zip(props, args)}
31
32    @classmethod
33    async def create_by_app_deal_exc(cls, app: "AyakaApp", e: ValidationError) -> Union[Self, None]:
34        '''可用于重构'''
35        # await app.bot.send_group_msg(group_id=app.group_id, message=str(e))
36        print(e)
37
38    @classmethod
39    def help(cls) -> dict:
40        props = cls.props()
41        data = {k: v.get("description", "") for k, v in props.items()}
42        return data
43
44    @validator("*", pre=True)
45    def __all_validator__(cls, v):
46        if isinstance(v, MessageSegment) and v.type == "text":
47            return v.data["text"]
48        return v

解析命令行参数为对应成员属性

注意:每个成员属性都必须标注类型,否则可能解析顺序出错

@classmethod
async def create_by_app( cls, app: ayaka.ayaka.AyakaApp) -> Union[typing_extensions.Self, NoneType]:
16    @classmethod
17    async def create_by_app(cls, app: "AyakaApp") -> Union[Self, None]:
18        '''可用于重构'''
19        params = await cls.create_by_app_get_params(app)
20        try:
21            return cls(**params)
22        except ValidationError as e:
23            return await cls.create_by_app_deal_exc(app, e)

可用于重构

@classmethod
async def create_by_app_get_params(cls, app: ayaka.ayaka.AyakaApp) -> dict:
25    @classmethod
26    async def create_by_app_get_params(cls, app: "AyakaApp") -> dict:
27        '''可用于重构'''
28        args = app.args
29        props = cls.props()
30        return {k: v for k, v in zip(props, args)}

可用于重构

@classmethod
async def create_by_app_deal_exc( cls, app: ayaka.ayaka.AyakaApp, e: pydantic.error_wrappers.ValidationError) -> Union[typing_extensions.Self, NoneType]:
32    @classmethod
33    async def create_by_app_deal_exc(cls, app: "AyakaApp", e: ValidationError) -> Union[Self, None]:
34        '''可用于重构'''
35        # await app.bot.send_group_msg(group_id=app.group_id, message=str(e))
36        print(e)

可用于重构

@classmethod
def help(cls) -> dict:
38    @classmethod
39    def help(cls) -> dict:
40        props = cls.props()
41        data = {k: v.get("description", "") for k, v in props.items()}
42        return data
Inherited Members
pydantic.main.BaseModel
BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
ayaka.depend.depend.AyakaDepend
props