From ae73451677861f666db98eaa1fbeebdc7ae878f7 Mon Sep 17 00:00:00 2001 From: wdvxdr Date: Sun, 4 Apr 2021 15:28:47 +0800 Subject: [PATCH] fix(cqcode): some escape error in cqcode serialize fix typo (cherry picked from commit ecf695a68d9be4eae9195eef2a17d28c889d4779) fix escape (cherry picked from commit 337e53ebc6cc59d660a065fe750f14710f00958b) --- coolq/cqcode.go | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/coolq/cqcode.go b/coolq/cqcode.go index 25c3432..e6d4ba6 100644 --- a/coolq/cqcode.go +++ b/coolq/cqcode.go @@ -4,7 +4,6 @@ import ( "bytes" "crypto/md5" "encoding/base64" - goBinary "encoding/binary" "encoding/hex" xml2 "encoding/xml" "errors" @@ -46,15 +45,8 @@ var SplitURL = false var magicCQ = uint32(0) func init() { - const sizeInt = int(unsafe.Sizeof(0)) - x := 0x1234 - p := unsafe.Pointer(&x) - p2 := (*[sizeInt]byte)(p) - if p2[0] == 0 { - magicCQ = goBinary.BigEndian.Uint32([]byte("[CQ:")) - } else { - magicCQ = goBinary.LittleEndian.Uint32([]byte("[CQ:")) - } + var CQHeader = "[CQ:" + magicCQ = *(*uint32)(unsafe.Pointer((*reflect.StringHeader)(unsafe.Pointer(&CQHeader)).Data)) } // add 指针运算 @@ -232,7 +224,7 @@ func ToArrayMessage(e []message.IMessageElement, id int64, isRaw ...bool) (r []M } else { m = MSG{ "type": "image", - "data": map[string]string{"file": hex.EncodeToString(o.Md5) + ".image", "url": CQCodeEscapeText(o.Url)}, + "data": map[string]string{"file": hex.EncodeToString(o.Md5) + ".image", "url": o.Url}, } } case *message.FriendImageElement: @@ -244,7 +236,7 @@ func ToArrayMessage(e []message.IMessageElement, id int64, isRaw ...bool) (r []M } else { m = MSG{ "type": "image", - "data": map[string]string{"file": hex.EncodeToString(o.Md5) + ".image", "url": CQCodeEscapeText(o.Url)}, + "data": map[string]string{"file": hex.EncodeToString(o.Md5) + ".image", "url": o.Url}, } } case *message.GroupFlashImgElement: @@ -330,13 +322,13 @@ func ToStringMessage(e []message.IMessageElement, id int64, isRaw ...bool) (r st if ur { r += fmt.Sprintf("[CQ:image,file=%s]", hex.EncodeToString(o.Md5)+".image") } else { - r += fmt.Sprintf("[CQ:image,file=%s,url=%s]", hex.EncodeToString(o.Md5)+".image", CQCodeEscapeText(o.Url)) + r += fmt.Sprintf("[CQ:image,file=%s,url=%s]", hex.EncodeToString(o.Md5)+".image", CQCodeEscapeValue(o.Url)) } case *message.FriendImageElement: if ur { r += fmt.Sprintf("[CQ:image,file=%s]", hex.EncodeToString(o.Md5)+".image") } else { - r += fmt.Sprintf("[CQ:image,file=%s,url=%s]", hex.EncodeToString(o.Md5)+".image", CQCodeEscapeText(o.Url)) + r += fmt.Sprintf("[CQ:image,file=%s,url=%s]", hex.EncodeToString(o.Md5)+".image", CQCodeEscapeValue(o.Url)) } case *message.GroupFlashImgElement: return fmt.Sprintf("[CQ:image,type=flash,file=%s]", o.Filename) @@ -397,10 +389,7 @@ func (bot *CQBot) ConvertStringMessage(s string, isGroup bool) (r []message.IMes if err != nil { msgTime = time.Now().Unix() } - messageSeq, err := strconv.ParseInt(d["seq"], 10, 64) - if err != nil { - messageSeq = 0 - } + messageSeq, _ := strconv.ParseInt(d["seq"], 10, 64) r = append([]message.IMessageElement{ &message.ReplyElement{ ReplySeq: int32(messageSeq), @@ -553,10 +542,7 @@ func (bot *CQBot) ConvertObjectMessage(m gjson.Result, isGroup bool) (r []messag if err != nil { msgTime = time.Now().Unix() } - messageSeq, err := strconv.ParseInt(e.Get("data").Get("seq").String(), 10, 64) - if err != nil { - messageSeq = 0 - } + messageSeq, _ := strconv.ParseInt(e.Get("data").Get("seq").String(), 10, 64) r = append([]message.IMessageElement{ &message.ReplyElement{ ReplySeq: int32(messageSeq),