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

simply makeShowPic.

This commit is contained in:
wdvxdr 2021-07-22 23:08:54 +08:00
parent 7274a46a3c
commit 6d5bf84603
No known key found for this signature in database
GPG Key ID: 55FF1414A69CEBA6

View File

@ -933,8 +933,9 @@ func (bot *CQBot) ToElement(t string, d map[string]string, isGroup bool) (m inte
// XMLEscape 将字符串c转义为XML字符串 // XMLEscape 将字符串c转义为XML字符串
func XMLEscape(c string) string { func XMLEscape(c string) string {
buf := new(bytes.Buffer) buf := global.NewBuffer()
_ = xml2.EscapeText(buf, []byte(c)) defer global.PutBuffer(buf)
_ = xml2.EscapeText(buf, utils.S2B(c))
return buf.String() return buf.String()
} }
@ -1173,40 +1174,26 @@ func (bot *CQBot) makeShowPic(elem message.IMessageElement, source string, brief
if brief == "" { if brief == "" {
brief = "[分享]我看到一张很赞的图片,分享给你,快来看!" brief = "[分享]我看到一张很赞的图片,分享给你,快来看!"
} }
if i, ok := elem.(*LocalImageElement); ok { if _, ok := elem.(*LocalImageElement); ok {
r := rand.Uint32() r := rand.Uint32()
if !group { e, err := bot.uploadMedia(elem, int64(r), group)
gm, err := bot.UploadLocalImageAsPrivate(int64(r), i) if err != nil {
if err != nil { log.Warnf("警告: 图片上传失败: %v", err)
log.Warnf("警告: 好友消息 %v 消息图片上传失败: %v", 1, err) return nil, err
return nil, err
}
suf = gm
xml = fmt.Sprintf(`<?xml version='1.0' encoding='UTF-8' standalone='yes' ?><msg serviceID="5" templateID="12345" action="" brief="%s" sourceMsgId="0" url="%s" flag="0" adverSign="0" multiMsgFlag="0"><item layout="0" advertiser_id="0" aid="0"><image uuid="%x" md5="%x" GroupFiledid="0" filesize="%d" local_path="%s" minWidth="%d" minHeight="%d" maxWidth="%d" maxHeight="%d" /></item><source name="%s" icon="%s" action="" appid="-1" /></msg>`, 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(`<?xml version='1.0' encoding='UTF-8' standalone='yes' ?><msg serviceID="5" templateID="12345" action="" brief="%s" sourceMsgId="0" url="%s" flag="0" adverSign="0" multiMsgFlag="0"><item layout="0" advertiser_id="0" aid="0"><image uuid="%x" md5="%x" GroupFiledid="0" filesize="%d" local_path="%s" minWidth="%d" minHeight="%d" maxWidth="%d" maxHeight="%d" /></item><source name="%s" icon="%s" action="" appid="-1" /></msg>`, brief, "", gm.Md5, gm.Md5, gm.Size, "", minWidth, minHeight, maxWidth, maxHeight, source, icon)
} }
elem = e
} }
switch i := elem.(type) {
if i, ok := elem.(*message.GroupImageElement); ok { case *message.GroupImageElement:
xml = fmt.Sprintf(`<?xml version='1.0' encoding='UTF-8' standalone='yes' ?><msg serviceID="5" templateID="12345" action="" brief="%s" sourceMsgId="0" url="%s" flag="0" adverSign="0" multiMsgFlag="0"><item layout="0" advertiser_id="0" aid="0"><image uuid="%x" md5="%x" GroupFiledid="0" filesize="%d" local_path="%s" minWidth="%d" minHeight="%d" maxWidth="%d" maxHeight="%d" /></item><source name="%s" icon="%s" action="" appid="-1" /></msg>`, brief, "", i.Md5, i.Md5, 0, "", minWidth, minHeight, maxWidth, maxHeight, source, icon)
suf = i
case *message.FriendImageElement:
xml = fmt.Sprintf(`<?xml version='1.0' encoding='UTF-8' standalone='yes' ?><msg serviceID="5" templateID="12345" action="" brief="%s" sourceMsgId="0" url="%s" flag="0" adverSign="0" multiMsgFlag="0"><item layout="0" advertiser_id="0" aid="0"><image uuid="%x" md5="%x" GroupFiledid="0" filesize="%d" local_path="%s" minWidth="%d" minHeight="%d" maxWidth="%d" maxHeight="%d" /></item><source name="%s" icon="%s" action="" appid="-1" /></msg>`, brief, "", i.Md5, i.Md5, 0, "", minWidth, minHeight, maxWidth, maxHeight, source, icon) xml = fmt.Sprintf(`<?xml version='1.0' encoding='UTF-8' standalone='yes' ?><msg serviceID="5" templateID="12345" action="" brief="%s" sourceMsgId="0" url="%s" flag="0" adverSign="0" multiMsgFlag="0"><item layout="0" advertiser_id="0" aid="0"><image uuid="%x" md5="%x" GroupFiledid="0" filesize="%d" local_path="%s" minWidth="%d" minHeight="%d" maxWidth="%d" maxHeight="%d" /></item><source name="%s" icon="%s" action="" appid="-1" /></msg>`, brief, "", i.Md5, i.Md5, 0, "", minWidth, minHeight, maxWidth, maxHeight, source, icon)
suf = i suf = i
} }
if i, ok := elem.(*message.FriendImageElement); ok { if xml == "" {
xml = fmt.Sprintf(`<?xml version='1.0' encoding='UTF-8' standalone='yes' ?><msg serviceID="5" templateID="12345" action="" brief="%s" sourceMsgId="0" url="%s" flag="0" adverSign="0" multiMsgFlag="0"><item layout="0" advertiser_id="0" aid="0"><image uuid="%x" md5="%x" GroupFiledid="0" filesize="%d" local_path="%s" minWidth="%d" minHeight="%d" maxWidth="%d" maxHeight="%d" /></item><source name="%s" icon="%s" action="" appid="-1" /></msg>`, brief, "", i.Md5, i.Md5, 0, "", minWidth, minHeight, maxWidth, maxHeight, source, icon) return nil, errors.New("生成xml图片消息失败")
suf = i
} }
if xml != "" { ret := []message.IMessageElement{suf, message.NewRichXml(xml, 5)}
// log.Warn(xml) return ret, nil
ret := []message.IMessageElement{suf}
ret = append(ret, message.NewRichXml(xml, 5))
return ret, nil
}
return nil, errors.New("生成xml图片消息失败")
} }