def roster(self): roster = {} for nick, user in self._room.roster.items(): if hasattr(user, 'entity') and user.entity is not None: ujid = user.entity uid = user.entity.user else: ujid = user.jid uid = user.jid.resource u = db.getUser(JUser(ujid, uid, user.nick, self._interface)) roster[user.nick] = u return roster
def receivedPrivateChat(self, msg): '''Triggered when someone messages the bot directly.''' if not msg.hasAttribute('from') or msg.body is None: return user_jid = jid.internJID(msg.getAttribute('from', '')) nick = user_jid.userhost().split('@', 1)[0] user = db.getUser(JUser(user_jid, user_jid.user, nick, self)) FritBot.bot.receivedPrivateChat(user, unicode(msg.body))
def userUpdatedStatus(self, room, user, show, status): '''Called when a user changes their nickname''' if hasattr(user, 'entity') and user.entity is not None: ujid = user.entity uid = user.entity.user else: ujid = user.jid uid = user.jid.resource u = db.getUser(JUser(ujid, uid, user.nick, self)) if hasattr(room, 'info'): r = room.info else: r = db.getRoom(JRoom(room, self)) u.doNickUpdate(r, user.nick)
def receivedGroupChat(self, room, user, message): '''Triggered when a group chat is recieved in a room the bot is in''' #Validate that the user exists (catches some edge cases) if user is None: return if hasattr(user, 'entity') and user.entity is not None: ujid = user.entity uid = user.entity.user else: ujid = user.jid uid = user.jid.resource u = db.getUser(JUser(ujid, uid, user.nick, self)) u.doNickUpdate(room.info, user.nick) #If we think this is from the bot itself, log it. If it's from someone else, try and handle it. if ujid.resource == cfg.connect.jabber.resource or ujid.resource == room.nick: FritBot.bot.addHistory(room.info, u, user.nick, message.body, echo = True) else: FritBot.bot.receivedGroupChat(room.info, u, message.body, nick=user.nick)