diff --git a/fbchat/client.py b/fbchat/client.py index e8e019a..858cbcd 100644 --- a/fbchat/client.py +++ b/fbchat/client.py @@ -2491,22 +2491,43 @@ class Client(object): buddylist = dict() for _id in m.get('buddyList', {}): payload = m['buddyList'][_id] + last_active = payload.get('lat') - active = time.time() - last_active <= 60 + active = payload.get('p') in [2, 3] in_game = int(_id) in m.get('gamers', {}) + buddylist[_id] = last_active - self._buddylist[_id] = ActiveStatus(active=active, last_active=last_active, in_game=in_game) + + if self._buddylist.get(_id): + self._buddylist[_id].last_active = last_active + self._buddylist[_id].active = active + self._buddylist[_id].in_game = in_game + else: + self._buddylist[_id] = ActiveStatus(active=active, last_active=last_active, in_game=in_game) + self.onChatTimestamp(buddylist=buddylist, msg=m) + # Buddylist overlay elif mtype == "buddylist_overlay": statuses = dict() for _id in m.get('overlay', {}): payload = m['overlay'][_id] + last_active = payload.get('la') active = payload.get('a') in [2, 3] in_game = self._buddylist[_id].in_game if self._buddylist.get(_id) else False - self._buddylist[_id] = ActiveStatus(active=active, last_active=last_active, in_game=in_game) - statuses[_id] = ActiveStatus(active=active, last_active=last_active, in_game=in_game) + + status = ActiveStatus(active=active, last_active=last_active, in_game=in_game) + + if self._buddylist.get(_id): + self._buddylist[_id].last_active = last_active + self._buddylist[_id].active = active + self._buddylist[_id].in_game = in_game + else: + self._buddylist[_id] = status + + statuses[_id] = status + self.onBuddylistOverlay(statuses=statuses, msg=m) # Unknown message type