NapNeko / NapCatQQ

现代化的基于 NTQQ 的 Bot 协议端实现
https://napneko.github.io
Other
2.14k stars 151 forks source link

[BUG] 不兼容旧版本QQ消息的换行符解析 #29

Closed dokurorz closed 4 months ago

dokurorz commented 4 months ago

系统版本

Debian 11.9

QQNT 版本

3.2.7_240428

NapCat 版本

1.3.3

OneBot 客户端

overflow 2.16.0-c49aec1-SNAPSHOT

发生了什么?

在接收来自PC端旧版本QQ的消息时,具体版本是9.7.9(29059),当消息包含换行时,napcat接收到的消息如下

"message":[{"data":{"text":"第一行\r第二行"},"type":"text"}]

\r只会被识别为回车符CR,解析后的内容变成以下这样

第二行 group(114514)] user(114514): 第一行

如何复现

使用NT架构之前的PC QQ发送换行内容

期望的结果?

希望能把单独的\r换行符转换为\n,或者\r\n,兼容旧版本客户端发送的消息

"message":[{"data":{"text":"第一行\r第二行"},"type":"text"}]

解析为

群[group(114514)] user(114514): 第一行
第二行

NapCat 运行日志

No response

OneBot 客户端运行日志

No response

MliKiowa commented 4 months ago

你用win pcqq发的消息吗

dokurorz commented 4 months ago

你用win pcqq发的消息吗

是的,win10 22H2

MliKiowa commented 4 months ago

不好做兼容唉

MliKiowa commented 4 months ago

试试这个版本 https://github.com/NapNeko/NapCatQQ/actions/runs/9201627433

dokurorz commented 4 months ago

试试这个版本 https://github.com/NapNeko/NapCatQQ/actions/runs/9201627433

试了下,似乎还是不行唉

"textElement": {
    "content": "111\r222\r333",
    "atType": 0,
    "atUid": "0",
    "atTinyId": "0",
    "atNtUid": "",
    "subElementType": 0,
    "atChannelId": "0",
    "linkInfo": null,
    "atRoleId": "0",
    "atRoleColor": 0,
    "atRoleName": "",
    "needNotify": 0
}

解析为

2024-05-23 11:30:55 [INFO] (114514) 
333user(114514): 111
MliKiowa commented 4 months ago

上报的没问题啊

MliKiowa commented 4 months ago

raw保持原状

dokurorz commented 4 months ago

啊?刚看了下,上报也还是原本的/r,正向ws连接的最新的nonebot和overflow,napcat的日志是这样的

2024-05-23 14:43:34 [DEBUG] (114514) 
收到消息:  {"self_id":114514,"user_id":114514,"time":1716446614,"message_id":-2147483630,"message_seq":-2147483630,"real_id":-2147483630,"message_type":"group","sender":{"user_id":114514,"nickname":"user","card":"","role":"owner"},"raw_message":"111\r222","font":14,"sub_type":"normal","message":[{"data":{"text":"111\r222"},"type":"text"}],"message_format":"array","post_type":"message","group_id":114514} 

2024-05-23 14:43:34 [DEBUG] (114514) 
ws 消息上报  {"self_id":114514,"user_id":114514,"time":1716446614,"message_id":-2147483630,"message_seq":-2147483630,"real_id":-2147483630,"message_type":"group","sender":{"user_id":114514,"nickname":"user","card":"","role":"owner"},"raw_message":"111\r222","font":14,"sub_type":"normal","message":[{"data":{"text":"111\r222"},"type":"text"}],"message_format":"array","post_type":"message","group_id":114514} 

2024-05-23 14:43:34 [DEBUG] (114514) 
ws 消息上报  {"self_id":114514,"user_id":114514,"time":1716446614,"message_id":-2147483630,"message_seq":-2147483630,"real_id":-2147483630,"message_type":"group","sender":{"user_id":114514,"nickname":"user","card":"","role":"owner"},"raw_message":"111\r222","font":14,"sub_type":"normal","message":[{"data":{"text":"111\r222"},"type":"text"}],"message_format":"array","post_type":"message","group_id":114514} 

2024-05-23 14:43:34 [INFO] (114514) 
222group(114514)] user(114514): 111

nonebot接收内容

[message.group.normal]: Message -2147483630 from 114514@[群:114514] '111\r222'

overflow接收内容

[group(114514)] user(114514) -> 111
MliKiowa commented 4 months ago

我搞错了 https://github.com/NapNeko/NapCatQQ/actions/runs/9203831006 试试这个

dokurorz commented 4 months ago

我搞错了 https://github.com/NapNeko/NapCatQQ/actions/runs/9203831006 试试这个

OK了,能正常换行了,感谢😘