def __init__(self, jid, password, room, nick, mq): self.nick = nick self.room = room self.jid = JID(jid) bot = ClientXMPP(jid, password) # disable ipv6 for now since we're getting errors using it bot.use_ipv6 = False bot.add_event_handler('session_start', self.on_start) bot.add_event_handler('message', self.on_message) bot.register_plugin('xep_0045') self._muc = bot.plugin['xep_0045'] bot.register_plugin('xep_0199') bot.plugin['xep_0199'].enable_keepalive(30, 30) resource = 'sweetiewatch' + self.randomstr() self.mq = mq if not bot.connect(): raise 'could not connect' bot.process() self._bot = bot
def connect(self): """Perform a connection to the server. This function is designed to work internally, but calls to connect handlers when connection is sucessful. """ if self.client: return self.client self.client = ClientXMPP(self.jid, self.password) # Install event handlers self.client.add_event_handler("groupchat_message", self.handle_muc_message) self.client.add_event_handler("session_start", self.handle_session_start) self.client.add_event_handler("message", self.handle_message) self.client.add_event_handler("changed_status", self.handle_changed_status) if self.ignore_ssl_cert: self.client.add_event_handler("ssl_invalid_cert", self.handle_invalid_cert) # Add plug-ins self.client.register_plugin("xep_0030") # Service Discovery self.client.register_plugin("xep_0004") # Data Forms self.client.register_plugin("xep_0060") # PubSub self.client.register_plugin("xep_0199") # XMPP Ping self.client.register_plugin("xep_0045") # Multi-User Chat if self.client.connect(self.server or ()): if self.use_tls: self.log.info("starting TLS...") self.client.start_tls() self.log.info("connected to %s, port %d" % self.server) else: raise WhistlerConnectionError("Unable to connect to %s:%d" % self.server) self.run_handler(EVENT_CONNECT) return self.client