跳到主要内容

何时使用指令

什么是指令?

接受用户发送的命令,通常是文字形式,然后机器人根据命令,执行相应操作,即为指令

为什么要用指令系统呢?

直接自己解析不行吗?

概览中,我们提到过,PepperBot 的指令系统,其实就是对群消息私聊消息等事件做了封装,那么,我们为什么不直接在事件响应中解析消息呢?还要单独实现一套指令系统?

事实上,如果只是非常简单的,只有一个参数的指令,比如“天气 上海”,“今日头条”之类的指令

直接用正则解析

city = re.search(r"天气 (\w*)", chain.pure_text)

甚至直接切片

city = chain.pure_text[3:]

或者直接判断是否包含

if "今日头条" in chain:
...

都是可以的

但是,但你想要实现更复杂、更强大、更灵活的指令,并且想要与其他人共享时,使用 PepperBot 的指令系统,无疑可以减轻很多工作量

PepperBot 的指令系统的能力

  • 自动解析多个参数,并且自动转换参数为指定的类型
async def test(self, int_arg: int = CLIArgument(), bool_arg: bool = CLIArgument()):
...
  • 引入会话概念,配合强大的生命周期能力

具体见指令的生命周期

  • 高级指令状态管理(指令的阶段/指向)

具体见指令的状态

  • 指令复用/多处使用,参数定制,更清晰的项目结构

TODO

  • 跨群/跨平台的指令状态共享,或者说交互策略

具体见交互策略