ctx
.command("test")
.action(async ({ session, options }, content) => {
session.send("command test");
})
.subcommand("inner1")
.action(async ({ session, options }, content) => {
session.send("subcommand inner1");
});
我尝试这样添加 action 但是无效
然后我又尝试了
ctx.command("test.inner1").action(async ({ session, options }, content) => {
session.send("test.inner1");
});
才可以正常运行。
那么 subcommand
该如何使用呢?
2 个赞
ctx
.command("test")
.action(async ({ session, options }, content) => {
session.send("command test");
})
ctx
.command("test")
.subcommand("inner1")
.action(async ({ session, options }, content) => {
session.send("subcommand inner1");
});
改成这样也是可以的:
ctx.command("test/innet1")
5 个赞
这样写的话有点麻烦,不清楚 subcommand 的意义何在,直接连起来一起写比较方便
3 个赞
In fact, what OP wrote above is not wrong, but register the Hierarchical subcommand
. I think you may want to register a derivative subcommand
. In that case, you just add a single dot .
before the subcommand name in the invocation of the subcommand function.
3 个赞
不太明白这是什么意思。
我又测试了一下
test inner1
触发了 test 的 action,inner1 是 content
test.inner1
和 .inner1
均不触发任何指令
inner1
触发 inner1
的 action
看起来 subcommand 的作用和直接 comman 的作用差不多。
ctx
.command("test")
.subcommand("inner1")
.action(async ({ session, options }, content) => {
session.send("subcommand inner1");
});
ctx.command("test.inner1").action(async ({ session, options }, content) => {
session.send("subcommand inner1");
});
这两种写法还是有点区别的。前者的效果是
且使用 test.inner1
无响应
后者的效果是
感觉有点混乱。
最佳实践应该是怎样的?
2 个赞
shigma
2024 年2 月 13 日 17:52
11
我们建议,如果一个指令有子指令,那么它不应该有 action。
(你非要写也没问题,能运行,但是平台兼容性会有下降)
4 个赞