Skip to main content
命令组件由用户通过!(或其他已设置的前缀)开头的命令消息触发。如下是命令!help的触发示例:

添加命令组件

单个插件中能添加任意数量的命令,请在插件目录执行命令lbp comp Command,并根据提示输入命令的配置。
现在即会在components/commands/目录下生成info.yamlinfo.py文件,.yaml定义了!info命令的基础信息,.py是该命令的处理程序:

清单文件:命令组件

插件处理

默认会生成如下代码(components/command/<命令名称>.py),您需要在Info类的initialize方法中注册并实现子命令的处理逻辑。
添加子命令:
该代码中,send函数通过装饰器@self.subcommand注册为子命令,并在其中打印了命令的上下文(ExecuteContext)信息并拼接成一条回复消息。

子命令注册

name 为子命令名称,留空表示处理主命令。不为空则匹配第二个参数为命令,例如:
  • !info 匹配 name="" 的子命令
  • !info field 匹配 name=“field” 的子命令
  • !info field value 匹配 name=“field” 的子命令,value 为子命令参数
  • 特殊地,name="*" 匹配所有未匹配的一级子命令,并将info后的每一节作为参数传递传递参数,例如!info 123, !info abc. 此时可以从context.crt_params中获取到['123']['abc'],取决于用户输入的参数。
子命令函数中,可通过 context 变量读取到命令参数。 上述命令效果如图:

命令上下文

命令返回值

命令返回值(CommandReturn)目前支持返回文本(text)和图片(image_url,图片链接)、错误(error)。
命令处理支持返回多条消息,故请使用yield语句返回消息。 具体的返回值请参考CommandReturn的定义:langbot_plugin.api.entities.builtin.command.context.CommandReturn

接下来做什么

您已经了解了命令注册和命令执行的基本信息,接下来可以: