BuildFakeMessage make a fake message
(msgElems []*message2.ForwardNode)
| 147 | |
| 148 | // BuildFakeMessage make a fake message |
| 149 | func (c *QQClient) BuildFakeMessage(msgElems []*message2.ForwardNode) []*message.PushMsgBody { |
| 150 | body := make([]*message.PushMsgBody, len(msgElems)) |
| 151 | for idx, elem := range msgElems { |
| 152 | avatar := fmt.Sprintf("https://q.qlogo.cn/headimg_dl?dst_uin=%d&spec=640&img_type=jpg", elem.SenderID) |
| 153 | body[idx] = &message.PushMsgBody{ |
| 154 | ResponseHead: &message.ResponseHead{ |
| 155 | FromUid: proto.String(""), |
| 156 | FromUin: elem.SenderID, |
| 157 | }, |
| 158 | ContentHead: &message.ContentHead{ |
| 159 | Type: utils.Ternary[uint32](elem.GroupID != 0, 82, 9), |
| 160 | MsgId: proto.Uint32(crypto.RandU32()), |
| 161 | Sequence: proto.Uint32(crypto.RandU32()), |
| 162 | TimeStamp: proto.Uint32(uint32(utils.TimeStamp())), |
| 163 | Field7: proto.Uint64(1), |
| 164 | Field8: proto.Uint32(0), |
| 165 | Field9: proto.Uint32(0), |
| 166 | Foward: &message.ForwardHead{ |
| 167 | Field1: proto.Uint32(0), |
| 168 | Field2: proto.Uint32(0), |
| 169 | Field3: proto.Uint32(utils.Ternary[uint32](elem.GroupID != 0, 0, 2)), |
| 170 | UnknownBase64: proto.String(avatar), |
| 171 | Avatar: proto.String(avatar), |
| 172 | }, |
| 173 | }, |
| 174 | } |
| 175 | if elem.GroupID != 0 { |
| 176 | body[idx].ResponseHead.Grp = &message.ResponseGrp{ |
| 177 | GroupUin: elem.GroupID, |
| 178 | MemberName: elem.SenderName, |
| 179 | Unknown5: 2, |
| 180 | } |
| 181 | c.preProcessGroupMessage(elem.GroupID, elem.Message) |
| 182 | } else { |
| 183 | body[idx].ResponseHead.ToUid = proto.String(c.GetUID(c.Uin)) |
| 184 | body[idx].ResponseHead.Forward = &message.ResponseForward{ |
| 185 | FriendName: proto.String(elem.SenderName), |
| 186 | } |
| 187 | body[idx].ContentHead.SubType = proto.Uint32(4) |
| 188 | body[idx].ContentHead.DivSeq = proto.Uint32(4) |
| 189 | c.preProcessPrivateMessage(c.Uin, elem.Message) |
| 190 | } |
| 191 | body[idx].Body = message2.PackElementsToBody(elem.Message) |
| 192 | } |
| 193 | return body |
| 194 | } |
| 195 | |
| 196 | func (c *QQClient) preProcessGroupMessage(groupUin uint32, elements []message2.IMessageElement) []message2.IMessageElement { |
| 197 | for _, element := range elements { |
no test coverage detected