+ if numeric in dispatch:
+ dispatch[numeric](pieces)
+
+ def _gotconnected(self, pieces):
+ if not self.conn.registered():
+ self.conn.register()
+ def _gotping(self, pieces):
+ self.conn.send("PONG %s" % (pieces[1]))
+ self._checknick()
+ def _goterror(self, pieces):
+ # TODO: better handling, just reconnect that single bot
+ error = ' '.join(pieces)
+ try:
+ raise Exception(error)
+ except Exception as e:
+ self.parent.mustquit = e
+ try:
+ self.quit("Error detected: %s" % (error))
+ except: pass
+ try:
+ curs = self.parent.query("UPDATE bots SET connected = 0")
+ curs.close()
+ except: pass
+ self.log('!', 'Bot exiting due to: %s' % (error))
+ def _got001(self, pieces):
+ # We wait until the end of MOTD instead to consider ourselves registered, but consider uptime as of 001
+ self.connecttime = time.time()
+ def _got004(self, pieces):
+ self.servername = pieces[3]
+ def _gotRegistered(self, pieces):
+ self.conn.registered(True)
+
+ curs = self.parent.query("UPDATE bots SET connected = 1 WHERE nick = %s", (self.permnick,))
+ if curs: curs.close()
+
+ self.conn.send("MODE %s +x" % (pieces[2]))
+ if self.authname is not None and self.authpass is not None:
+ self.conn.send(self.parent.cfg.get('erebus', 'auth_command', "AUTH %s %s") % (self.authname, self.authpass))
+ if not self.parent.cfg.getboolean('erebus', 'wait_for_hidden_host'):