koishijs / webui

WebUI plugins for Koishi
https://koishi.online
GNU Affero General Public License v3.0
29 stars 14 forks source link

Bug: 指令管理command 无法配置option选项权限 #295

Closed Charles-LF closed 8 months ago

Charles-LF commented 8 months ago

Describe the bug

代码中写了

ctx .command("cx ", "获取wiki详情页") .option("update", "-u 更新缓存") 但是在指令管理中无法为 -u 配置权限

Steps to reproduce

最新版 koishi,插件为koishi-plugin-oni

Expected behavior

能够为 -u 选项单独配置权限

Screenshots

1 2

Versions

System: OS: Linux 5.15 Ubuntu 22.04.3 LTS 22.04.3 LTS (Jammy Jellyfish) CPU: (2) x64 Intel(R) Xeon(R) Platinum

Binaries: Node: 20.5.1 Yarn: 4.0.1

Koishi: Core: 4.16.4 Console: 5.25.6

Additional context

No response

CyanChanges commented 8 months ago

可能和这一段配置有关系:

plugins:
    commands:2oikfw:
      cx: # here
        aliases:
          查: {}

image

这一段加上, 重启 Koishi 选项配置权限就没了 删掉, 重启 Koishi 又有了

Charles-LF commented 8 months ago

可能和这一段配置有关系:

plugins:
    commands:2oikfw:
      cx: # here
        aliases:
          查: {}

image

这一段加上, 重启 Koishi 选项配置权限就没了 删掉, 重启 Koishi 又有了

正解.为什么会这样?

CyanChanges commented 8 months ago

可能和这一段配置有关系:

plugins:
    commands:2oikfw:
      cx: # here
        aliases:
          查: {}

image 这一段加上, 重启 Koishi 选项配置权限就没了 删掉, 重启 Koishi 又有了

正解.为什么会这样?

等我看一下啊,平常没看这块的代码(

CyanChanges commented 8 months ago

可能和这一段配置有关系:

plugins:
    commands:2oikfw:
      cx: # here
        aliases:
          查: {}

image 这一段加上, 重启 Koishi 选项配置权限就没了 删掉, 重启 Koishi 又有了

正解.为什么会这样?

等我看一下啊,平常没看这块的代码(

好像有亿点复杂( 我先去调试一下(

CyanChanges commented 8 months ago

可能和这一段配置有关系:

plugins:
    commands:2oikfw:
      cx: # here
        aliases:
          查: {}

image 这一段加上, 重启 Koishi 选项配置权限就没了 删掉, 重启 Koishi 又有了

正解.为什么会这样?

等我看一下啊,平常没看这块的代码(

好像有亿点复杂( 我先去调试一下(

总之应该是 plugin-commands override 的时候有了什么副作用, 然后把 options 吞了( 具体我 webui build 不上去没办法调试( 不大清楚, 问问 @shigma 吧

image 可以看到前端拿到的数据里 options 什么都没有

image 删掉那一段, 又有了

CyanChanges commented 8 months ago

大抵上是这样的( image

所以 plugin-commands 要不要等调用的时候 lazy 的 override 什么的(x 不然还没初始化完就 override, 然后 snap 的 shot 还是旧的( 或者是 hook Command 有什么属性修改的时候还原改完重新 override(

shigma commented 8 months ago

感谢楼上的总结,已经稳定复现:

  1. 找到任意有 help 以外选项的指令
  2. 添加任意别名
  3. 前往插件并重载
  4. 前往指令,可以看到选项设置消失