常见问题
Kokkoro 1 和 Kokkoro 2 的区别是什么?
Kokkoro 1 是基于第三方协议库的实现,也就是野生机器人,并且已经停止维护。而 Kokkoro 2 是 QQ 官方机器人的实现,虽然功能比不上野生,但使用起来十分稳定。
为什么 Node.js 有版本要求?
Kokkoro 是基于 Amesu 开发的,而 Amesu 的 request
网络请求是使用 fetch
的封装,这在 18.0.0 中才得到支持。
为什么不推荐使用 PNPM?
我是 pnpm 的忠实信徒,使用 pnpm 作为包管理工具已有 2 年时间。在 Kokkoro 1 时期,我使用 multirepo 来管理项目,重构 Kokkoro 2 后,便采用了 monorepo 方案,这时仍在继续使用 pnpm。
但是随着时间的推移,我遇到了许许多多的问题,pnpm 其实并不是包管理的最优解决方案。它最大的问题就是排他,很多设计并没有去参照 npm 的标准。
而 Kokkoro 作为一个开源项目,要优先保证大部分使用者,包括初学人员的正常使用以及开发体验。如果没有相关经验,使用 pnpm 甚至还可能会遇到项目无法正常运行的问题,所以我在这里更推荐使用 npm 和 yarn 来管理机器人项目。
为什么不提供 query 的类型处理?
在插件开发一栏中我们有提到,command 的参数处理是通过命令行语法去定义的,也就是这种格式:
shell
command [param]
而对于命令语法,业界并没有一个统一的规范与标准。就像私有变量使用下划线前缀一样,这是大家约定成俗的行为。
如果要实现参数类型的处理,虽然我可以生造这种语法,但并没有任何意义,也不应该去这样做:
shell
command [param.number]
command [param:number]
所以我选择保持数据的原始性,将处理方式全权交给开发者,就向 JavaScript 一样保持高度自由性(笑)。