khjxiaogu / MiraiSongPlugin

用mirai机器人搜索音乐并以卡片的形式分享
GNU Affero General Public License v3.0
266 stars 29 forks source link

[BUG]反馈一个很小的问题(强迫症系列) #27

Closed byx2020 closed 3 years ago

byx2020 commented 3 years ago

描述bug问题 按照正常的指令匹配规则,是必须要加空格才能触发点歌指令的,但是我发现了一个例外的情况,仅发送指令不加任何内容也可以触发指令,返回结果都是无法找到歌曲,我不知道这是什么原因,但感觉没什么必要,建议大佬可以优化一下正则匹配,当然,这其实对正常使用没什么影响,一般也不会被触发,只是偶尔看到了就有点难受……

截屏/报错信息 35111 35104

khjxiaogu commented 3 years ago

本插件并非正则匹配,而是把指令后面的内容发送到音乐平台搜索,无法找到歌曲应当是正常的行为。添加检测则有可能导致兼容性下降的问题。

byx2020 commented 3 years ago

本插件并非正则匹配,而是把指令后面的内容发送到音乐平台搜索,无法找到歌曲应当是正常的行为。添加检测则有可能导致兼容性下降的问题。

本来我之前也以为是前缀匹配,但在测试时发现以下两个结果:

  1. 直接只发送指令,后面既没有空格也没有歌曲名,结果是可以触发点歌指令。
  2. 发送指令时,后面直接加上歌曲名,但中间没有加空格,结果是不会触发点歌指令。

根据上面的现象可以推理:

  1. 如果只是前缀匹配的话,指令后面不论有无空格应该都会触发指令才对,与结果2不符合,所以排除。
  2. 如果前缀匹配加空格检测(即为检测到空格不触发指令),这种情况下与结果1不符合,所以排除。

然后我才推断应该是正则匹配。 不过现在我对于大佬的回复有两点比较好奇:

  1. 既然是把指令后面的内容发送到音乐平台搜索,那为什么会出现结果2这种情况呢,毕竟我在config.yml文件内配置指令时没有在指令后面加空格。
  2. 添加检测则有可能导致兼容性下降的问题这里面添加的检测方式是什么,我看着应该不是改为正则匹配的意思,如果改为正则匹配会兼容性下降吗,当前似乎也不只是纯粹的前缀匹配,感觉应该没什么区别啊。

关于以上内容,我不是故意杠只是纯粹好奇,大佬不要误会,看心情回复就行,主要我感觉这个插件的匹配方式确实有点奇怪……

khjxiaogu commented 3 years ago

我是不是没开源???? 但凡去看一眼代码就知道匹配规则了 参照代码位置 是先分词然后查找指令

byx2020 commented 3 years ago

~我是不是没开源????~ ~但凡去看一眼代码就知道匹配规则了~ 参照代码位置 是先分词然后查找指令

是我憨批了:pig: