使用 mirai-console 如何自定义聊天环境下指令解析错误时的错误信息
-
使用 mirai-console 的 SimpleCommand 时若指令名正确但参数解析错误,聊天环境下会直接给聊天发送一段并不怎么 pretty 的错误信息。
比如 参数不够时会发送“参数不匹配,你是否想执行:…”,而参数类型不匹配时会发送“无法解析为xx类型”。
显然这种文本不适合在任意聊天环境下直接发送给用户,请问有无方法自定义这些文本?或者抑制这些消息不发送也行。
没试过 CompositeCommand,但解析错误时应该是一样的。搜了下源码这些文本好像出现在了非常深非常底层的一个类……也没注释,总之就是看不懂。
-
可能参数类型改成String, 然后自己解析String到int试试?
-
@nambers 那我不如直接用
RawCommand
……
要说这也是个方法,但能用现成的我还是想尽量用现成的,而且给每条指令都写一遍解析还挺麻烦。 -
报告一下情况:
参数不匹配的消息我用了 Extensions 置入了自己的CommandCallResolver
,在默认的resolve(call)
上加了一层壳,如果结果错误返回Intercepted
,可以抑制错误信息但不能修改。
解析错误的情况我写了自己的CommandValueArgumentParser
,每条指令里用overrideContext
置入,可以修改错误信息但不能抑制。
挺强行的解法,但至少能用。