Coder Social home page Coder Social logo

alconna's Introduction

Alconna

Alconna latest release Licence PyPI PyPI - Python Version

Alconna 隶属于ArcletProject, 是 Cesloi-CommandAnalysis 的高级版, 支持解析消息链或者其他原始消息数据

Alconna 拥有复杂的解析功能与命令组件,但 一般情况下请当作奇妙简易的消息链解析器/命令解析器(雾)

安装

pip

pip install --upgrade arclet-alconna

文档

文档 in GitHub

Example

from arclet.alconna import Alconna, Option, Subcommand, Args

cmd = Alconna(
    "/pip",
    options=[
        Subcommand("install", options=[Option("-u| --upgrade")], args=Args.pak_name[str]),
        Option("list"),
    ]
)

msg = "/pip install cesloi --upgrade"
result = cmd.parse(msg) # 该方法返回一个Arpamar类的实例
print(result.get('install'))  # 或者 result.install

其结果为

{'pak_name': 'cesloi', 'upgrade': Ellipsis}

用法

通过阅读Alconna的签名可以得知,Alconna支持四大类参数:

  • headers : 呼叫该命令的命令头,一般是你的机器人的名字或者符号,与command至少有一个填写. 例如: /, !
  • command : 命令名称,你的命令的名字,与headers至少有一个填写
  • options : 命令选项,你的命令可选择的所有option,是一个包含Subcommand与Option的列表
  • main_args : 主参数,填入后当且仅当命令中含有该参数时才会成功解析

解析时,先判断命令头(即 headers + command),再判断options与main argument, 这里options与main argument在输入指令时是不分先后的

假设有个Alconna如下:

Alconna(
    command="name",
    headers=["/"],
    options=[
        Subcommand(
            "sub_name",
            Option("sub_opt", sub_opt_arg="sub_arg"), 
            sub_main_arg="sub_main_arg"
        ),
        Option("opt", opt_arg="opt_arg")
    ],
    main_args="main_args"
)

则它可以解析如下命令:

/name sub_name sub_opt sub_arg sub_main_arg opt arg main_args
/name sub_name sub_main_arg opt arg main_argument
/name main_args opt arg
/name main_args

解析成功的命令的参数会保存在analysis_message方法返回的Arpamar实例中

性能参考

在 i5-10210U 处理器上, Alconna 的性能大约为 31000~101000 msg/s, 取决于 Alconna 的复杂程度

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.