mirror of
https://github.com/Mrs4s/go-cqhttp.git
synced 2025-05-06 20:13:50 +08:00
feat: resolving flash image url
This commit is contained in:
parent
82bb37c7e6
commit
0ad74c6f2c
@ -1123,7 +1123,7 @@ func (bot *CQBot) CQGetImage(file string) global.MSG {
|
||||
f, _ := os.OpenFile(local, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o0644)
|
||||
_, _ = f.ReadFrom(body)
|
||||
_ = body.Close()
|
||||
f.Close()
|
||||
_ = f.Close()
|
||||
} else {
|
||||
log.Warnf("下载图片 %v 时出现错误: %v", msg["url"], err)
|
||||
return Failed(100, "DOWNLOAD_IMAGE_ERROR", err.Error())
|
||||
@ -1189,7 +1189,7 @@ func (bot *CQBot) CQGetForwardMessage(resID string) global.MSG {
|
||||
}
|
||||
r := make([]global.MSG, 0, len(m.Nodes))
|
||||
for _, n := range m.Nodes {
|
||||
bot.checkMedia(n.Message)
|
||||
bot.checkMedia(n.Message, 0)
|
||||
r = append(r, global.MSG{
|
||||
"sender": global.MSG{
|
||||
"user_id": n.SenderId,
|
||||
@ -1273,7 +1273,7 @@ func (bot *CQBot) CQGetGroupMessageHistory(groupID int64, seq int64) global.MSG
|
||||
}
|
||||
ms := make([]global.MSG, 0, len(msg))
|
||||
for _, m := range msg {
|
||||
bot.checkMedia(m.Elements)
|
||||
bot.checkMedia(m.Elements, groupID)
|
||||
id := bot.InsertGroupMessage(m)
|
||||
t := bot.formatGroupMessage(m)
|
||||
t["message_id"] = id
|
||||
|
@ -150,7 +150,7 @@ func (bot *CQBot) UploadLocalVideo(target int64, v *LocalVideoElement) (*message
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer video.Close()
|
||||
defer func() { _ = video.Close() }()
|
||||
hash, _ := utils.ComputeMd5AndLength(io.MultiReader(video, v.thumb))
|
||||
cacheFile := path.Join(global.CachePath, hex.EncodeToString(hash)+".cache")
|
||||
_, _ = video.Seek(0, io.SeekStart)
|
||||
@ -220,7 +220,7 @@ func (bot *CQBot) SendGroupMessage(groupID int64, m *message.SendingMessage) int
|
||||
return -1
|
||||
}
|
||||
m.Elements = newElem
|
||||
bot.checkMedia(newElem)
|
||||
bot.checkMedia(newElem, groupID)
|
||||
ret := bot.Client.SendGroupMessage(groupID, m, base.ForceFragmented)
|
||||
if ret == nil || ret.Id == -1 {
|
||||
log.Warnf("群消息发送失败: 账号可能被风控.")
|
||||
@ -255,7 +255,7 @@ func (bot *CQBot) SendPrivateMessage(target int64, groupID int64, m *message.Sen
|
||||
return -1
|
||||
}
|
||||
m.Elements = newElem
|
||||
bot.checkMedia(newElem)
|
||||
bot.checkMedia(newElem, bot.Client.Uin)
|
||||
|
||||
// 单向好友是否存在
|
||||
unidirectionalFriendExists := func() bool {
|
||||
|
@ -31,7 +31,7 @@ func ToFormattedMessage(e []message.IMessageElement, groupID int64, isRaw ...boo
|
||||
}
|
||||
|
||||
func (bot *CQBot) privateMessageEvent(c *client.QQClient, m *message.PrivateMessage) {
|
||||
bot.checkMedia(m.Elements)
|
||||
bot.checkMedia(m.Elements, m.Sender.Uin)
|
||||
cqm := ToStringMessage(m.Elements, 0, true)
|
||||
id := bot.InsertPrivateMessage(m)
|
||||
log.Infof("收到好友 %v(%v) 的消息: %v (%v)", m.Sender.DisplayName(), m.Sender.Uin, cqm, id)
|
||||
@ -63,7 +63,7 @@ func (bot *CQBot) privateMessageEvent(c *client.QQClient, m *message.PrivateMess
|
||||
}
|
||||
|
||||
func (bot *CQBot) groupMessageEvent(c *client.QQClient, m *message.GroupMessage) {
|
||||
bot.checkMedia(m.Elements)
|
||||
bot.checkMedia(m.Elements, m.GroupCode)
|
||||
for _, elem := range m.Elements {
|
||||
if file, ok := elem.(*message.GroupFileElement); ok {
|
||||
log.Infof("群 %v(%v) 内 %v(%v) 上传了文件: %v", m.GroupName, m.GroupCode, m.Sender.DisplayName(), m.Sender.Uin, file.Name)
|
||||
@ -98,7 +98,7 @@ func (bot *CQBot) groupMessageEvent(c *client.QQClient, m *message.GroupMessage)
|
||||
|
||||
func (bot *CQBot) tempMessageEvent(c *client.QQClient, e *client.TempMessageEvent) {
|
||||
m := e.Message
|
||||
bot.checkMedia(m.Elements)
|
||||
bot.checkMedia(m.Elements, m.Sender.Uin)
|
||||
cqm := ToStringMessage(m.Elements, 0, true)
|
||||
bot.tempSessionCache.Store(m.Sender.Uin, e.Session)
|
||||
id := m.Id
|
||||
@ -542,11 +542,19 @@ func (bot *CQBot) groupDecrease(groupCode, userUin int64, operator *client.Group
|
||||
}
|
||||
}
|
||||
|
||||
func (bot *CQBot) checkMedia(e []message.IMessageElement) {
|
||||
func (bot *CQBot) checkMedia(e []message.IMessageElement, sourceId int64) {
|
||||
// TODO(wdvxdr): remove these old cache file in v1.0.0
|
||||
for _, elem := range e {
|
||||
switch i := elem.(type) {
|
||||
case *message.GroupImageElement:
|
||||
if i.Flash && sourceId != 0 {
|
||||
u, err := bot.Client.GetGroupImageDownloadUrl(i.FileId, sourceId, i.Md5)
|
||||
if err != nil {
|
||||
log.Warnf("获取闪照地址时出现错误: %v", err)
|
||||
} else {
|
||||
i.Url = u
|
||||
}
|
||||
}
|
||||
data := binary.NewWriterF(func(w *binary.Writer) {
|
||||
w.Write(i.Md5)
|
||||
w.WriteUInt32(uint32(i.Size))
|
||||
|
Loading…
x
Reference in New Issue
Block a user