mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 19:17:38 +08:00
feature support flash pic
This commit is contained in:
parent
4a1d7ac21d
commit
27804b182a
@ -1,7 +1,7 @@
|
||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-go v1.25.0
|
||||
// protoc v3.11.4
|
||||
// protoc v3.13.0
|
||||
// source: msg.proto
|
||||
|
||||
package msg
|
||||
@ -6018,6 +6018,61 @@ func (x *PbMultiMsgTransmit) GetPbItemList() []*PbMultiMsgItem {
|
||||
return nil
|
||||
}
|
||||
|
||||
type MsgElemInfoServtype3 struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
FlashTroopPic *CustomFace `protobuf:"bytes,1,opt,name=flash_troop_pic,json=flashTroopPic,proto3" json:"flash_troop_pic,omitempty"`
|
||||
FlashC2CPic *NotOnlineImage `protobuf:"bytes,2,opt,name=flash_c2c_pic,json=flashC2cPic,proto3" json:"flash_c2c_pic,omitempty"`
|
||||
}
|
||||
|
||||
func (x *MsgElemInfoServtype3) Reset() {
|
||||
*x = MsgElemInfoServtype3{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_msg_proto_msgTypes[56]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *MsgElemInfoServtype3) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*MsgElemInfoServtype3) ProtoMessage() {}
|
||||
|
||||
func (x *MsgElemInfoServtype3) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_msg_proto_msgTypes[56]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use MsgElemInfoServtype3.ProtoReflect.Descriptor instead.
|
||||
func (*MsgElemInfoServtype3) Descriptor() ([]byte, []int) {
|
||||
return file_msg_proto_rawDescGZIP(), []int{56}
|
||||
}
|
||||
|
||||
func (x *MsgElemInfoServtype3) GetFlashTroopPic() *CustomFace {
|
||||
if x != nil {
|
||||
return x.FlashTroopPic
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *MsgElemInfoServtype3) GetFlashC2CPic() *NotOnlineImage {
|
||||
if x != nil {
|
||||
return x.FlashC2CPic
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
var File_msg_proto protoreflect.FileDescriptor
|
||||
|
||||
var file_msg_proto_rawDesc = []byte{
|
||||
@ -6969,11 +7024,19 @@ var file_msg_proto_rawDesc = []byte{
|
||||
0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x2f, 0x0a, 0x0a, 0x70, 0x62,
|
||||
0x49, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f,
|
||||
0x2e, 0x50, 0x62, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x4d, 0x73, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52,
|
||||
0x0a, 0x70, 0x62, 0x49, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x2a, 0x2e, 0x0a, 0x08, 0x53,
|
||||
0x79, 0x6e, 0x63, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x54, 0x41, 0x52, 0x54,
|
||||
0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x55, 0x4d, 0x45, 0x10,
|
||||
0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x4f, 0x50, 0x10, 0x02, 0x42, 0x07, 0x5a, 0x05, 0x2e,
|
||||
0x3b, 0x6d, 0x73, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
0x0a, 0x70, 0x62, 0x49, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x81, 0x01, 0x0a, 0x15,
|
||||
0x4d, 0x73, 0x67, 0x45, 0x6c, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x5f, 0x73, 0x65, 0x72, 0x76,
|
||||
0x74, 0x79, 0x70, 0x65, 0x33, 0x12, 0x33, 0x0a, 0x0f, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x74,
|
||||
0x72, 0x6f, 0x6f, 0x70, 0x5f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b,
|
||||
0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x46, 0x61, 0x63, 0x65, 0x52, 0x0d, 0x66, 0x6c, 0x61,
|
||||
0x73, 0x68, 0x54, 0x72, 0x6f, 0x6f, 0x70, 0x50, 0x69, 0x63, 0x12, 0x33, 0x0a, 0x0d, 0x66, 0x6c,
|
||||
0x61, 0x73, 0x68, 0x5f, 0x63, 0x32, 0x63, 0x5f, 0x70, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28,
|
||||
0x0b, 0x32, 0x0f, 0x2e, 0x4e, 0x6f, 0x74, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x6d, 0x61,
|
||||
0x67, 0x65, 0x52, 0x0b, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x43, 0x32, 0x63, 0x50, 0x69, 0x63, 0x2a,
|
||||
0x2e, 0x0a, 0x08, 0x53, 0x79, 0x6e, 0x63, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x09, 0x0a, 0x05, 0x53,
|
||||
0x54, 0x41, 0x52, 0x54, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e,
|
||||
0x55, 0x4d, 0x45, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x4f, 0x50, 0x10, 0x02, 0x42,
|
||||
0x07, 0x5a, 0x05, 0x2e, 0x3b, 0x6d, 0x73, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
@ -6989,7 +7052,7 @@ func file_msg_proto_rawDescGZIP() []byte {
|
||||
}
|
||||
|
||||
var file_msg_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
|
||||
var file_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 56)
|
||||
var file_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 57)
|
||||
var file_msg_proto_goTypes = []interface{}{
|
||||
(SyncFlag)(0), // 0: SyncFlag
|
||||
(*GetMessageRequest)(nil), // 1: GetMessageRequest
|
||||
@ -7048,6 +7111,7 @@ var file_msg_proto_goTypes = []interface{}{
|
||||
(*PbMultiMsgItem)(nil), // 54: PbMultiMsgItem
|
||||
(*PbMultiMsgNew)(nil), // 55: PbMultiMsgNew
|
||||
(*PbMultiMsgTransmit)(nil), // 56: PbMultiMsgTransmit
|
||||
(*MsgElemInfoServtype3)(nil), // 57: MsgElemInfo_servtype3
|
||||
}
|
||||
var file_msg_proto_depIdxs = []int32{
|
||||
0, // 0: GetMessageRequest.syncFlag:type_name -> SyncFlag
|
||||
@ -7109,11 +7173,13 @@ var file_msg_proto_depIdxs = []int32{
|
||||
17, // 56: PbMultiMsgNew.msg:type_name -> Message
|
||||
17, // 57: PbMultiMsgTransmit.msg:type_name -> Message
|
||||
54, // 58: PbMultiMsgTransmit.pbItemList:type_name -> PbMultiMsgItem
|
||||
59, // [59:59] is the sub-list for method output_type
|
||||
59, // [59:59] is the sub-list for method input_type
|
||||
59, // [59:59] is the sub-list for extension type_name
|
||||
59, // [59:59] is the sub-list for extension extendee
|
||||
0, // [0:59] is the sub-list for field type_name
|
||||
41, // 59: MsgElemInfo_servtype3.flash_troop_pic:type_name -> CustomFace
|
||||
31, // 60: MsgElemInfo_servtype3.flash_c2c_pic:type_name -> NotOnlineImage
|
||||
61, // [61:61] is the sub-list for method output_type
|
||||
61, // [61:61] is the sub-list for method input_type
|
||||
61, // [61:61] is the sub-list for extension type_name
|
||||
61, // [61:61] is the sub-list for extension extendee
|
||||
0, // [0:61] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_msg_proto_init() }
|
||||
@ -7794,6 +7860,18 @@ func file_msg_proto_init() {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_msg_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*MsgElemInfoServtype3); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
type x struct{}
|
||||
out := protoimpl.TypeBuilder{
|
||||
@ -7801,7 +7879,7 @@ func file_msg_proto_init() {
|
||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_msg_proto_rawDesc,
|
||||
NumEnums: 1,
|
||||
NumMessages: 56,
|
||||
NumMessages: 57,
|
||||
NumExtensions: 0,
|
||||
NumServices: 0,
|
||||
},
|
||||
|
@ -698,6 +698,11 @@ message PbMultiMsgTransmit {
|
||||
repeated PbMultiMsgItem pbItemList = 2;
|
||||
}
|
||||
|
||||
message MsgElemInfo_servtype3{
|
||||
CustomFace flash_troop_pic = 1;
|
||||
NotOnlineImage flash_c2c_pic = 2;
|
||||
}
|
||||
|
||||
enum SyncFlag {
|
||||
START = 0;
|
||||
CONTINUME = 1;
|
||||
|
@ -107,6 +107,14 @@ type RedBagElement struct {
|
||||
Title string
|
||||
}
|
||||
|
||||
type GroupFlashPicElement struct {
|
||||
GroupImageElement
|
||||
}
|
||||
|
||||
type FriendFlashPicElement struct{
|
||||
FriendImageElement
|
||||
}
|
||||
|
||||
type RedBagMessageType int
|
||||
|
||||
const (
|
||||
|
@ -78,6 +78,10 @@ type (
|
||||
Type() ElementType
|
||||
}
|
||||
|
||||
IRichMessageElement interface {
|
||||
Pack() []*msg.Elem
|
||||
}
|
||||
|
||||
ElementType int
|
||||
|
||||
GroupGift int
|
||||
@ -271,123 +275,9 @@ func ToProtoElems(elems []IMessageElement, generalFlags bool) (r []*msg.Elem) {
|
||||
})
|
||||
}
|
||||
}
|
||||
imgOld := []byte{0x15, 0x36, 0x20, 0x39, 0x32, 0x6B, 0x41, 0x31, 0x00, 0x38, 0x37, 0x32, 0x66, 0x30, 0x36, 0x36, 0x30, 0x33, 0x61, 0x65, 0x31, 0x30, 0x33, 0x62, 0x37, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x35, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7B, 0x30, 0x31, 0x45, 0x39, 0x34, 0x35, 0x31, 0x42, 0x2D, 0x37, 0x30, 0x45, 0x44,
|
||||
0x2D, 0x45, 0x41, 0x45, 0x33, 0x2D, 0x42, 0x33, 0x37, 0x43, 0x2D, 0x31, 0x30, 0x31, 0x46, 0x31, 0x45, 0x45, 0x42, 0x46, 0x35, 0x42, 0x35, 0x7D, 0x2E, 0x70, 0x6E, 0x67, 0x41}
|
||||
for _, elem := range elems {
|
||||
switch e := elem.(type) {
|
||||
case *TextElement:
|
||||
r = append(r, &msg.Elem{
|
||||
Text: &msg.Text{
|
||||
Str: e.Content,
|
||||
},
|
||||
})
|
||||
case *FaceElement:
|
||||
r = append(r, &msg.Elem{
|
||||
Face: &msg.Face{
|
||||
Index: e.Index,
|
||||
Old: binary.ToBytes(int16(0x1445 - 4 + e.Index)),
|
||||
Buf: []byte{0x00, 0x01, 0x00, 0x04, 0x52, 0xCC, 0xF5, 0xD0},
|
||||
},
|
||||
})
|
||||
case *AtElement:
|
||||
r = append(r, &msg.Elem{
|
||||
Text: &msg.Text{
|
||||
Str: e.Display,
|
||||
Attr6Buf: binary.NewWriterF(func(w *binary.Writer) {
|
||||
w.WriteUInt16(1)
|
||||
w.WriteUInt16(0)
|
||||
w.WriteUInt16(uint16(len([]rune(e.Display))))
|
||||
w.WriteByte(func() byte {
|
||||
if e.Target == 0 {
|
||||
return 1
|
||||
}
|
||||
return 0
|
||||
}())
|
||||
w.WriteUInt32(uint32(e.Target))
|
||||
w.WriteUInt16(0)
|
||||
}),
|
||||
},
|
||||
})
|
||||
r = append(r, &msg.Elem{Text: &msg.Text{Str: " "}})
|
||||
case *ImageElement:
|
||||
r = append(r, &msg.Elem{
|
||||
CustomFace: &msg.CustomFace{
|
||||
FilePath: e.Filename,
|
||||
Md5: e.Md5,
|
||||
Size: e.Size,
|
||||
Flag: make([]byte, 4),
|
||||
OldData: imgOld,
|
||||
},
|
||||
})
|
||||
case *GroupImageElement:
|
||||
r = append(r, &msg.Elem{
|
||||
CustomFace: &msg.CustomFace{
|
||||
FileType: 66,
|
||||
Useful: 1,
|
||||
Origin: 1,
|
||||
FileId: int32(e.FileId),
|
||||
FilePath: e.ImageId,
|
||||
Size: e.Size,
|
||||
Md5: e.Md5[:],
|
||||
Flag: make([]byte, 4),
|
||||
//OldData: imgOld,
|
||||
},
|
||||
})
|
||||
case *FriendImageElement:
|
||||
r = append(r, &msg.Elem{
|
||||
NotOnlineImage: &msg.NotOnlineImage{
|
||||
FilePath: e.ImageId,
|
||||
ResId: e.ImageId,
|
||||
OldPicMd5: false,
|
||||
PicMd5: e.Md5,
|
||||
DownloadPath: e.ImageId,
|
||||
Original: 1,
|
||||
PbReserve: []byte{0x78, 0x02},
|
||||
},
|
||||
})
|
||||
case *ServiceElement:
|
||||
if e.Id == 35 {
|
||||
r = append(r, &msg.Elem{
|
||||
RichMsg: &msg.RichMsg{
|
||||
Template1: append([]byte{1}, binary.ZlibCompress([]byte(e.Content))...),
|
||||
ServiceId: e.Id,
|
||||
MsgResId: []byte{},
|
||||
},
|
||||
})
|
||||
r = append(r, &msg.Elem{
|
||||
Text: &msg.Text{
|
||||
Str: "你的QQ暂不支持查看[转发多条消息],请期待后续版本。",
|
||||
},
|
||||
})
|
||||
continue
|
||||
}
|
||||
if e.Id == 33 {
|
||||
r = append(r, &msg.Elem{
|
||||
Text: &msg.Text{Str: e.ResId},
|
||||
})
|
||||
r = append(r, &msg.Elem{
|
||||
RichMsg: &msg.RichMsg{
|
||||
Template1: append([]byte{1}, binary.ZlibCompress([]byte(e.Content))...),
|
||||
ServiceId: e.Id,
|
||||
MsgResId: []byte{},
|
||||
},
|
||||
})
|
||||
continue
|
||||
}
|
||||
r = append(r, &msg.Elem{
|
||||
RichMsg: &msg.RichMsg{
|
||||
Template1: append([]byte{1}, binary.ZlibCompress([]byte(e.Content))...),
|
||||
ServiceId: e.Id,
|
||||
},
|
||||
})
|
||||
case *LightAppElement:
|
||||
r = append(r, &msg.Elem{
|
||||
LightApp: &msg.LightAppElem{
|
||||
Data: append([]byte{1}, binary.ZlibCompress([]byte(e.Content))...),
|
||||
MsgResid: []byte{1},
|
||||
},
|
||||
})
|
||||
if e,ok := elem.(IRichMessageElement);ok{
|
||||
r = append(r, e.Pack()...)
|
||||
}
|
||||
}
|
||||
if generalFlags {
|
||||
@ -584,6 +474,29 @@ func ParseMessageElems(elems []*msg.Elem) []IMessageElement {
|
||||
if elem.Face != nil {
|
||||
res = append(res, NewFace(elem.Face.Index))
|
||||
}
|
||||
if elem.CommonElem != nil {
|
||||
switch elem.CommonElem.ServiceType {
|
||||
case 3:
|
||||
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,
|
||||
})
|
||||
}
|
||||
if flash.FlashC2CPic != nil {
|
||||
res = append(res, &ImageElement{
|
||||
Filename: flash.FlashC2CPic.FilePath,
|
||||
Size: flash.FlashC2CPic.FileLen,
|
||||
Md5: flash.FlashC2CPic.PicMd5,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
211
message/pack.go
Normal file
211
message/pack.go
Normal file
@ -0,0 +1,211 @@
|
||||
package message
|
||||
|
||||
import (
|
||||
"github.com/Mrs4s/MiraiGo/binary"
|
||||
"github.com/Mrs4s/MiraiGo/client/pb/msg"
|
||||
"github.com/golang/protobuf/proto"
|
||||
)
|
||||
|
||||
var imgOld = []byte{0x15, 0x36, 0x20, 0x39, 0x32, 0x6B, 0x41, 0x31, 0x00, 0x38, 0x37, 0x32, 0x66, 0x30, 0x36, 0x36, 0x30, 0x33, 0x61, 0x65, 0x31, 0x30, 0x33, 0x62, 0x37, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x35, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7B, 0x30, 0x31, 0x45, 0x39, 0x34, 0x35, 0x31, 0x42, 0x2D, 0x37, 0x30, 0x45, 0x44,
|
||||
0x2D, 0x45, 0x41, 0x45, 0x33, 0x2D, 0x42, 0x33, 0x37, 0x43, 0x2D, 0x31, 0x30, 0x31, 0x46, 0x31, 0x45, 0x45, 0x42, 0x46, 0x35, 0x42, 0x35, 0x7D, 0x2E, 0x70, 0x6E, 0x67, 0x41}
|
||||
|
||||
func (e *TextElement) Pack() (r []*msg.Elem) {
|
||||
r = append(r, &msg.Elem{
|
||||
Text: &msg.Text{
|
||||
Str: e.Content,
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
func (e *FaceElement) Pack() (r []*msg.Elem) {
|
||||
r = []*msg.Elem{}
|
||||
r = append(r, &msg.Elem{
|
||||
Face: &msg.Face{
|
||||
Index: e.Index,
|
||||
Old: binary.ToBytes(int16(0x1445 - 4 + e.Index)),
|
||||
Buf: []byte{0x00, 0x01, 0x00, 0x04, 0x52, 0xCC, 0xF5, 0xD0},
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
func (e *AtElement) Pack() (r []*msg.Elem) {
|
||||
r = []*msg.Elem{}
|
||||
r = append(r, &msg.Elem{
|
||||
Text: &msg.Text{
|
||||
Str: e.Display,
|
||||
Attr6Buf: binary.NewWriterF(func(w *binary.Writer) {
|
||||
w.WriteUInt16(1)
|
||||
w.WriteUInt16(0)
|
||||
w.WriteUInt16(uint16(len([]rune(e.Display))))
|
||||
w.WriteByte(func() byte {
|
||||
if e.Target == 0 {
|
||||
return 1
|
||||
}
|
||||
return 0
|
||||
}())
|
||||
w.WriteUInt32(uint32(e.Target))
|
||||
w.WriteUInt16(0)
|
||||
}),
|
||||
},
|
||||
})
|
||||
r = append(r, &msg.Elem{Text: &msg.Text{Str: " "}})
|
||||
return
|
||||
}
|
||||
|
||||
func (e *ImageElement) Pack() (r []*msg.Elem) {
|
||||
r = []*msg.Elem{}
|
||||
r = append(r, &msg.Elem{
|
||||
CustomFace: &msg.CustomFace{
|
||||
FilePath: e.Filename,
|
||||
Md5: e.Md5,
|
||||
Size: e.Size,
|
||||
Flag: make([]byte, 4),
|
||||
OldData: imgOld,
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
func (e *GroupImageElement) Pack(r []*msg.Elem) {
|
||||
r = []*msg.Elem{}
|
||||
r = append(r, &msg.Elem{
|
||||
CustomFace: &msg.CustomFace{
|
||||
FileType: 66,
|
||||
Useful: 1,
|
||||
Origin: 1,
|
||||
FileId: int32(e.FileId),
|
||||
FilePath: e.ImageId,
|
||||
Size: e.Size,
|
||||
Md5: e.Md5[:],
|
||||
Flag: make([]byte, 4),
|
||||
//OldData: imgOld,
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
func (e *FriendImageElement) Pack() (r []*msg.Elem) {
|
||||
r = []*msg.Elem{}
|
||||
r = append(r, &msg.Elem{
|
||||
NotOnlineImage: &msg.NotOnlineImage{
|
||||
FilePath: e.ImageId,
|
||||
ResId: e.ImageId,
|
||||
OldPicMd5: false,
|
||||
PicMd5: e.Md5,
|
||||
DownloadPath: e.ImageId,
|
||||
Original: 1,
|
||||
PbReserve: []byte{0x78, 0x02},
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
func (e *ServiceElement) Pack() (r []*msg.Elem) {
|
||||
r = []*msg.Elem{}
|
||||
if e.Id == 35 {
|
||||
r = append(r, &msg.Elem{
|
||||
RichMsg: &msg.RichMsg{
|
||||
Template1: append([]byte{1}, binary.ZlibCompress([]byte(e.Content))...),
|
||||
ServiceId: e.Id,
|
||||
MsgResId: []byte{},
|
||||
},
|
||||
})
|
||||
r = append(r, &msg.Elem{
|
||||
Text: &msg.Text{
|
||||
Str: "你的QQ暂不支持查看[转发多条消息],请期待后续版本。",
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
if e.Id == 33 {
|
||||
r = append(r, &msg.Elem{
|
||||
Text: &msg.Text{Str: e.ResId},
|
||||
})
|
||||
r = append(r, &msg.Elem{
|
||||
RichMsg: &msg.RichMsg{
|
||||
Template1: append([]byte{1}, binary.ZlibCompress([]byte(e.Content))...),
|
||||
ServiceId: e.Id,
|
||||
MsgResId: []byte{},
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
r = append(r, &msg.Elem{
|
||||
RichMsg: &msg.RichMsg{
|
||||
Template1: append([]byte{1}, binary.ZlibCompress([]byte(e.Content))...),
|
||||
ServiceId: e.Id,
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
func (e *LightAppElement) Pack() (r []*msg.Elem) {
|
||||
r = []*msg.Elem{}
|
||||
r = append(r, &msg.Elem{
|
||||
LightApp: &msg.LightAppElem{
|
||||
Data: append([]byte{1}, binary.ZlibCompress([]byte(e.Content))...),
|
||||
MsgResid: []byte{1},
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
func (e *FriendFlashPicElement) Pack() (r []*msg.Elem) {
|
||||
r = []*msg.Elem{}
|
||||
flash := &msg.MsgElemInfoServtype3{
|
||||
FlashC2CPic: &msg.NotOnlineImage{
|
||||
FilePath: e.ImageId,
|
||||
ResId: e.ImageId,
|
||||
OldPicMd5: false,
|
||||
PicMd5: e.Md5,
|
||||
DownloadPath: e.ImageId,
|
||||
Original: 1,
|
||||
PbReserve: []byte{0x78, 0x02},
|
||||
},
|
||||
}
|
||||
data, _ := proto.Marshal(flash)
|
||||
r = append(r, &msg.Elem{
|
||||
CommonElem: &msg.CommonElem{
|
||||
ServiceType: 3,
|
||||
PbElem: data,
|
||||
},
|
||||
})
|
||||
r = append(r, &msg.Elem{
|
||||
Text: &msg.Text{
|
||||
Str: "[闪照]请使用新版手机QQ查看闪照。",
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
func (e *GroupFlashPicElement) Pack() (r []*msg.Elem) {
|
||||
r = []*msg.Elem{}
|
||||
flash := &msg.MsgElemInfoServtype3{
|
||||
FlashTroopPic: &msg.CustomFace{
|
||||
FileType: 66,
|
||||
Useful: 1,
|
||||
Origin: 1,
|
||||
FileId: int32(e.FileId),
|
||||
FilePath: e.ImageId,
|
||||
Size: e.Size,
|
||||
Md5: e.Md5[:],
|
||||
Flag: make([]byte, 4),
|
||||
},
|
||||
}
|
||||
data, _ := proto.Marshal(flash)
|
||||
r = append(r, &msg.Elem{
|
||||
CommonElem: &msg.CommonElem{
|
||||
ServiceType: 3,
|
||||
PbElem: data,
|
||||
},
|
||||
})
|
||||
r = append(r, &msg.Elem{
|
||||
Text: &msg.Text{
|
||||
Str: "[闪照]请使用新版手机QQ查看闪照。",
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user