From bb03315930080aa50c82d12c6b010bf52b3e9787 Mon Sep 17 00:00:00 2001 From: Mrs4s <1844812067@qq.com> Date: Wed, 12 Aug 2020 09:52:32 +0800 Subject: [PATCH] try to support escape again. #9 --- coolq/cqcode.go | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/coolq/cqcode.go b/coolq/cqcode.go index 31276d1..47bc99d 100644 --- a/coolq/cqcode.go +++ b/coolq/cqcode.go @@ -118,13 +118,13 @@ func ToStringMessage(e []message.IMessageElement, code int64, raw ...bool) (r st if ur { r += fmt.Sprintf(`[CQ:record,file=%s]`, o.Name) } else { - r += fmt.Sprintf(`[CQ:record,file=%s,url=%s]`, o.Name, o.Url) + r += fmt.Sprintf(`[CQ:record,file=%s,url=%s]`, o.Name, CQCodeEscapeValue(o.Url)) } case *message.ImageElement: if ur { r += fmt.Sprintf(`[CQ:image,file=%s]`, o.Filename) } else { - r += fmt.Sprintf(`[CQ:image,file=%s,url=%s]`, o.Filename, o.Url) + r += fmt.Sprintf(`[CQ:image,file=%s,url=%s]`, o.Filename, CQCodeEscapeValue(o.Url)) } } } @@ -145,7 +145,7 @@ func (bot *CQBot) ConvertStringMessage(m string, group bool) (r []message.IMessa ps := paramReg.FindAllStringSubmatch(code, -1) d := make(map[string]string) for _, p := range ps { - d[p[1]] = p[2] + d[p[1]] = CQCodeUnescapeValue(p[2]) } if t == "reply" && group { if len(r) > 0 { @@ -399,6 +399,12 @@ func CQCodeEscapeText(raw string) string { return ret } +func CQCodeEscapeValue(value string) string { + ret := CQCodeEscapeText(value) + ret = strings.ReplaceAll(ret, ",", ",") + return ret +} + func CQCodeUnescapeText(content string) string { ret := content ret = strings.ReplaceAll(ret, "[", "[") @@ -406,3 +412,9 @@ func CQCodeUnescapeText(content string) string { ret = strings.ReplaceAll(ret, "&", "&") return ret } + +func CQCodeUnescapeValue(content string) string { + ret := CQCodeUnescapeText(content) + ret = strings.ReplaceAll(ret, ",", ",") + return ret +}