]> kaliko git repositories - sid.git/blobdiff - sid/sid.py
Handles disconnections
[sid.git] / sid / sid.py
index d412ac4ad65d362b0427cdafb35a2f6485e8e7bd..a3ca555e891602c839ababae1097635676a08e75 100644 (file)
@@ -90,6 +90,9 @@ class MUCBot(slixmpp.ClientXMPP):
         self.add_event_handler('message', self.message)
         self.add_event_handler('got_online', self._view)
 
+        # Handles disconnection
+        self.add_event_handler('disconnected', self.disconn)
+
         # Discover bot internal command (ie. help)
         for name, value in inspect.getmembers(self):
             if inspect.ismethod(value) and \
@@ -110,6 +113,12 @@ class MUCBot(slixmpp.ClientXMPP):
         self.log.setLevel(log_level)
         self.log.debug('set logger, log level : %s', log_level)
 
+    def disconn(self, event):
+        """disconnected handler"""
+        msg = ": %s" % event if event else "‽"
+        self.log.info('Disconnected from server%s', msg)
+        self.connect()
+
     def message(self, msg):
         """Messages handler
 
@@ -123,9 +132,11 @@ class MUCBot(slixmpp.ClientXMPP):
         body = msg['body'].strip()
         if not body.startswith(MUCBot.prefix):
             return
-        if msg['from'] not in self.__seen:
-            self.log.warning('Will not handle message from unseen jid: %s', msg['from'])
-            #return
+        self.log.debug(msg['from'])
+        if msg['from'] not in self.__seen and msg['type'] == 'chat':
+            self.log.warning('Will not handle direct message'
+                             'from unseen jid: %s', msg['from'])
+            return
         args = body[1:].split()
         cmd = args.pop(0)
         if cmd not in self.commands: