diff --git a/client/global.go b/client/global.go
index 251eb418..6e64bc4f 100644
--- a/client/global.go
+++ b/client/global.go
@@ -1,10 +1,12 @@
package client
import (
+ "bytes"
"crypto/md5"
"encoding/base64"
"encoding/hex"
"encoding/json"
+ "encoding/xml"
"fmt"
"math/rand"
"net"
@@ -576,6 +578,12 @@ func packUniRequestData(data []byte) (r []byte) {
return
}
+func XmlEscape(c string) string {
+ buf := new(bytes.Buffer)
+ _ = xml.EscapeText(buf, []byte(c))
+ return buf.String()
+}
+
func genForwardTemplate(resId, preview, title, brief, source, summary string, ts int64, items []*msg.PbMultiMsgItem) *message.ForwardElement {
template := fmt.Sprintf(`- %s %s
%s `,
brief, resId, ts, title, preview, summary, source,
@@ -587,9 +595,9 @@ func genForwardTemplate(resId, preview, title, brief, source, summary string, ts
}
return &message.ForwardElement{
FileName: strconv.FormatInt(ts, 10),
- Content: template,
- ResId: resId,
- Items: items,
+ Content: template,
+ ResId: resId,
+ Items: items,
}
}
@@ -601,7 +609,7 @@ func genLongTemplate(resId, brief string, ts int64) *message.ServiceElement {
return brief
}()
template := fmt.Sprintf(` - %s
点击查看完整消息 `,
- limited, resId, ts, limited,
+ XmlEscape(limited), resId, ts, XmlEscape(limited),
)
return &message.ServiceElement{
Id: 35,
diff --git a/client/group_msg.go b/client/group_msg.go
index 6bd049c5..253bd059 100644
--- a/client/group_msg.go
+++ b/client/group_msg.go
@@ -192,7 +192,7 @@ func (c *QQClient) UploadGroupForwardMessage(groupCode int64, m *message.Forward
if err == nil {
var pv string
for i := 0; i < int(math.Min(4, float64(len(m.Nodes)))); i++ {
- pv += fmt.Sprintf(`
%s: %s`, m.Nodes[i].SenderName, message.ToReadableString(m.Nodes[i].Message))
+ pv += fmt.Sprintf(`%s: %s`, XmlEscape(m.Nodes[i].SenderName), XmlEscape(message.ToReadableString(m.Nodes[i].Message)))
}
return genForwardTemplate(rsp.MsgResid, pv, "群聊的聊天记录", "[聊天记录]", "聊天记录", fmt.Sprintf("查看 %d 条转发消息", len(m.Nodes)), ts, items)
}