用户:
test
- 第一项内容
- 第二项内容
-第三项内容
总结1
总结2
bot 仅返回 JSON.stringify({ options, content }) :
{"options":{"第":"","三":"","项":"","内":"","容":"总结1"},"content":"总结2"}
“-” 开头的被识别为了选项,前两项内容直接识别为空,第三项内容特意把空格去掉,被识别成了七零八落的选项,且总结1被吞了。
用户:
test
- 第一项内容
- 第二项内容
-第三项内容
总结1
总结2
bot 仅返回 JSON.stringify({ options, content }) :
{"options":{"第":"","三":"","项":"","内":"","容":"总结1"},"content":"总结2"}
“-” 开头的被识别为了选项,前两项内容直接识别为空,第三项内容特意把空格去掉,被识别成了七零八落的选项,且总结1被吞了。
咦 这是正确的结果 请阅读文档
确实是正确的。但是这样我就无法正常使用 command 了呀
只能使用事件或者中间件自己解析文本了。
ctx.command('test <content:text>', { strictOptions: true })
.action(({ options }, content) => {
return JSON.stringify({ options, content })
})
实验性功能,内部测试中。
事实上,这并不能完全解决此问题
有这样一种edge case:当第一个有效字符为-时,这个-会成为第一个参数填充content,其余的内容会被挤到第二个参数。这正好对应题设中的场景
-
不是 option 名的话,strictOptions 会视为 text 吧
ctx.command('test.send <content:text>', { strictOptions: true })
.action(async ({ options, args }, content) => {
return JSON.stringify({ content, args, options })
})
这个应该是 bug,我去修修(