diff --git a/coolq/cqcode.go b/coolq/cqcode.go
index 261b1dd..b9f2711 100644
--- a/coolq/cqcode.go
+++ b/coolq/cqcode.go
@@ -933,8 +933,9 @@ func (bot *CQBot) ToElement(t string, d map[string]string, isGroup bool) (m inte
// XMLEscape 将字符串c转义为XML字符串
func XMLEscape(c string) string {
- buf := new(bytes.Buffer)
- _ = xml2.EscapeText(buf, []byte(c))
+ buf := global.NewBuffer()
+ defer global.PutBuffer(buf)
+ _ = xml2.EscapeText(buf, utils.S2B(c))
return buf.String()
}
@@ -1173,40 +1174,26 @@ func (bot *CQBot) makeShowPic(elem message.IMessageElement, source string, brief
if brief == "" {
brief = "[分享]我看到一张很赞的图片,分享给你,快来看!"
}
- if i, ok := elem.(*LocalImageElement); ok {
+ if _, ok := elem.(*LocalImageElement); ok {
r := rand.Uint32()
- if !group {
- gm, err := bot.UploadLocalImageAsPrivate(int64(r), i)
- if err != nil {
- log.Warnf("警告: 好友消息 %v 消息图片上传失败: %v", 1, err)
- return nil, err
- }
- suf = gm
- xml = fmt.Sprintf(` `, brief, "", gm.Md5, gm.Md5, gm.Size, "", minWidth, minHeight, maxWidth, maxHeight, source, icon)
- } else {
- gm, err := bot.UploadLocalImageAsGroup(int64(r), i)
- if err != nil {
- log.Warnf("警告: 群 %v 消息图片上传失败: %v", 1, err)
- return nil, err
- }
- suf = gm
- xml = fmt.Sprintf(` `, brief, "", gm.Md5, gm.Md5, gm.Size, "", minWidth, minHeight, maxWidth, maxHeight, source, icon)
+ e, err := bot.uploadMedia(elem, int64(r), group)
+ if err != nil {
+ log.Warnf("警告: 图片上传失败: %v", err)
+ return nil, err
}
+ elem = e
}
-
- if i, ok := elem.(*message.GroupImageElement); ok {
+ switch i := elem.(type) {
+ case *message.GroupImageElement:
+ xml = fmt.Sprintf(` `, brief, "", i.Md5, i.Md5, 0, "", minWidth, minHeight, maxWidth, maxHeight, source, icon)
+ suf = i
+ case *message.FriendImageElement:
xml = fmt.Sprintf(` `, brief, "", i.Md5, i.Md5, 0, "", minWidth, minHeight, maxWidth, maxHeight, source, icon)
suf = i
}
- if i, ok := elem.(*message.FriendImageElement); ok {
- xml = fmt.Sprintf(` `, brief, "", i.Md5, i.Md5, 0, "", minWidth, minHeight, maxWidth, maxHeight, source, icon)
- suf = i
+ if xml == "" {
+ return nil, errors.New("生成xml图片消息失败")
}
- if xml != "" {
- // log.Warn(xml)
- ret := []message.IMessageElement{suf}
- ret = append(ret, message.NewRichXml(xml, 5))
- return ret, nil
- }
- return nil, errors.New("生成xml图片消息失败")
+ ret := []message.IMessageElement{suf, message.NewRichXml(xml, 5)}
+ return ret, nil
}