1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 11:07:40 +08:00

update ptt decoder & fix skey refresh panic with device lock disabled.

This commit is contained in:
Mrs4s 2021-03-02 17:09:17 +08:00
parent 4f5e890ec6
commit d34f8ddad6
2 changed files with 21 additions and 7 deletions

View File

@ -18,7 +18,7 @@ var c2cDecoders = map[int32]func(*QQClient, *msg.Message, *c2cExtraOption){
45: troopSystemMessageDecoder, 46: troopSystemMessageDecoder, 84: troopSystemMessageDecoder, 45: troopSystemMessageDecoder, 46: troopSystemMessageDecoder, 84: troopSystemMessageDecoder,
85: troopSystemMessageDecoder, 86: troopSystemMessageDecoder, 87: troopSystemMessageDecoder, 85: troopSystemMessageDecoder, 86: troopSystemMessageDecoder, 87: troopSystemMessageDecoder,
140: tempSessionDecoder, 141: tempSessionDecoder, 140: tempSessionDecoder, 141: tempSessionDecoder,
166: privateMessageDecoder, 208: privateMessageDecoder, 166: privateMessageDecoder, 208: privatePttDecoder,
187: systemMessageDecoder, 188: systemMessageDecoder, 189: systemMessageDecoder, 187: systemMessageDecoder, 188: systemMessageDecoder, 189: systemMessageDecoder,
190: systemMessageDecoder, 191: systemMessageDecoder, 190: systemMessageDecoder, 191: systemMessageDecoder,
529: msgType0x211Decoder, 529: msgType0x211Decoder,
@ -153,7 +153,7 @@ func (c *QQClient) c2cMessageSyncProcessor(rsp *msg.GetMessageResponse, opt *c2c
} }
} }
func privateMessageDecoder(c *QQClient, pMsg *msg.Message, opt *c2cExtraOption) { func privateMessageDecoder(c *QQClient, pMsg *msg.Message, _ *c2cExtraOption) {
if pMsg.Head.GetFromUin() == c.Uin { if pMsg.Head.GetFromUin() == c.Uin {
for { for {
frdSeq := atomic.LoadInt32(&c.friendSeq) frdSeq := atomic.LoadInt32(&c.friendSeq)
@ -172,7 +172,18 @@ func privateMessageDecoder(c *QQClient, pMsg *msg.Message, opt *c2cExtraOption)
c.dispatchFriendMessage(c.parsePrivateMessage(pMsg)) c.dispatchFriendMessage(c.parsePrivateMessage(pMsg))
} }
func tempSessionDecoder(c *QQClient, pMsg *msg.Message, opt *c2cExtraOption) { func privatePttDecoder(c *QQClient, pMsg *msg.Message, _ *c2cExtraOption) {
if pMsg.Body == nil || pMsg.Body.RichText == nil || pMsg.Body.RichText.Ptt == nil {
return
}
if len(pMsg.Body.RichText.Ptt.Reserve) != 0 {
//m := binary.NewReader(pMsg.Body.RichText.Ptt.Reserve[1:]).ReadTlvMap(1)
// T3 -> timestamp T8 -> voiceType T9 -> voiceLength T10 -> PbReserveStruct
}
c.dispatchFriendMessage(c.parsePrivateMessage(pMsg))
}
func tempSessionDecoder(c *QQClient, pMsg *msg.Message, _ *c2cExtraOption) {
if pMsg.Head.C2CTmpMsgHead == nil { if pMsg.Head.C2CTmpMsgHead == nil {
return return
} }
@ -186,7 +197,7 @@ func tempSessionDecoder(c *QQClient, pMsg *msg.Message, opt *c2cExtraOption) {
c.dispatchTempMessage(c.parseTempMessage(pMsg)) c.dispatchTempMessage(c.parseTempMessage(pMsg))
} }
func troopAddMemberBroadcastDecoder(c *QQClient, pMsg *msg.Message, opt *c2cExtraOption) { func troopAddMemberBroadcastDecoder(c *QQClient, pMsg *msg.Message, _ *c2cExtraOption) {
groupJoinLock.Lock() groupJoinLock.Lock()
defer groupJoinLock.Unlock() defer groupJoinLock.Unlock()
group := c.FindGroupByUin(pMsg.Head.GetFromUin()) group := c.FindGroupByUin(pMsg.Head.GetFromUin())
@ -212,7 +223,7 @@ func troopAddMemberBroadcastDecoder(c *QQClient, pMsg *msg.Message, opt *c2cExtr
} }
} }
func systemMessageDecoder(c *QQClient, pMsg *msg.Message, opt *c2cExtraOption) { func systemMessageDecoder(c *QQClient, pMsg *msg.Message, _ *c2cExtraOption) {
_, pkt := c.buildSystemMsgNewFriendPacket() _, pkt := c.buildSystemMsgNewFriendPacket()
_ = c.send(pkt) _ = c.send(pkt)
} }
@ -232,7 +243,7 @@ func troopSystemMessageDecoder(c *QQClient, pMsg *msg.Message, opt *c2cExtraOpti
} }
} }
func msgType0x211Decoder(c *QQClient, pMsg *msg.Message, opt *c2cExtraOption) { func msgType0x211Decoder(c *QQClient, pMsg *msg.Message, _ *c2cExtraOption) {
sub4 := msg.SubMsgType0X4Body{} sub4 := msg.SubMsgType0X4Body{}
if err := proto.Unmarshal(pMsg.Body.MsgContent, &sub4); err != nil { if err := proto.Unmarshal(pMsg.Body.MsgContent, &sub4); err != nil {
err = errors.Wrap(err, "unmarshal sub msg 0x4 error") err = errors.Wrap(err, "unmarshal sub msg 0x4 error")

View File

@ -304,6 +304,9 @@ func (c *QQClient) RequestSMS() bool {
} }
func (c *QQClient) init() { func (c *QQClient) init() {
if len(c.g) == 0 {
c.Warning("device lock is disable. http api may fail.")
}
c.Online = true c.Online = true
_ = c.registerClient() _ = c.registerClient()
c.groupSysMsgCache, _ = c.GetGroupSystemMessages() c.groupSysMsgCache, _ = c.GetGroupSystemMessages()
@ -629,7 +632,7 @@ func (c *QQClient) SolveFriendRequest(req *NewFriendRequest, accept bool) {
} }
func (c *QQClient) getSKey() string { func (c *QQClient) getSKey() string {
if c.sigInfo.sKeyExpiredTime < time.Now().Unix() { if c.sigInfo.sKeyExpiredTime < time.Now().Unix() && len(c.g) > 0 {
c.Debug("skey expired. refresh...") c.Debug("skey expired. refresh...")
_, _ = c.sendAndWait(c.buildRequestTgtgtNopicsigPacket()) _, _ = c.sendAndWait(c.buildRequestTgtgtNopicsigPacket())
} }