1
0
mirror of https://github.com/Mrs4s/go-cqhttp.git synced 2025-05-05 19:43:49 +08:00

fix(cqcode): some escape error in cqcode serialize

fix typo
(cherry picked from commit ecf695a68d9be4eae9195eef2a17d28c889d4779)

fix escape
(cherry picked from commit 337e53ebc6cc59d660a065fe750f14710f00958b)
This commit is contained in:
wdvxdr 2021-04-04 15:28:47 +08:00
parent 2aed5d5a16
commit ae73451677
No known key found for this signature in database
GPG Key ID: 55FF1414A69CEBA6

View File

@ -4,7 +4,6 @@ import (
"bytes" "bytes"
"crypto/md5" "crypto/md5"
"encoding/base64" "encoding/base64"
goBinary "encoding/binary"
"encoding/hex" "encoding/hex"
xml2 "encoding/xml" xml2 "encoding/xml"
"errors" "errors"
@ -46,15 +45,8 @@ var SplitURL = false
var magicCQ = uint32(0) var magicCQ = uint32(0)
func init() { func init() {
const sizeInt = int(unsafe.Sizeof(0)) var CQHeader = "[CQ:"
x := 0x1234 magicCQ = *(*uint32)(unsafe.Pointer((*reflect.StringHeader)(unsafe.Pointer(&CQHeader)).Data))
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:"))
}
} }
// add 指针运算 // add 指针运算
@ -232,7 +224,7 @@ func ToArrayMessage(e []message.IMessageElement, id int64, isRaw ...bool) (r []M
} else { } else {
m = MSG{ m = MSG{
"type": "image", "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: case *message.FriendImageElement:
@ -244,7 +236,7 @@ func ToArrayMessage(e []message.IMessageElement, id int64, isRaw ...bool) (r []M
} else { } else {
m = MSG{ m = MSG{
"type": "image", "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: case *message.GroupFlashImgElement:
@ -330,13 +322,13 @@ func ToStringMessage(e []message.IMessageElement, id int64, isRaw ...bool) (r st
if ur { if ur {
r += fmt.Sprintf("[CQ:image,file=%s]", hex.EncodeToString(o.Md5)+".image") r += fmt.Sprintf("[CQ:image,file=%s]", hex.EncodeToString(o.Md5)+".image")
} else { } 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: case *message.FriendImageElement:
if ur { if ur {
r += fmt.Sprintf("[CQ:image,file=%s]", hex.EncodeToString(o.Md5)+".image") r += fmt.Sprintf("[CQ:image,file=%s]", hex.EncodeToString(o.Md5)+".image")
} else { } 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: case *message.GroupFlashImgElement:
return fmt.Sprintf("[CQ:image,type=flash,file=%s]", o.Filename) 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 { if err != nil {
msgTime = time.Now().Unix() msgTime = time.Now().Unix()
} }
messageSeq, err := strconv.ParseInt(d["seq"], 10, 64) messageSeq, _ := strconv.ParseInt(d["seq"], 10, 64)
if err != nil {
messageSeq = 0
}
r = append([]message.IMessageElement{ r = append([]message.IMessageElement{
&message.ReplyElement{ &message.ReplyElement{
ReplySeq: int32(messageSeq), ReplySeq: int32(messageSeq),
@ -553,10 +542,7 @@ func (bot *CQBot) ConvertObjectMessage(m gjson.Result, isGroup bool) (r []messag
if err != nil { if err != nil {
msgTime = time.Now().Unix() msgTime = time.Now().Unix()
} }
messageSeq, err := strconv.ParseInt(e.Get("data").Get("seq").String(), 10, 64) messageSeq, _ := strconv.ParseInt(e.Get("data").Get("seq").String(), 10, 64)
if err != nil {
messageSeq = 0
}
r = append([]message.IMessageElement{ r = append([]message.IMessageElement{
&message.ReplyElement{ &message.ReplyElement{
ReplySeq: int32(messageSeq), ReplySeq: int32(messageSeq),