请问怎么 覆盖重写 serializeToMiraiCode ,我想实现自己 消息码
-
1、如标题描述,mirai 使用 serializeToMiraiCode 序列号为 [mirai:xxx] 格式 ,我想修改为自定义的 [my:xxx] 消息码。
2、请不要告诉我单独转换处理 MessageChain 这个我知道处理。
3、因为自己代码特殊原因, 我想 覆盖 重写 serializeToMiraiCode 更方便自己使用,就是事件发生时候使用 event.message.serializeToMiraiCode() 获取到的就是 自己定义的 [my:xxx] 消息码。
-
详见 MiraiCode 内部实现
https://github.com/mamoe/mirai/blob/dev/mirai-core-api/src/commonMain/kotlin/message/code/internal/impl.kt#L96-L142
写死的,要么尝试反射改,要么全部CV过来改。
另外我记得 MiraiCode 是缺了东西的,序列化 反序列化 之后会丢一些新版本添加的参数等等。 -
@MrXiaoM 可不可以添加自己 序列化 方法到 event.message 里面, 事件发生调用 event.message.serializeToMyCode() 也可以
-
@Rean 你把 MiraiCode 完整抄到你的项目,改个扩展函数名就行了。
反序列化在我刚刚发的链接里。
序列化那一段的appendMiraiCodeTo
是写死在各个消息类型里面的,要完全自定义的话需要你重新写对每种消息的序列化。或者部分用原来的 -
那就蛋疼了,这样岂不搞死人
-
确实可以调用,实现就是需要自己去处理,完全可以,谢谢
-
功能完全实现了,但是有没有办法添加到 massage 继承里面??
-
@MrXiaoM 功能在 kotlin 里面实现了,但是我将 event 反射到其他语言 调用 event.message.serializeToMyCode() 会不存在, 相当于 serializeToMyCode 没有被继承到 message 里面, 则调用不到
-
可以去mirai仓库开个issue,这个可以重构一下 code parsers就好了
-
@Him188 那样不行, 以后要是 源代码升级,我岂不每次都要弄,这不行
-
@Rean 你去开个issue就对了
-
@Him188 OK