命令解析器
这里我们详细介绍一下命令解析器 Commander
。
Commander
对 Alconna 进行了部分封装,简化了命令的注册过程,并提供了模块化的子命令处理等功能。
# 引入
from app.util.alconna import Commander
# 注册命令
提示
由于部分原因,现暂不支持单插件注册多个命令。
command = Commander(...)
# 参数解析
为了减少学习成本,Commander
的参数解析与 Alconna
基本一致。
entry
: 主命令(必填)brief_help
: 命令简介(必填)*args
: 命令选项,与Alconna
一致,可由命令参数(Args
)、选项(Option
)、子命令(Subcommand
)组成。command
: 真正的主命令(默认为entry
)。主要用于解决主命令为正则表达式时,无法对其进行的一些其它操作。help_text
: 命令帮助文本(可选),默认为brief_help
enable
: 插件开关(可选),默认为True
hidded
: 是否隐藏插件(可选),默认为False
friend_limit
: 用户频率限制(可选),若配置文件未填写该配置,默认为0
。作用域:整个插件group_limit
: 群组频率限制(可选),若配置文件未填写该配置,默认为0
。作用域:整个插件
# 模块化处理命令
# 匹配指定内容
注意
不可重复
Commander
提供了 parse
装饰器用于匹配指定内容。
@command.parse(<name>, ...)
def ...(...):
...
name
: 需要匹配的内容 -str
|list[str]
# 无匹配内容
Commander
提供了 no_match
装饰器用于指定无匹配内容时执行的内容。
未使用该装饰器时,默认将返回帮助菜单。
# 公共参数解析
这里列出它们的相同参数解析
events
: 消息事件过滤器(默认不过滤) - 类型:list
FriendMessage
: 好友消息app.util.grala.FriendMessage
GroupMessage
: 群消息app.util.grala.GroupMessage
TempMessage
: 临时消息app.util.grala.TempMessage
StrageMessage
: 陌生人消息app.util.grala.StrageMessage
(暂不支持处理)
permission
: 权限控制(默认允许除黑名单以外的所有用户) - 类型:app.util.control.Permission
friend_limit
: 用户频率限制(默认不限制) - 类型:float
作用域:该匹配器group_limit
: 群组频率限制(默认不限制) - 类型:float
作用域:该匹配器
# 命令解析结果
Commander
会将 Alconna
封装的解析结果 Arpamar
原封不动的返回。如需或许解析结果,你只需在函数参数中添加一个 Arpamar
类型的参数即可。
@command(...)
def ...(..., cmd: Arpamar):
...
上次更新: 2022/11/22, 00:08:13