MiraiForum

    • Register
    • Login
    • Search
    • Popular
    • Recent
    • Unsolved
    • Tags
    • Groups
    • 友情链接

    使用 mirai-console 如何自定义聊天环境下指令解析错误时的错误信息

    开发交流
    2
    4
    119
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • 1
      18111398 last edited by

      使用 mirai-console 的 SimpleCommand 时若指令名正确但参数解析错误,聊天环境下会直接给聊天发送一段并不怎么 pretty 的错误信息。
      2021-12-22 11.28.32.png
      比如 参数不够时会发送“参数不匹配,你是否想执行:…”,而参数类型不匹配时会发送“无法解析为xx类型”。
      显然这种文本不适合在任意聊天环境下直接发送给用户,请问有无方法自定义这些文本?或者抑制这些消息不发送也行。
      没试过 CompositeCommand,但解析错误时应该是一样的。

      搜了下源码这些文本好像出现在了非常深非常底层的一个类……也没注释,总之就是看不懂。

      1 Reply Last reply Reply Quote 0
      • Nambers
        Nambers 摸鱼 last edited by

        可能参数类型改成String, 然后自己解析String到int试试?

        1 1 Reply Last reply Reply Quote 0
        • 1
          18111398 @Nambers last edited by

          @nambers 那我不如直接用 RawCommand ……
          要说这也是个方法,但能用现成的我还是想尽量用现成的,而且给每条指令都写一遍解析还挺麻烦。

          1 Reply Last reply Reply Quote 0
          • 1
            18111398 last edited by

            报告一下情况:
            参数不匹配的消息我用了 Extensions 置入了自己的 CommandCallResolver,在默认的 resolve(call) 上加了一层壳,如果结果错误返回 Intercepted,可以抑制错误信息但不能修改。
            解析错误的情况我写了自己的 CommandValueArgumentParser,每条指令里用 overrideContext 置入,可以修改错误信息但不能抑制。
            挺强行的解法,但至少能用。

            1 Reply Last reply Reply Quote 0
            • 1 / 1
            • First post
              Last post
            Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact