def _updateGroups(self, response, _): self.logger.debug('Received groups list %s' % response) groups = response.getGroups() for group in groups: room = group.getId() # ensure self.groups[room] exists if room not in self.groups: owner = group.getOwner().split('@')[0] subjectOwner = group.getSubjectOwner().split('@')[0] subject = utils.softToUni(group.getSubject()) self.groups[room] = Group(room, owner, subject, subjectOwner, self.backend, self.user) # add/update room participants self.groups[room].addParticipants(group.getParticipants().keys(), self.buddies, self.legacyName) self.gotGroupList = True # join rooms while self.joinRoomQueue: self.joinRoom(*self.joinRoomQueue.pop(0)) # deliver queued offline messages for room in self.groupOfflineQueue: while self.groupOfflineQueue[room]: msg = self.groupOfflineQueue[room].pop(0) self.backend.handleMessage(self.user, room, msg[1], msg[0], "", msg[2]) self.logger.debug("Send queued group message to: %s %s %s" % (msg[0], msg[1], msg[2])) # pass update to backend self.updateRoomList()
def _updateGroups(self, response, request): self.logger.debug('Received groups list %s', response) groups = response.getGroups() for group in groups: room = group.getId() owner = group.getOwner().split('@')[0] subjectOwner = group.getSubjectOwner().split('@')[0] subject = utils.softToUni(group.getSubject()) if room in self.groups: oroom = self.groups[room] oroom.owner = owner oroom.subjectOwner = subjectOwner oroom.subject = subject else: self.groups[room] = Group(room, owner, subject, subjectOwner, self.backend, self.user) # self.joinRoom(self._shortenGroupId(room), self.user.split("@")[0]) self.groups[room].addParticipants(group.getParticipants().keys(), self.buddies, self.legacyName) #self._addParticipantsToRoom(room, group.getParticipants()) if room in self.groupOfflineQueue: while self.groupOfflineQueue[room]: msg = self.groupOfflineQueue[room].pop(0) self.backend.handleMessage(self.user, room, msg[1], msg[0], "", msg[2]) self.logger.debug("Send queued group message to: %s %s %s", msg[0], msg[1], msg[2]) self.gotGroupList = True for room, nick in self.joinRoomQueue: self.joinRoom(room, nick) self.joinRoomQueue = [] self.updateRoomList()
def onGroupMessageReceived(self, messageId, gjid, jid, messageContent, timestamp, receiptRequested, pushName): buddy = jid.split("@")[0] room = gjid.split("@")[0] self.logger.info("Group message received in %s from %s: %s", room, buddy, messageContent) self.sendGroupMessageToXMPP(room, buddy, utils.softToUni(messageContent), timestamp) if receiptRequested: self.call("message_ack", (gjid, messageId))
def onStatus(self, contacts): self.logger.debug("%s received statuses of: %s", self.user, contacts) for number, (status, time) in contacts.iteritems(): buddy = self[number] if status is None: buddy.statusMsg = "" else: buddy.statusMsg = utils.softToUni(status) self.updateSpectrum(buddy)
def onStatus(self, contacts): self.logger.debug("%s received statuses of: %s" % (self.user, contacts)) for number, (status, time) in contacts.iteritems(): try: buddy = self[number] except KeyError: self.logger.warn("received status of buddy not in list: %s" % number) if status is None: buddy.statusMsg = "" else: buddy.statusMsg = utils.softToUni(status) self.updateSpectrum(buddy)
def onMessageReceived(self, messageId, jid, messageContent, timestamp, receiptRequested, pushName, isBroadCast): buddy = jid.split("@")[0] messageContent = utils.softToUni(messageContent) if isBroadCast: self.logger.info("Broadcast received from %s to %s: %s (at ts=%s)", buddy, self.legacyName, messageContent, timestamp) messageContent = "[Broadcast] " + messageContent else: self.logger.info("Message received from %s to %s: %s (at ts=%s)", buddy, self.legacyName, messageContent, timestamp) self.sendMessageToXMPP(buddy, messageContent, timestamp) if receiptRequested: self.call("message_ack", (jid, messageId))
def onAddedToGroup(self, group): self.logger.debug("Added to group: %s" % group) room = group.getGroupId() owner = group.getCreatorJid(full=False) subjectOwner = group.getSubjectOwnerJid(full=False) subject = utils.softToUni(group.getSubject()) self.groups[room] = Group(room, owner, subject, subjectOwner, self.backend, self.user) self.groups[room].addParticipants(group.getParticipants(), self.buddies, self.legacyName) self.bot.send( "You have been added to group: %s@%s (%s)" % (self._shortenGroupId(room), subject, self.backend.spectrum_jid))
def onTextMessage(self, _id, _from, to, notify, timestamp, participant, offline, retry, body): self.logger.debug('received TextMessage' + ' '.join( map(str, [ _id, _from, to, notify, timestamp, participant, offline, retry, body ]))) buddy = _from.split('@')[0] messageContent = utils.softToUni(body) self.sendReceipt(_id, _from, None, participant) self.logger.info("Message received from %s to %s: %s (at ts=%s)", buddy, self.legacyName, messageContent, timestamp) if participant is not None: partname = participant.split('@')[0] message = partname + ': ' + messageContent self.sendMessageToXMPP(buddy, message, timestamp) else: self.sendMessageToXMPP(buddy, messageContent, timestamp)
def onTextMessage(self, _id, _from, to, notify, timestamp, participant, offline, retry, body): buddy = _from.split('@')[0] messageContent = utils.softToUni(body) self.sendReceipt(_id, _from, None, participant) self.recvMsgIDs.append((_id, _from, participant, timestamp)) self.logger.info("Message received from %s to %s: %s (at ts=%s)" % (buddy, self.legacyName, messageContent, timestamp)) if participant is not None: # Group message or broadcast partname = participant.split('@')[0] if _from.split('@')[1] == 'broadcast': # Broadcast message message = self.broadcast_prefix + messageContent self.sendMessageToXMPP(partname, message, timestamp) else: # Group message if notify is None: notify = "" self.sendGroupMessageToXMPP(buddy, partname, messageContent, timestamp, notify) else: self.sendMessageToXMPP(buddy, messageContent, timestamp)