一点疑问 这边似乎没有分群/插件控制的机制

最近因为需求多平台支持,考虑向koishi迁移,拜读了文档,有如下疑问:

  • 内置的权限级别太少,且为全局权限,一旦设了用户权限就会对所有插件生效。
  • 各插件的分群控制。这一点虽然有过滤器,但一方面作为console/config的一部分,我没有找到console以外的管理插件过滤器的插件,另一方面当我每个插件都有几百个群需要打开/关闭的时候,这就已经不是config应当负担的内容了。何况还有reloadApp带来的问题。

我大概理解一些逻辑,对第一点大约是全平台的考虑,难以兼顾平台/频道/群组本身带有的权限系统。至于第二点,恐怕koishi作为原生bot平台,在如tg的平台上确实是按需添加的。但至少对于qq而言,单个bot携带大量功能是普遍现象,那么更复杂的权限就有其必要性。

想问官方/社区如何考虑这点的。

1 个赞

第一点,Koishi 的权限系统现在不能满足你的要求吗?

如图所示,我配置了 shutdown 这个指令在 QQ 上的 1000000 群内的 QQ 为 10000 的用户可以随意使用;telegram 上 10000 群内的任何用户可以随意使用;此外所有自身权限为 4 级以上的用户可以使用。

这个程度的权限控制会有什么需求无法覆盖到吗?

此外,你还提到了「更复杂的权限有其必要性」,不知道你所述的「复杂」是指什么意义上的复杂。有没有其他 bot 框架的例子可以列举的呢?


第二点,「console 以外」是指哪些地方呢?你认为在 console 以外的哪些地方进行「几百个群打开/关闭」的操作是比 console 和 config 更加合理的呢?如果 config 无法负担几百个群的开关需求,那么什么地方是可以轻松负担的呢?

此外你所提到的「reloadApp 带来的问题」,是否有考虑过不使用 reload 功能呢?如果你认为 reload 会带来问题(暂且不讨论是什么样的问题),那么你可以选择不使用 reload 功能。

1 个赞

主要是两方面的需求

  • 将用户设置为某个/组插件的权限者。因为不同的插件面向不同的领域人群,插件的权限不能等同于bot整体的权限
  • 插件在某个群/频道的可用性。

我说「console 以外」指的是例如在对应的群中使用例如「启用XX」的指令来进行控制。因为我现有的系统在默认情况下不会响应任何指令(因为不是纯bot),所有插件都需要手动白名单开启,使用全局的console进行配置过于复杂,且有权限泄露的风险。

reload在此不重要。

1 个赞

非常感谢你的建议!

官方确实计划在未来的版本引入指令化的权限系统(类似 luckperm),希望能满足你的需求。


以下是对一些细节的回应。

内置的权限级别太少

将用户设置为某个/组插件的权限者,插件的权限不能等同于 bot 整体的权限

这是很好的建议。我们肯定会加。

我没有找到 console 以外的管理插件过滤器的插件

在对应的群中使用例如「启用XX」的指令来进行控制

Koishi 的大部分用户都使用控制台进行机器人管理。但同时也有其他插件提供了指令式的管理,例如 switch。你可以了解一下,虽然功能肯定比 config 差不少。

reloadApp 带来的问题

Koishi 除全局配置以外的所有插件配置修改后都能热更新,不需要重启 App。不知道你遇到的问题是什么?

对第一点大约是全平台的考虑,难以兼顾平台/频道/群组本身带有的权限系统。

实际上没有这种考虑,是可以兼顾的。只是确实提出这部分需求的人比较少,所以没有做复杂的设计。如果你有这部分的场景,我非常欢迎你分享出来,我们会认真参考并作为后续设计的依据。

4 个赞

这个确实是有需求的场景,可以通过编写插件来实现。

相关链接: