Closed Aliorpse closed 4 months ago
能否提供机器人发送的消息原文本?(比如右键消息复制的文本)
同时,如果您通过自己的消息框发送相同的内容,是否会引起同样的渲染问题呢?
能否提供机器人发送的消息原文本?(比如右键消息复制的文本)
同时,如果您通过自己的消息框发送相同的内容,是否会引起同样的渲染问题呢?
这是直接转发获得的结果 机器人相关日志
[08:51:18.440][INFO][3563871479 => 3521766148] 发送好友消息:[{"type":"reply","data":{"id":"-2147457444"}},{"type":"image","data":{"file":"base64://..."}},{"type":"text","data":{"text":"
Hypixel Network [1.8-1.21]\n SUMMER EVENT | SB 0.20.4 BETTER MAYORS"}},{"type":"text","data":{"text":"\n----"}},{"type":"text","data":{"text":"\n[IP] mc.hypixel.net"}},{"type":"text","data":{"text":"\n[玩家] 38545/200000"}},{"type":"text","data":{"text":"\n[版本] java | Requires MC 1.8 / 1.21[47]"}},{"type":"text","data":{"text":"\n[SRV记录] 无"}},{"type":"text","data":{"text":"\n[Mojang屏蔽] 否"}},{"type":"text","data":{"text":"\n[请求耗时] 1.56s"}}]
[08:51:24.960][INFO][3563871479 <= 3521766148] 好友消息:[Aliorpse] [CQ:reply,id=-2147457444][CQ:image,file=079479072007DB2F214F5DDA7F246B64.png,url=https://multimedia.nt.qq.com.cn/download?appid=1406&fileid=CgozNTIxNzY2MTQ4EhSdXMEYnarCxdCk7sHXVIdZuANZShjvWyD-CiijltO6pKCHAw&spec=0&rkey=CAMSKMa3OFokB_TlmD776laEix2Fn45dIssS8r2eiRVB9B3RnnzB7CHK8ZU,file_size=11759] Hypixel Network [1.8-1.21]
SUMMER EVENT | SB 0.20.4 BETTER MAYORS
----
[IP] mc.hypixel.net
[玩家] 38545/200000
[版本] java | Requires MC 1.8 / 1.21[47]
[SRV记录] 无
[Mojang屏蔽] 否
[请求耗时] 1.56s
右键复制所获得的文本:
Hypixel Network [1.8-1.21]
SUMMER EVENT | SB 0.20.4 BETTER MAYORS
----
[IP] mc.hypixel.net
[玩家] 38545/200000
[版本] java | Requires MC 1.8 / 1.21[47]
[SRV记录] 无
[Mojang屏蔽] 否
[请求耗时] 1.56s
右键复制文本后,再粘贴到文本框发送的消息是这样的 这里 ip栏与玩家栏同行,在手机端看是正常的,其他没有问题
插件配置文件
该插件相关内容源码
const message = [
segment.image(serverImg),
res.motd.clean,
`\n----`,
`\n[IP] ${content}`,
`\n[玩家] ${res.players.online}/${res.players.max}`,
`\n[版本] ${serverType} | ${res.version.name_clean}[${res.version.protocol}]`,
`\n[SRV记录] ${srvRecord}`,
`\n[Mojang屏蔽] ${eulaBlocked}`,
`\n[请求耗时] ${time}s`,
]
e.reply(message,true)
你好,感谢您能提供有关于此问题的更多信息。
由于目前我没有对应的机器人可供测试,无法复现和调试这个问题。就目前我掌握的信息来看,可能是由于Bot发送的消息文本似乎被分为了多个 segment
发送,这一点可能导致了渲染消息时的不正常行为。
您可以尝试不使用多个 segment
,而是将要发送的消息拼接成一个完整的字符串后,用一个 segment
发送。不过我不能确定问题是否一定是由这个原因引起的。
你好,感谢您能提供有关于此问题的更多信息。
由于目前我没有对应的机器人可供测试,无法复现和调试这个问题。就目前我掌握的信息来看,可能是由于Bot发送的消息文本似乎被分为了多个
segment
发送,这一点可能导致了渲染消息时的不正常行为。您可以尝试不使用多个
segment
,而是将要发送的消息拼接成一个完整的字符串后,用一个segment
发送。不过我不能确定问题是否一定是由这个原因引起的。
非常感谢,我尝试了你的办法,确实是这样的。 如果有这方面尝试修复的意愿,我可以用mcsm创建一个网页后台,并且提供机器人账号供你调试
如果方便的话,可供测试的最小环境仅需要有一个可以给我发送渲染异常消息的机器人即可,并不需要某个机器人完整的权限和账号所有权。如果可能的话,您可以通过 这个Telegram Group 与我联系。
抱歉,我没有Telegram账号,我的机器人是公开的,qq号是2129473739,可以直接加好友 我写了一份供您调试的插件,你可以通过"#send"指令通过我的机器人创建分段文本。
分段文本用逗号隔开,需用转义符来换行 这里是一个例子
还发现了一个问题 当Linkify选项打开时,链接也会引发换行错误
关于换行的问题,经过测试,目前可以确定为 DOMParser
的行为所致。 根据下图测试结果可知 DOMParser
会忽略行首的任意多个连续的换行符 \n
[1\n, 2\n, 3\n, 4]
换行符置于末尾,可以防止换行符被 DOMParser 忽略。
关闭 HTML渲染 功能,就不会触发对于消息的 HTML Entities Unescape 处理,从而不会调用到 DOMParser
Linkify引发的换行问题也可以通过关闭 HTML渲染 恢复正常,因为其引发原因仍然是 \n
被忽略。
关于这个问题,毕竟是由 DOMParser
引起的行为,我个人来说暂时想不到什么好的修复方式。短时间内可能还是建议使用上面提供的 Workaround。再次感谢您提供的反馈以及测试环境。
好的,感谢
机器人这类发的包含换行的消息一般都会失效,机器人是llonebot+trssyunzai,用\n换行