From 4941f0c3f85143e5c37d1c33be09407f78c6ef4c Mon Sep 17 00:00:00 2001 From: Mrs4s <1844812067@qq.com> Date: Mon, 10 Aug 2020 04:21:40 +0800 Subject: [PATCH] try to support escape. #9 --- coolq/cqcode.go | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/coolq/cqcode.go b/coolq/cqcode.go index 9664cac..bdbfbbf 100644 --- a/coolq/cqcode.go +++ b/coolq/cqcode.go @@ -31,7 +31,7 @@ func ToStringMessage(e []message.IMessageElement, code int64, raw ...bool) (r st for _, elem := range e { switch o := elem.(type) { case *message.TextElement: - r += o.Content + r += CQCodeEscapeText(o.Content) case *message.AtElement: if o.Target == 0 { r += "[CQ:at,qq=all]" @@ -63,7 +63,7 @@ func (bot *CQBot) ConvertStringMessage(m string, group bool) (r []message.IMessa for _, idx := range i { if idx[0] > si { text := m[si:idx[0]] - r = append(r, message.NewText(text)) + r = append(r, message.NewText(CQCodeUnescapeText(text))) } code := m[idx[0]:idx[1]] si = idx[1] @@ -105,7 +105,7 @@ func (bot *CQBot) ConvertStringMessage(m string, group bool) (r []message.IMessa r = append(r, elem) } if si != len(m) { - r = append(r, message.NewText(m[si:])) + r = append(r, message.NewText(CQCodeUnescapeText(m[si:]))) } return } @@ -309,3 +309,19 @@ func (bot *CQBot) ToElement(t string, d map[string]string, group bool) (message. return nil, errors.New("unsupported cq code: " + t) } } + +func CQCodeEscapeText(raw string) string { + ret := raw + ret = strings.ReplaceAll(ret, "[", "[") + ret = strings.ReplaceAll(ret, "]", "]") + ret = strings.ReplaceAll(ret, "&", "&") + return ret +} + +func CQCodeUnescapeText(content string) string { + ret := content + ret = strings.ReplaceAll(ret, "[", "[") + ret = strings.ReplaceAll(ret, "]", "]") + ret = strings.ReplaceAll(ret, "&", "&") + return ret +}