何时使用指令
什么是指令?
接受用户发送的命令,通常是文字形式,然后机器人根据命令,执行相应操作,即为指令
为什么要用指令系统呢?
直接自己解析不行吗?
在概览中,我们提到过,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
- 跨群/跨平台的指令状态共享,或者说交互策略
具体见交互策略