v5 - 正在使用¶
大幅度更新了API,部分旧API可兼容
0.5.3¶
彻底从底层改写了ayaka的状态机¶
现在,ayaka拥有一棵唯一的状态机树
0层 - root
1层 - 插件1 插件2 插件3 ...
2层 - 插件1.一级菜单项 ...
3层 - 插件1.一级菜单项.二级菜单项 ...
所有状态都是树中的一个结点
group.state指向树中的一个结点
不同的group.state其指向的结点不同,但是均属于这棵唯一的状态机树
每个状态结点都可以设置其进入、离开时触发的回调。举例说明其作用:
root.插件1.测试 -> root.插件2.你好
具体流程:
- 执行
root.插件1.测试
的退出回调 - 执行
root.插件1
的退出回调 - 执行
root.插件2
的进入回调 - 执行
root.插件2.你好
的进入回调
修改了ayaka注册回调的方法¶
现在它更具拓展性,且不再要求装饰器的书写顺序
具体原理:
所有被app.on_x系列装饰器修饰过的函数func,其修改后的结果保存在func.xxx属性上,而func本身被存入一个总列表
当所有插件的装饰器都修饰完毕后,遍历总列表,此时才依照func身上保存的属性,生成对应的触发器
随后,当bot收到消息后,找到对应的触发器执行回调
增加了AyakaInput类和ayaka.msy_type模块¶
提供一个简单的参数解析
增加了AyakaDB、AyakaUserDB、AyakaGroupDB类¶
提供sqlite数据库支持
删除了ayaka.storage¶
重新设计了ayaka.cache,增加了AyakaCache类¶
删除了ayaka.BaseConfig属性,增加了AyakaConfig、AyakaLargeConfig类¶
删除了ayaka.parse¶
兼容旧API¶
- app.on.text
- app.on.command
- app.on.idle
- app.on.state
- app.on.everyday
- app.on.interval
特殊:@app.on.state("*")兼容性一般,可能会出现错误。建议更换为
@app.on_state()
@app.on_deep_all()
暂时移除了插件的启用、禁用功能¶
考虑使用更加精细的控制,精确到群、插件、人、时间段
考虑分成两部分开发,一部分是核心控制逻辑,没有和用户交互的方法,
另一部分是前台交互应用,用户通过它间接调用核心控制逻辑,
从而提高核心控制逻辑的可拓展性
新增方法¶
- app.set_start_cmds
- app.set_close_cmds
新注册回调方法¶
- app.on_cmd
- app.on_text
- app.on_idle
- app.on_state