Update buddies status when a notification is received
This commit is contained in:
parent
7b327c2d0f
commit
16bdc85471
10
session.py
10
session.py
|
@ -447,6 +447,16 @@ class Session(YowsupApp):
|
|||
room, participants)
|
||||
self.groups[room].removeParticipants(participants)
|
||||
|
||||
# Called by superclass
|
||||
def onContactStatusChanged(self, number, status):
|
||||
self.logger.debug("%s changed their status to %s", number, status)
|
||||
try:
|
||||
buddy = self.buddies[number]
|
||||
buddy.statusMsg = status
|
||||
self.buddies.updateSpectrum(buddy)
|
||||
except KeyError:
|
||||
self.logger.debug("%s not in buddy list", number)
|
||||
|
||||
def onPresenceReceived(self, _type, name, jid, lastseen):
|
||||
self.logger.info("Presence received: %s %s %s %s", _type, name, jid, lastseen)
|
||||
buddy = jid.split("@")[0]
|
||||
|
|
|
@ -35,6 +35,7 @@ from yowsup.layers.protocol_chatstate.protocolentities import *
|
|||
from yowsup.layers.protocol_contacts.protocolentities import *
|
||||
from yowsup.layers.protocol_groups.protocolentities import *
|
||||
from yowsup.layers.protocol_media.protocolentities import *
|
||||
from yowsup.layers.protocol_notifications.protocolentities import *
|
||||
from yowsup.layers.protocol_messages.protocolentities import *
|
||||
from yowsup.layers.protocol_presence.protocolentities import *
|
||||
from yowsup.layers.protocol_profiles.protocolentities import *
|
||||
|
@ -545,6 +546,15 @@ class YowsupApp(object):
|
|||
"""
|
||||
pass
|
||||
|
||||
def onContactStatusChanged(self, number, status):
|
||||
"""Called when a contacts changes their status
|
||||
|
||||
Args
|
||||
number: (str) the number of the contact who changed their status
|
||||
status: (str) the new status
|
||||
"""
|
||||
pass
|
||||
|
||||
def sendEntity(self, entity):
|
||||
"""Sends an entity down the stack (as if YowsupAppLayer called toLower)"""
|
||||
self.stack.broadcastEvent(YowLayerEvent(YowsupAppLayer.TO_LOWER_EVENT,
|
||||
|
@ -651,6 +661,11 @@ class YowsupAppLayer(YowInterfaceLayer):
|
|||
entity.getGroupId().split('@')[0],
|
||||
entity.getParticipants().keys()
|
||||
)
|
||||
elif isinstance(entity, StatusNotificationProtocolEntity):
|
||||
self.caller.onContactStatusChanged(
|
||||
entity._from.split('@')[0],
|
||||
entity.status
|
||||
)
|
||||
|
||||
@ProtocolEntityCallback('message')
|
||||
def onMessageReceived(self, entity):
|
||||
|
|
Loading…
Reference in a new issue