命令解析器
这里我们详细介绍一下命令解析器 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_helpenable: 插件开关(可选),默认为Truehidded: 是否隐藏插件(可选),默认为Falsefriend_limit: 用户频率限制(可选),若配置文件未填写该配置,默认为0。作用域:整个插件group_limit: 群组频率限制(可选),若配置文件未填写该配置,默认为0。作用域:整个插件
# 模块化处理命令
# 匹配指定内容
注意
不可重复
Commander 提供了 parse 装饰器用于匹配指定内容。
@command.parse(<name>, ...)
def ...(...):
...
name: 需要匹配的内容 -str|list[str]
# 无匹配内容
Commander 提供了 no_match 装饰器用于指定无匹配内容时执行的内容。
未使用该装饰器时,默认将返回帮助菜单。
# 公共参数解析
这里列出它们的相同参数解析
events: 消息事件过滤器(默认不过滤) - 类型:listFriendMessage: 好友消息app.util.grala.FriendMessage
GroupMessage: 群消息app.util.grala.GroupMessage
TempMessage: 临时消息app.util.grala.TempMessage
StrageMessage: 陌生人消息app.util.grala.StrageMessage(暂不支持处理)
permission: 权限控制(默认允许除黑名单以外的所有用户) - 类型:app.util.control.Permissionfriend_limit: 用户频率限制(默认不限制) - 类型:float作用域:该匹配器group_limit: 群组频率限制(默认不限制) - 类型:float作用域:该匹配器
# 命令解析结果
Commander 会将 Alconna 封装的解析结果 Arpamar 原封不动的返回。如需或许解析结果,你只需在函数参数中添加一个 Arpamar 类型的参数即可。
@command(...)
def ...(..., cmd: Arpamar):
...
上次更新: 2022/11/22, 00:08:13