Example #1
0
 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
Example #2
0
    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))
Example #3
0
    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)
Example #4
0
    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)