Alconna Pattern - RF-Tar-Railt/Cesloi GitHub Wiki
ArgPattern
ArgPattern
是用来辅助参数解析工作的类, 你可以在alconna.types
中找到.
ArgPattern
有如下参数:
- pattern: 该参数的正则解析表达式
- transform: 该参数解析后是否需要类型转换
- transform_action: 该参数进行类型转换的函数(如果transform为真)
- type_mark: 针对
TemplateCommand
的Action
的类型检查 (应与解析后的最终结果的类型相符合)
例如:
test_type = ArgPattern(
r"(.+\.?.*?)",
need_transform=True,
type_mark=list,
transform_action=lambda x: x.split(".")
)
该test_type
的意思是
- 在解析时用
(.+\.?.*?)
作为正则解析 - 需要类型转换
- 若相应的
Arg
会传入Action
中, 在类型检查时该Arg
的type-hint应为list
- 针对该
Arg
的类型转换函数 (str -> list)
>>> alc = Alconna(
... command="test",
... main_args=Args["foo":test_type]
... )
>>> alc.analyse_message("test arclet.alconna").foo
['arclet', 'alconna']