Alconna Pattern - RF-Tar-Railt/Cesloi GitHub Wiki

ArgPattern

ArgPattern是用来辅助参数解析工作的类, 你可以在alconna.types中找到.

ArgPattern有如下参数:

  • pattern: 该参数的正则解析表达式
  • transform: 该参数解析后是否需要类型转换
  • transform_action: 该参数进行类型转换的函数(如果transform为真)
  • type_mark: 针对TemplateCommandAction的类型检查 (应与解析后的最终结果的类型相符合)

例如:

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']