mirai
mirai copied to clipboard
无法在聊天环境忽略指令可选参数
【样例】
假设有这么一个指令,第一个参数是自动识别成群类型(可选,且默认获取群),第二个参数为文本类型
suspend fun CommandSender.onCommand(group: Group? = getGroupOrNull() , text:String)
/指令名 <群> <文本内容>
现在的情况下,mirai会自动将第一个参数识别为群类型,而且必须要填写第一个群的参数
例如:/atall 732700499 你好
如果不填写,则会提示”无法解析 你好 为整数“
【建议】
如果mirai的指令参数解析不能将第一个群参数识别为群(且第一个参数是可选的,有默认值),则把当前的参数交给下一个参数解析器识别,如果下一个解析器还是不能识别(且有默认值)就再交给下一个参数解析器识别,以此类推
当所有的解析器都不能识别,再进行报错。
写的有点急,有哪里不理解请指出,的我可以修改下
目前无法解决,建议先将可选参数放到 后面,
suspend fun CommandSender.onCommand(text: String, group: Group? = getGroupOrNull())
这样子就可以忽略 group 了
目前无法解决,建议先将可选参数放到 后面,
suspend fun CommandSender.onCommand(text: String, group: Group? = getGroupOrNull())
这样子就可以忽略 group 了
我知道这么弄可以,但是我有大量文本需要输入,这么搞的话指令做出来可读性可能会差很多 还是希望能完善一下这方面的功能
如果mirai的指令参数解析不能将第一个群参数识别为群(且第一个参数是可选的,有默认值),则把当前的参数交给下一个参数解析器识别,如果下一个解析器还是不能识别(且有默认值)就再交给下一个参数解析器识别,以此类推
不如直接支持不同参数数量的重载,实现上可能会更清晰