MiraiForum

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

    请问怎么 覆盖重写 serializeToMiraiCode ,我想实现自己 消息码

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

      1、如标题描述,mirai 使用 serializeToMiraiCode 序列号为 [mirai:xxx] 格式 ,我想修改为自定义的 [my:xxx] 消息码。

      2、请不要告诉我单独转换处理 MessageChain 这个我知道处理。

      3、因为自己代码特殊原因, 我想 覆盖 重写 serializeToMiraiCode 更方便自己使用,就是事件发生时候使用 event.message.serializeToMiraiCode() 获取到的就是 自己定义的 [my:xxx] 消息码。

      1 条回复 最后回复 回复 引用 0
      • MrXiaoM
        MrXiaoM 童心未泯 最后由 编辑

        详见 MiraiCode 内部实现
        https://github.com/mamoe/mirai/blob/dev/mirai-core-api/src/commonMain/kotlin/message/code/internal/impl.kt#L96-L142
        写死的,要么尝试反射改,要么全部CV过来改。
        另外我记得 MiraiCode 是缺了东西的,序列化 反序列化 之后会丢一些新版本添加的参数等等。

        R 1 条回复 最后回复 回复 引用 0
        • R
          Rean @MrXiaoM 最后由 编辑

          @MrXiaoM 可不可以添加自己 序列化 方法到 event.message 里面, 事件发生调用 event.message.serializeToMyCode() 也可以

          MrXiaoM 1 条回复 最后回复 回复 引用 0
          • MrXiaoM
            MrXiaoM 童心未泯 @Rean 最后由 MrXiaoM 编辑

            @Rean 你把 MiraiCode 完整抄到你的项目,改个扩展函数名就行了。
            反序列化在我刚刚发的链接里。
            序列化那一段的 appendMiraiCodeTo 是写死在各个消息类型里面的,要完全自定义的话需要你重新写对每种消息的序列化。或者部分用原来的

            R 2 条回复 最后回复 回复 引用 0
            • R
              Rean 最后由 编辑

              那就蛋疼了,这样岂不搞死人

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

                确实可以调用,实现就是需要自己去处理,完全可以,谢谢

                1 条回复 最后回复 回复 引用 0
                • R
                  Rean @MrXiaoM 最后由 编辑

                  功能完全实现了,但是有没有办法添加到 massage 继承里面??

                  1 条回复 最后回复 回复 引用 0
                  • R
                    Rean @MrXiaoM 最后由 编辑

                    @MrXiaoM 功能在 kotlin 里面实现了,但是我将 event 反射到其他语言 调用 event.message.serializeToMyCode() 会不存在, 相当于 serializeToMyCode 没有被继承到 message 里面, 则调用不到

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

                      可以去mirai仓库开个issue,这个可以重构一下 code parsers就好了

                      R 1 条回复 最后回复 回复 引用 0
                      • R
                        Rean @Him188 最后由 编辑

                        @Him188 那样不行, 以后要是 源代码升级,我岂不每次都要弄,这不行

                        Him188 1 条回复 最后回复 回复 引用 0
                        • Him188
                          Him188 @Rean 最后由 编辑

                          @Rean 你去开个issue就对了

                          R 1 条回复 最后回复 回复 引用 0
                          • R
                            Rean @Him188 最后由 编辑

                            @Him188 OK

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