mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 11:07:40 +08:00
update.
This commit is contained in:
parent
bb7099dbd7
commit
1561cf25a4
@ -18,7 +18,7 @@ qq-android协议的golang实现 移植于Mirai
|
|||||||
- [x] At
|
- [x] At
|
||||||
- [x] 回复
|
- [x] 回复
|
||||||
- [ ] 长消息
|
- [ ] 长消息
|
||||||
- [x] 合并转发
|
- [x] 合并转发(有待测试)
|
||||||
|
|
||||||
#### 事件
|
#### 事件
|
||||||
- [x] 好友消息
|
- [x] 好友消息
|
||||||
|
@ -32,10 +32,19 @@ func GZipCompress(data []byte) []byte {
|
|||||||
buf := new(bytes.Buffer)
|
buf := new(bytes.Buffer)
|
||||||
w := gzip.NewWriter(buf)
|
w := gzip.NewWriter(buf)
|
||||||
_, _ = w.Write(data)
|
_, _ = w.Write(data)
|
||||||
w.Close()
|
_ = w.Close()
|
||||||
return buf.Bytes()
|
return buf.Bytes()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GZipUncompress(src []byte) []byte {
|
||||||
|
b := bytes.NewReader(src)
|
||||||
|
var out bytes.Buffer
|
||||||
|
r, _ := gzip.NewReader(b)
|
||||||
|
defer r.Close()
|
||||||
|
_, _ = io.Copy(&out, r)
|
||||||
|
return out.Bytes()
|
||||||
|
}
|
||||||
|
|
||||||
func CalculateImageResourceId(md5 []byte) string {
|
func CalculateImageResourceId(md5 []byte) string {
|
||||||
return strings.ToUpper(fmt.Sprintf(
|
return strings.ToUpper(fmt.Sprintf(
|
||||||
"{%s}.png", GenUUID(md5),
|
"{%s}.png", GenUUID(md5),
|
||||||
|
@ -257,16 +257,15 @@ func (c *QQClient) SendPrivateMessage(target int64, m *message.SendingMessage) *
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Need fix
|
// 目前似乎iOS端无法正常打开转发消息,经测试数据上传正常,应该是解析问题。iOS目前没有越狱设备抓不到日志,有空再测试。
|
||||||
func (c *QQClient) SendForwardMessage(groupCode int64, m *message.ForwardMessage) *message.GroupMessage {
|
func (c *QQClient) SendForwardMessage(groupCode int64, m *message.ForwardMessage) *message.GroupMessage {
|
||||||
if len(m.Nodes) >= 200 {
|
if len(m.Nodes) >= 200 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
group := c.FindGroup(groupCode)
|
|
||||||
ts := time.Now().Unix()
|
ts := time.Now().Unix()
|
||||||
seq := c.nextGroupSeq()
|
seq := c.nextGroupSeq()
|
||||||
data, hash := m.CalculateValidationData(seq, rand.Int31(), groupCode)
|
data, hash := m.CalculateValidationData(seq, rand.Int31(), groupCode)
|
||||||
i, err := c.sendAndWait(c.buildMultiApplyUpPacket(data, hash, group.Uin))
|
i, err := c.sendAndWait(c.buildMultiApplyUpPacket(data, hash, utils.ToGroupUin(groupCode)))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -278,7 +277,7 @@ func (c *QQClient) SendForwardMessage(groupCode int64, m *message.ForwardMessage
|
|||||||
MsgUpReq: []*longmsg.LongMsgUpReq{
|
MsgUpReq: []*longmsg.LongMsgUpReq{
|
||||||
{
|
{
|
||||||
MsgType: 3,
|
MsgType: 3,
|
||||||
DstUin: group.Uin,
|
DstUin: utils.ToGroupUin(groupCode),
|
||||||
MsgContent: data,
|
MsgContent: data,
|
||||||
StoreType: 2,
|
StoreType: 2,
|
||||||
MsgUkey: rsp.MsgUkey,
|
MsgUkey: rsp.MsgUkey,
|
||||||
@ -674,7 +673,7 @@ func (c *QQClient) loop() {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
c.Conn.Close()
|
_ = c.Conn.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *QQClient) heartbeat() {
|
func (c *QQClient) heartbeat() {
|
||||||
|
@ -352,13 +352,15 @@ func (forMsg *ForwardMessage) CalculateValidationData(seq, random int32, groupCo
|
|||||||
FromUin: node.SenderId,
|
FromUin: node.SenderId,
|
||||||
MsgSeq: seq,
|
MsgSeq: seq,
|
||||||
MsgTime: node.Time,
|
MsgTime: node.Time,
|
||||||
MsgUid: 0x01000000000000000 | int64(random),
|
MsgUid: 0x01000000000000000 | (int64(random) & 0xFFFF_FFFF),
|
||||||
MutiltransHead: &msg.MutilTransHead{
|
MutiltransHead: &msg.MutilTransHead{
|
||||||
MsgId: 1,
|
MsgId: 1,
|
||||||
},
|
},
|
||||||
MsgType: 82,
|
MsgType: 82,
|
||||||
GroupInfo: &msg.GroupInfo{
|
GroupInfo: &msg.GroupInfo{
|
||||||
GroupCode: groupCode,
|
GroupCode: groupCode,
|
||||||
|
GroupRank: []byte{},
|
||||||
|
GroupName: []byte{},
|
||||||
GroupCard: node.SenderName,
|
GroupCard: node.SenderName,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user