command 指令对内容为 markdown 无序列表时的识别问题

用户:

test
- 第一项内容
- 第二项内容
-第三项内容
总结1
总结2

bot 仅返回 JSON.stringify({ options, content }) :

{"options":{"第":"","三":"","项":"","内":"","容":"总结1"},"content":"总结2"}

“-” 开头的被识别为了选项,前两项内容直接识别为空,第三项内容特意把空格去掉,被识别成了七零八落的选项,且总结1被吞了。

2 个赞

咦 这是正确的结果 请阅读文档

1 个赞

确实是正确的。但是这样我就无法正常使用 command 了呀 :cry:

只能使用事件或者中间件自己解析文本了。

2 个赞
ctx.command('test <content:text>', { strictOptions: true })
  .action(({ options }, content) => {
    return JSON.stringify({ options, content })
  })
3 个赞

有这个选项的话为什么不写在文档里?

3 个赞

实验性功能,内部测试中。

5 个赞

事实上,这并不能完全解决此问题

有这样一种edge case:当第一个有效字符为-时,这个-会成为第一个参数填充content,其余的内容会被挤到第二个参数。这正好对应题设中的场景

1 个赞

- 不是 option 名的话,strictOptions 会视为 text 吧

1 个赞
  ctx.command('test.send <content:text>', { strictOptions: true })
    .action(async ({ options, args }, content) => {
      return JSON.stringify({ content, args, options })
    })

image

1 个赞

这个应该是 bug,我去修修(

1 个赞