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
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)
可用于重构
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)
可用于重构
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