def run(self): user = self.config['user']['jid'] password = self.config['user']['password'] # connect to server self.client = client = Client(JID(user).getDomain(), debug=[]) client.connect() if not client.auth(JID(user).getNode(), password, resource=JID(user).getResource()): raise Exception('Unable to authorize.') # register handlers client.RegisterHandler('message', self.message_callback) client.RegisterHandler('presence', self.presence_callback) # send presence client.sendInitPresence() # join room(s) for room in self.config['room']: presence = Presence(to='%s/%s' % (room['jid'], room['nick'])) presence.setTag('x', namespace=NS_MUC)\ .setTagData('password', room['password']) presence.getTag('x')\ .addChild('history', {'maxchars': '0', 'maxstanzas': '0'}) client.send(presence) self.rooms.append(room['jid']) # process incoming messages while True: client.Process(1)
def connect_to_rooms(self, connection, configuration): for room in configuration.rooms: p = Presence(to='%s@%s/%s' % (room, configuration.conference_server, self.bot.name,)) p.setTag('x', namespace=NS_MUC).setTagData('password', '') p.getTag('x').addChild('history', {'maxchars': '0', 'maxstanzas': '0'}) connection.send(p)
def send_presence(self,conn,hash1=None,nick=None): presence = Presence() if hash1 is not None: presence.setTag(name='x',namespace=self.NS_VCARD_UPDATE).setTag(name='photo',namespace=self.NS_VCARD_UPDATE).setData(hash1) if nick is not None: presence.setTag(name='nick',namespace=self.NS_NICK).setData(nick) conn.send(presence)
def join_room(extension=None): if extension: presence = Presence(to='%s/%s+%s' % (room, nick, extension)) else: presence = Presence(to='%s/%s' % (room, nick)) presence.setTag('x', namespace=NS_MUC).setTagData('password', room_password) presence.getTag('x').addChild('history',{'maxchars':'0','maxstanzas':'0'}) client.send(presence)