最近重新折腾了一下 Koishi 和 ChatLuna。我的需求其实很简单:把机器人放在群里,所有人共用同一段聊天记录,并且任何群友都可以执行 chatluna.new 开一个新会话。然而自从chatluna放弃了房间系统转而使用了会话系统之后,变得非常难用,默认管理员执行 new 没有问题,普通群友执行就会报错:
错误码 413:当前路由要求管理员权限才能管理会话。
一开始我以为是 Koishi 的指令权限问题,于是在指令管理里找了半天。后来又发现,把群聊模式改成“成员独立会话”之后,普通群友确实可以 new 了,但是每个人聊的内容也完全分开了。能执行是能执行了,大家却不在同一个聊天里,这显然不是我要的效果。(神秘权限问题+1)
而我手上正好有一份从旧版本 ChatLuna 迁移过来的数据库。同样使用新版本插件,换上这份旧数据库之后,群友就可以一起聊天,并且随便执行 new。然而,旧版本数据库在模型同步这一块又有问题,始终带着 Bug 运行实在难以维持,因此还是下定决心把这个问题彻底弄清楚。
虽然官方提供了会话相关文档,但只能说这份文档写得着实有点一坨:不少地方说得不清不楚,部分内容和当前源码还完全对不上。最后没办法,只能试着从源码层面读一读 ChatLuna 这套会话权限到底是怎么回事。


