diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..485dee64 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea diff --git a/message/elements.go b/message/elements.go index 155a8d0f..528ca9a3 100644 --- a/message/elements.go +++ b/message/elements.go @@ -161,6 +161,24 @@ func NewUrlShare(url, title, content, image string) *ServiceElement { SubType: "UrlShare", } } +func NewXmlMsg(template string, ResId int64) *ServiceElement { + if ResId == 0 { + ResId = 60 //默认值60 + } + return &ServiceElement{ + Id: int32(ResId), + Content: template, + SubType: "xml", + } +} + +func NewJsonMsg(template string) *ServiceElement { + return &ServiceElement{ + Id: 1, + Content: template, + SubType: "json", + } +} func (e *TextElement) Type() ElementType { return Text diff --git a/message/message.go b/message/message.go index a8388b00..cbca629d 100644 --- a/message/message.go +++ b/message/message.go @@ -347,6 +347,15 @@ func ToProtoElems(elems []IMessageElement, generalFlags bool) (r []*msg.Elem) { }) continue } + if e.SubType == "json" { + r = append(r, &msg.Elem{ + LightApp: &msg.LightAppElem{ + Data: append([]byte{1}, binary.ZlibCompress([]byte(e.Content))...), + MsgResid: []byte{1}, + }, + }) + continue + } r = append(r, &msg.Elem{ RichMsg: &msg.RichMsg{ Template1: append([]byte{1}, binary.ZlibCompress([]byte(e.Content))...), @@ -539,7 +548,7 @@ func (forMsg *ForwardMessage) CalculateValidationData(seq, random int32, groupCo FromUin: node.SenderId, MsgSeq: seq, MsgTime: node.Time, - MsgUid: 0x01000000000000000 | (int64(random) & 0xFFFF_FFFF), + MsgUid: 0x01000000000000000 | (int64(random) & 0xFFFFFFFF), MutiltransHead: &msg.MutilTransHead{ MsgId: 1, },