diff --git a/client/client.go b/client/client.go index 59327a63..6dda80a2 100644 --- a/client/client.go +++ b/client/client.go @@ -388,12 +388,17 @@ func (c *QQClient) init(tokenLogin bool) error { d := c.waitPacket("StatSvc.ReqMSFOffline", func(i interface{}, err error) { notify <- struct{}{} }) + d2 := c.waitPacket("MessageSvc.PushForceOffline", func(i interface{}, err error) { + notify <- struct{}{} + }) select { case <-notify: d() + d2() return errors.New("token failed") case <-time.After(time.Second): d() + d2() } } c.groupSysMsgCache, _ = c.GetGroupSystemMessages() diff --git a/client/decoders.go b/client/decoders.go index 90071d7d..49893b56 100644 --- a/client/decoders.go +++ b/client/decoders.go @@ -737,8 +737,8 @@ func decodeForceOfflinePacket(c *QQClient, _ *incomingPacketInfo, payload []byte data.ReadFrom(jce.NewJceReader(request.SBuffer)) r := jce.NewJceReader(data.Map["req_PushForceOffline"]["PushNotifyPack.RequestPushForceOffline"][1:]) tips := r.ReadString(2) - c.dispatchDisconnectEvent(&ClientDisconnectedEvent{Message: tips}) c.Disconnect() + go c.dispatchDisconnectEvent(&ClientDisconnectedEvent{Message: tips}) return nil, nil }