# HG changeset patch # User Goffi # Date 1350819388 -7200 # Node ID 3446ce33247d4016fee862b1fe4f2ba4a720563a # Parent 3f8c2a0f20e569cff663b5e70abc31551f06c130 plugin XEP-0045: added isNickInRoom method diff -r 3f8c2a0f20e5 -r 3446ce33247d src/plugins/plugin_xep_0045.py --- a/src/plugins/plugin_xep_0045.py Sun Oct 21 13:23:21 2012 +0200 +++ b/src/plugins/plugin_xep_0045.py Sun Oct 21 13:36:28 2012 +0200 @@ -126,6 +126,15 @@ if not self.__check_profile(profile) or not self.clients[profile].joined_rooms.has_key(room_jid_s): return '' return self.clients[profile].joined_rooms[room_jid_s].nick + + def isNickInRoom(self, room_jid, nick, profile): + """Tell if a nick is currently present in a room""" + profile = self.host.memory.getProfileName(profile_key) + if not self.__check_profile(profile): + raise exceptions.UnknownProfileError("Unknown or disconnected profile") + if not self.clients[profile].joined_rooms.has_key(room_jid.userhost()): + raise UnknownRoom("This room has not been joined") + return self.clients[profile].joined_rooms[room_jid.userhost()].inRoster(nick) def getRoomsSubjects(self, profile_key='@DEFAULT@'): """Return received subjects of rooms""" @@ -209,7 +218,6 @@ def getHandler(self, profile): self.clients[profile] = SatMUCClient(self) return self.clients[profile] - class SatMUCClient (muc.MUCClient): @@ -219,7 +227,7 @@ self.plugin_parent = plugin_parent self.host = plugin_parent.host muc.MUCClient.__init__(self) - self.joined_rooms = {} + self.joined_rooms = {} #FIXME: seem to do the same thing as MUCClient's _rooms attribute, must be removed self.rec_subjects = {} self.__changing_nicks = set() # used to keep trace of who is changing nick, # and to discard userJoinedRoom signal in this case @@ -283,7 +291,7 @@ def userUpdatedStatus(self, room, user, show, status): print("FIXME: MUC status not managed yet") - #FIXME: gof + #FIXME: def receivedSubject(self, room, user, subject): debug (_("New subject for room (%(room_id)s): %(subject)s") % {'room_id':room.roomJID.full(),'subject':subject})