MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接

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

    开发交流
    2
    4
    372
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 1
      18111398 最后由 编辑

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

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

      1 条回复 最后回复 回复 引用 0
      • Nambers
        Nambers 摸鱼 最后由 编辑

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

        1 1 条回复 最后回复 回复 引用 0
        • 1
          18111398 @Nambers 最后由 编辑

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

          1 条回复 最后回复 回复 引用 0
          • 1
            18111398 最后由 编辑

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

            1 条回复 最后回复 回复 引用 0
            • 1 / 1
            • First post
              Last post
            Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact