From a84b52488922d54d7738c32b7f0760ec28407191 Mon Sep 17 00:00:00 2001 From: wfjsw Date: Mon, 9 Nov 2020 00:37:48 +0800 Subject: [PATCH 1/3] proper flash pic support --- .gitignore | 1 + message/elements.go | 15 +++++++++++++-- message/message.go | 35 ++++++++++++++++++++--------------- 3 files changed, 34 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index 485dee64..f2ecd3c0 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .idea +vendor/ diff --git a/message/elements.go b/message/elements.go index 2666c1af..28449583 100644 --- a/message/elements.go +++ b/message/elements.go @@ -2,10 +2,11 @@ package message import ( "fmt" - "github.com/Mrs4s/MiraiGo/binary" - "github.com/Mrs4s/MiraiGo/client/pb/msg" "strconv" "strings" + + "github.com/Mrs4s/MiraiGo/binary" + "github.com/Mrs4s/MiraiGo/client/pb/msg" ) type TextElement struct { @@ -112,6 +113,12 @@ type RedBagElement struct { Title string } +// TODO: 总之就是非常傻逼 + +type GroupFlashImgElement struct { + ImageElement +} + type GroupFlashPicElement struct { GroupImageElement } @@ -121,6 +128,10 @@ type GroupShowPicElement struct { EffectId int32 } +type FriendFlashImgElement struct { + ImageElement +} + type FriendFlashPicElement struct { FriendImageElement } diff --git a/message/message.go b/message/message.go index 7d71b1d2..d7b9df9a 100644 --- a/message/message.go +++ b/message/message.go @@ -2,16 +2,17 @@ package message import ( "crypto/md5" - "github.com/Mrs4s/MiraiGo/binary" - "github.com/Mrs4s/MiraiGo/client/pb/msg" - "github.com/Mrs4s/MiraiGo/utils" - "github.com/golang/protobuf/proto" - "github.com/tidwall/gjson" "math" "reflect" "regexp" "strconv" "strings" + + "github.com/Mrs4s/MiraiGo/binary" + "github.com/Mrs4s/MiraiGo/client/pb/msg" + "github.com/Mrs4s/MiraiGo/utils" + "github.com/golang/protobuf/proto" + "github.com/tidwall/gjson" ) type ( @@ -480,19 +481,23 @@ func ParseMessageElems(elems []*msg.Elem) []IMessageElement { flash := &msg.MsgElemInfoServtype3{} _ = proto.Unmarshal(elem.CommonElem.PbElem, flash) if flash.FlashTroopPic != nil { - res = append(res, &ImageElement{ - Filename: flash.FlashTroopPic.FilePath, - Size: flash.FlashTroopPic.Size, - Width: flash.FlashTroopPic.Width, - Height: flash.FlashTroopPic.Height, - Md5: flash.FlashTroopPic.Md5, + res = append(res, &GroupFlashImgElement{ + ImageElement{ + Filename: flash.FlashTroopPic.FilePath, + Size: flash.FlashTroopPic.Size, + Width: flash.FlashTroopPic.Width, + Height: flash.FlashTroopPic.Height, + Md5: flash.FlashTroopPic.Md5, + }, }) } if flash.FlashC2CPic != nil { - res = append(res, &ImageElement{ - Filename: flash.FlashC2CPic.FilePath, - Size: flash.FlashC2CPic.FileLen, - Md5: flash.FlashC2CPic.PicMd5, + res = append(res, &GroupFlashImgElement{ + ImageElement{ + Filename: flash.FlashC2CPic.FilePath, + Size: flash.FlashC2CPic.FileLen, + Md5: flash.FlashC2CPic.PicMd5, + }, }) } } From 99de2470aa0b24666f0eda23f087c9f3399fc1dd Mon Sep 17 00:00:00 2001 From: wfjsw Date: Tue, 17 Nov 2020 20:04:27 +0800 Subject: [PATCH 2/3] finalize --- message/elements.go | 8 ++++++++ message/message.go | 12 ++++++++++++ 2 files changed, 20 insertions(+) diff --git a/message/elements.go b/message/elements.go index 28449583..4d7076ae 100644 --- a/message/elements.go +++ b/message/elements.go @@ -247,6 +247,14 @@ func (e *ImageElement) Type() ElementType { return Image } +func (e *GroupFlashImgElement) Type() ElementType { + return Image +} + +func (e *FriendFlashImgElement) Type() ElementType { + return Image +} + func (e *FaceElement) Type() ElementType { return Face } diff --git a/message/message.go b/message/message.go index d7b9df9a..d9d62228 100644 --- a/message/message.go +++ b/message/message.go @@ -128,6 +128,9 @@ func (msg *PrivateMessage) ToString() (res string) { res += e.Content case *ImageElement: res += "[Image:" + e.Filename + "]" + case *FriendFlashImgElement: + // NOTE: ignore other components + return "[Image (flash):" + e.Filename + "]" case *FaceElement: res += "[" + e.Name + "]" case *AtElement: @@ -164,6 +167,9 @@ func (msg *GroupMessage) ToString() (res string) { res += "[" + e.Name + "]" case *GroupImageElement: res += "[Image: " + e.ImageId + "]" + case *GroupFlashImgElement: + // NOTE: ignore other components + return "[Image (flash):" + e.Filename + "]" case *AtElement: res += e.Display case *RedBagElement: @@ -557,6 +563,12 @@ func ToReadableString(m []IMessageElement) (r string) { r += "/" + e.Name case *GroupImageElement: r += "[图片]" + // NOTE: flash pic is singular + // To be clarified + // case *GroupFlashImgElement: + // return "[闪照]" + // case *FriendFlashImgElement: + // return "[闪照]" case *AtElement: r += e.Display } From 2278de40cf827f5426ca47b8030708e593cffd13 Mon Sep 17 00:00:00 2001 From: wfjsw Date: Tue, 17 Nov 2020 20:11:10 +0800 Subject: [PATCH 3/3] return as soon as it meets flash img --- message/message.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/message/message.go b/message/message.go index d9d62228..5f1af71a 100644 --- a/message/message.go +++ b/message/message.go @@ -496,6 +496,7 @@ func ParseMessageElems(elems []*msg.Elem) []IMessageElement { Md5: flash.FlashTroopPic.Md5, }, }) + return res } if flash.FlashC2CPic != nil { res = append(res, &GroupFlashImgElement{ @@ -505,6 +506,7 @@ func ParseMessageElems(elems []*msg.Elem) []IMessageElement { Md5: flash.FlashC2CPic.PicMd5, }, }) + return res } } }