Skip to content
This repository has been archived by the owner on Nov 3, 2023. It is now read-only.

MessageChain::deserializationFromMiraiCode 中缺失 "]" #101

Closed
Asada-Shino opened this issue Oct 30, 2021 · 5 comments
Closed

MessageChain::deserializationFromMiraiCode 中缺失 "]" #101

Asada-Shino opened this issue Oct 30, 2021 · 5 comments
Labels
f: API 关于:公开API t: enhancement 类型:改进或新特性

Comments

@Asada-Shino
Copy link

Describe the bug 出现的异常(实际行为和预期行为)
目前代码第257行
https://github.com/Nambers/MiraiCP/blob/main/cpp/include/miraiCP.cpp#L257
mc.add(UnSupportMessage("[mirai:" + tmp));
=>
mc.add(UnSupportMessage("[mirai:" + tmp + "]"));
不然类似mirai:face等上文未处理的miraicode转化成singlemessage时会缺少“]”
(话说type里不加个face嘛)

| loader | v2.8.0-M2 |

@Asada-Shino Asada-Shino added the t: question 类型:问题 label Oct 30, 2021
@Nambers
Copy link
Owner

Nambers commented Oct 30, 2021

是实际上有出现问题吗?
我当时的设计思路是: 因为tmp变量(https://github.com/Nambers/MiraiCP/blob/main/cpp/include/miraiCP.cpp#L230) 理论上是包含每个miraicode的内容的,就 从[]
然后因为(https://github.com/Nambers/MiraiCP/blob/main/cpp/include/miraiCP.cpp#L231) 这里去掉了开头的[mirai:所以L230是加上了[mirai:, 但是tmp没去掉后面的]所以不用加
可能因为substr少了一位把后面的]去掉了
face的话可以考虑加下,下个版本

@Asada-Shino
Copy link
Author

Asada-Shino commented Oct 30, 2021

我确实是遇到了问题。
我试着写了一个复读机,机器人复读三个小表情时输出”[mirai:face:297[mirai:face:297[mirai:face:297“,然后我一路溯源查到了这里的代码。我logger.info逐步打印tmp值时确实也没有右括号。
我尝试着修复这个问题:

  1. 我试着多截取一位,使tmp包含"]",但是这样图片消息将无法复读(复读的图片结尾为"\]]")(顺带一提,line242和line245是否反了?2是艾特全体消息,3是图片消息)
  2. 我试着将mc.add(UnSupportMessage("[mirai:" + tmp));改为mc.add(UnSupportMessage("[mirai:" + tmp + "]"));,这解决了我的问题,且图片等消息都能正常发送(复读)

@Nambers
Copy link
Owner

Nambers commented Oct 30, 2021

我确实是遇到了问题。 我试着写了一个复读机,机器人复读三个小表情时输出”[mirai:face:297[mirai:face:297[mirai:face:297“,然后我一路溯源查到了这里的代码。我logger.info逐步打印tmp值时确实也没有右括号。 我尝试着修复这个问题:

  1. 我试着多截取一位,使tmp包含"]",但是这样图片消息将无法复读(复读的图片结尾为"]]")(顺带一提,line242和line245是否反了?2是艾特全体消息,3是图片消息)
  2. 我试着将mc.add(UnSupportMessage("[mirai:" + tmp));改为mc.add(UnSupportMessage("[mirai:" + tmp + "]"));,这解决了我的问题,且图片等消息都能正常发送(复读)

ok,晚点尝试复现和修复

@Nambers
Copy link
Owner

Nambers commented Nov 13, 2021

刚刚看了下qs (一直到这几天才有时间看)
需要注意的是mirai 好像新一点的表情会直接返回文本(比如狗头,返回的类型其实是PlainText + content = "\汪汪")
face和marketFace应该会在下个版本加
然后MarketFace 目前Mirai还不支持发送

@Nambers Nambers added f: API 关于:公开API t: enhancement 类型:改进或新特性 and removed t: question 类型:问题 labels Nov 13, 2021
@Nambers
Copy link
Owner

Nambers commented Nov 17, 2021

在下一个版本 2.8.0 会包含修复

  • 传入信息的解析换成了MessageSource解析,更全一点
  • MiraiCode的Face解析厕所了下好像没什么问题

@Nambers Nambers closed this as completed Nov 17, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
f: API 关于:公开API t: enhancement 类型:改进或新特性
Projects
None yet
Development

No branches or pull requests

2 participants