1
0
mirror of https://github.com/Mrs4s/go-cqhttp.git synced 2025-05-06 12:03:50 +08:00

update MiraiGo.

This commit is contained in:
Mrs4s 2021-01-05 00:53:24 +08:00
parent b8916d2570
commit 773952d6d6
4 changed files with 31 additions and 24 deletions

View File

@ -6,6 +6,7 @@ import (
"fmt"
"hash/crc32"
"io/ioutil"
"os"
"path"
"runtime/debug"
"sync"
@ -118,11 +119,30 @@ func (bot *CQBot) GetMessage(mid int32) MSG {
return nil
}
func (bot *CQBot) UploadLocalImageAsGroup(groupCode int64, img *LocalImageElement) (*message.GroupImageElement, error) {
if img.Stream != nil {
return bot.Client.UploadGroupImage(groupCode, img.Stream)
}
return bot.Client.UploadGroupImageByFile(groupCode, img.File)
}
func (bot *CQBot) UploadLocalImageAsPrivate(userId int64, img *LocalImageElement) (*message.FriendImageElement, error) {
if img.Stream != nil {
return bot.Client.UploadPrivateImage(userId, img.Stream)
}
// need update.
f, err := os.Open(img.File)
if err != nil {
return nil, err
}
return bot.Client.UploadPrivateImage(userId, f)
}
func (bot *CQBot) SendGroupMessage(groupId int64, m *message.SendingMessage) int32 {
var newElem []message.IMessageElement
for _, elem := range m.Elements {
if i, ok := elem.(*LocalImageElement); ok {
gm, err := bot.Client.UploadGroupImage(groupId, i.Stream)
gm, err := bot.UploadLocalImageAsGroup(groupId, i)
if err != nil {
log.Warnf("警告: 群 %v 消息图片上传失败: %v", groupId, err)
continue
@ -238,7 +258,7 @@ func (bot *CQBot) SendPrivateMessage(target int64, m *message.SendingMessage) in
var newElem []message.IMessageElement
for _, elem := range m.Elements {
if i, ok := elem.(*LocalImageElement); ok {
fm, err := bot.Client.UploadPrivateImage(target, i.Stream)
fm, err := bot.UploadLocalImageAsPrivate(target, i)
if err != nil {
log.Warnf("警告: 私聊 %v 消息图片上传失败.", target)
continue

View File

@ -69,6 +69,7 @@ type MiguMusicElement struct {
type LocalImageElement struct {
message.ImageElement
Stream io.ReadSeeker
File string
}
type LocalVoiceElement struct {
@ -556,9 +557,9 @@ func (bot *CQBot) ToElement(t string, d map[string]string, group bool) (m interf
}
if i, ok := img.(*LocalImageElement); ok { // 秀图,闪照什么的就直接传了吧
if group {
img, err = bot.Client.UploadGroupImage(1, i.Stream)
img, err = bot.UploadLocalImageAsGroup(1, i)
} else {
img, err = bot.Client.UploadPrivateImage(1, i.Stream)
img, err = bot.UploadLocalImageAsPrivate(1, i)
}
if err != nil {
return nil, err
@ -826,10 +827,7 @@ func (bot *CQBot) makeImageElem(d map[string]string, group bool) (message.IMessa
hash := md5.Sum([]byte(f))
cacheFile := path.Join(global.CACHE_PATH, hex.EncodeToString(hash[:])+".cache")
if global.PathExists(cacheFile) && cache == "1" {
f, err := os.Open(cacheFile)
if err == nil {
return &LocalImageElement{Stream: f}, nil
}
return &LocalImageElement{File: cacheFile}, nil
}
if global.PathExists(cacheFile) {
_ = os.Remove(cacheFile)
@ -838,11 +836,7 @@ func (bot *CQBot) makeImageElem(d map[string]string, group bool) (message.IMessa
if err := global.DownloadFileMultiThreading(f, cacheFile, maxImageSize, thread); err != nil {
return nil, err
}
f, err := os.Open(cacheFile)
if err != nil {
return nil, err
}
return &LocalImageElement{Stream: f}, nil
return &LocalImageElement{File: cacheFile}, nil
}
if strings.HasPrefix(f, "base64") {
b, err := base64.StdEncoding.DecodeString(strings.ReplaceAll(f, "base64://", ""))
@ -866,11 +860,7 @@ func (bot *CQBot) makeImageElem(d map[string]string, group bool) (message.IMessa
if info.Size() == 0 || info.Size() >= maxImageSize {
return nil, errors.New("invalid image size")
}
file, err := os.Open(fu.Path)
if err != nil {
return nil, err
}
return &LocalImageElement{Stream: file}, nil
return &LocalImageElement{File: fu.Path}, nil
}
rawPath := path.Join(global.IMAGE_PATH, f)
if !global.PathExists(rawPath) && global.PathExists(path.Join(global.IMAGE_PATH_OLD, f)) {

2
go.mod
View File

@ -3,7 +3,7 @@ module github.com/Mrs4s/go-cqhttp
go 1.15
require (
github.com/Mrs4s/MiraiGo v0.0.0-20210102161828-e1e1c97a56f2
github.com/Mrs4s/MiraiGo v0.0.0-20210104164708-e94ea61cc8e9
github.com/dustin/go-humanize v1.0.0
github.com/gin-contrib/pprof v1.3.0
github.com/gin-gonic/gin v1.6.3

7
go.sum
View File

@ -1,9 +1,7 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/Mrs4s/MiraiGo v0.0.0-20210102160857-d0a296aab77f h1:Cup2n0Da+Iy9p0Jpgi/KxjvlCHwBZzfY4YB13l4mFLk=
github.com/Mrs4s/MiraiGo v0.0.0-20210102160857-d0a296aab77f/go.mod h1:HW2e375lCQiRwtuA/LV6ZVTsi7co1TRfBn+L5Ow77Bo=
github.com/Mrs4s/MiraiGo v0.0.0-20210102161828-e1e1c97a56f2 h1:7tuZag+0XUisdi3HJq5iaSGIJ3Q0doa2leSl1iH3cKs=
github.com/Mrs4s/MiraiGo v0.0.0-20210102161828-e1e1c97a56f2/go.mod h1:HW2e375lCQiRwtuA/LV6ZVTsi7co1TRfBn+L5Ow77Bo=
github.com/Mrs4s/MiraiGo v0.0.0-20210104164708-e94ea61cc8e9 h1:jzaBgDPLKRuJxQO9UT/2vCFL0ScCO9IThRCa7ViMbGE=
github.com/Mrs4s/MiraiGo v0.0.0-20210104164708-e94ea61cc8e9/go.mod h1:HW2e375lCQiRwtuA/LV6ZVTsi7co1TRfBn+L5Ow77Bo=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@ -54,7 +52,6 @@ github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0U
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/guonaihong/gout v0.1.4 h1:uBBoyztMX9okC27OQxqhn6bZ0ROkGyvnEIHwtp3TM4g=
github.com/guonaihong/gout v0.1.4/go.mod h1:0rFYAYyzbcxEg11eY2qUbffJs7hHRPeugAnlVYSp8Ic=
github.com/hjson/hjson-go v0.2.3 h1:KhG7/PSxTibbYOzFso5FoiX2gWePcANaCsvM1WE/bTo=
github.com/hjson/hjson-go v3.1.0+incompatible h1:DY/9yE8ey8Zv22bY+mHV1uk2yRy0h8tKhZ77hEdi0Aw=
github.com/hjson/hjson-go v3.1.0+incompatible/go.mod h1:qsetwF8NlsTsOTwZTApNlTCerV+b2GjYRRcIk4JMFio=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=