-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
特殊字符需要做转义处理 #9
Comments
下个版本处理 |
草 有没有文档 CQ的文档站死了 |
草 |
举例:
|
可以支持cqhttp中post_message_format的配置,以字符串或数组上报数据,数组不需要转义 |
可以等一下 CQHTTP 那边补完 spec 再进行实现:https://github.com/richardchien/cqhttp-protocol/issues/1 |
CQ文档原文: 规范
|
4941f0c 经测试CQ码内的链接不会被转义,例如 CQ:share 的 url 或者 image 参数,CQ:image 的 file 参数 |
后续版本会处理的 |
我在写cqhttp-mirai的时候同样提到了这个Issue, 未用过酷Q, 请教一下, 原CQHTTP是否会对这些参数进行转义, 我尝试参考CQHTTP的源码: auto url = pt.get_optional<string>("image.url");
if (url && !url->empty()) {
segment.data["url"] = url.value();
} 似乎只是添加了url字段, 并未对url值进行转义, 而此方法被注册在消息事件中, 据CQ官方文档推测, 传递给CQHTTP的消息应已被转义过, 所以没能弄明白此hook完成后是否对消息再次进行转义 谢谢 |
@yyuueexxiinngg 根据我的使用经历原 CQHTTP 确实会对用户提供的 url 参数进行反转义后再处理图片发送等,我平时会发送一些 url 中带校验参数的图片,其中 按理来说应该要转义,因为这是 CQ 码内的参数,而且由于 |
@Mrs4s @yyuueexxiinngg 我的表述有误,应该是“经测试CQ码内的链接没有被 go-cqhttp 反转义” 即如果我发送 |
对于用户提供的CQ码我已进行反转义, 您取消转义之前测试cqpf已无问题, 现在的疑惑点在于CQHTTP发给用户的的url是否进行了转义 |
这还真没注意……印象中 QQ 提供的图片 URL 至少没有 但像我上面所说的,这是 CQ 码内部,因此我认为需要转义,否则用户侧要解析也会出现歧义 可能是因为 QQ 提供的图片 URL 不含有特殊字符因此没特地加上转义,或者是最初开发时没有考虑到这点,但是一直没出过问题所以没有意识到漏了转义? |
CQ 码转义这块,可以参考下 https://cqhttp.cc/specs/message/string.html ,这边描述应该符合原先 酷Q 的 |
理论上已对转义有了完整的支持, 有问题请reopen |
特殊字符需要转义,以避免处理时发生混淆。(图为QQ中发送的实际消息和go-cqhttp上报事件的解析结果)
根据nonebot源码推断,原cqhttp会将&、[、]分别转义为&、[、],并将出现在CQ码参数中的英文逗号转义为,。
The text was updated successfully, but these errors were encountered: