Legoktm has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/60240


Change subject: Convert logbot to use ircbot.SingleServerIRCBot for 
auto-reconnection.
......................................................................

Convert logbot to use ircbot.SingleServerIRCBot for auto-reconnection.

The logbot class now subclasses ircbot.SingleServerIRCBot, which
requires us to rename certain methods so they get called without
needing to add a handler.

I left the reconnection delay at it's default (60 seconds), that
should probably be made a configuration option in the future.

Bug: 47275
Change-Id: Id39158c68a5a2df1e601cf4a7a616ba046853ba6
---
M adminlogbot.py
1 file changed, 30 insertions(+), 19 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/debs/adminbot 
refs/changes/40/60240/1

diff --git a/adminlogbot.py b/adminlogbot.py
index a620025..17856ea 100755
--- a/adminlogbot.py
+++ b/adminlogbot.py
@@ -3,6 +3,7 @@
 import argparse
 import imp
 import irclib
+import ircbot
 import json
 import logging
 import os
@@ -15,11 +16,17 @@
 import traceback
 
 
-class logbot():
+class logbot(ircbot.SingleServerIRCBot):
     def __init__(self, name, conf):
-        self.name = name
         self.config = conf
-        self.irc = irclib.IRC()
+        ircbot.SingleServerIRCBot.__init__(self,
+                                           [self.config.network,
+                                            self.config.port,
+                                            ],
+                                           self.config.nick,
+                                           self.config.nick,
+                                           )
+        self.name = name
 
     def on_connect(self, con, event):
         try:
@@ -42,7 +49,8 @@
             except irclib.ServerNotConnectedError, e:
                 logging.debug("Error ghosting user")
 
-    def on_quit(self, con, event):
+    def _on_quit(self, con, event):
+        ircbot.SingleServerIRCBot._on_quit(self, con, event)
         source = irclib.nm_to_n(event.source())
         if source == self.config.nick:
             con.nick(self.config.nick)
@@ -107,7 +115,19 @@
         else:
             return True
 
-    def on_msg(self, con, event):
+    def _on_part(self, con, event):
+        ircbot.SingleServerIRCBot._on_part(self, con, event)
+        self._on_quit(con, event)
+
+    def _on_kick(self, con, event):
+        ircbot.SingleServerIRCBot._on_kick(self, con, event)
+        self._on_quit(con, event)
+
+    def _on_disconnect(self, con, event):
+        ircbot.SingleServerIRCBot._on_disconnect(self, con, event)
+        self._on_quit(con, event)
+
+    def on_pubmsg(self, con, event):
         if event.target() not in self.config.targets:
             return
         author, rest = event.source().split('!')
@@ -284,20 +304,11 @@
                 logging.warning(sys.exc_info)
 
     def connect(self):
-        self.server = self.irc.server()
-        self.server.add_global_handler("welcome", self.on_connect)
-        self.server.add_global_handler("pubmsg", self.on_msg)
-        self.server.add_global_handler("nicknameinuse", self.switch_nick)
-        self.server.add_global_handler("nickcollision", self.switch_nick)
-        self.server.add_global_handler("unavailresource", self.switch_nick)
-        self.server.add_global_handler("part", self.on_quit)
-        self.server.add_global_handler("kick", self.on_quit)
-        self.server.add_global_handler("disconnect", self.on_quit)
-        self.server.add_global_handler("quit", self.on_quit)
+        self.connection.add_global_handler("welcome", self.on_connect)
+        self.connection.add_global_handler("nicknameinuse", self.switch_nick)
+        self.connection.add_global_handler("nickcollision", self.switch_nick)
+        self.connection.add_global_handler("unavailresource", self.switch_nick)
 
-        self.server.connect(self.config.network,
-                            self.config.port,
-                            self.config.nick)
 
 
 parser = argparse.ArgumentParser(description='IRC log bot.',
@@ -370,7 +381,7 @@
     time.sleep(.1)
     for bot in bots:
         try:
-            bot.irc.process_once()
+            bot.ircobj.process_once()
         except:
             traceback.print_exc()
             logging.warning(sys.exc_info)

-- 
To view, visit https://gerrit.wikimedia.org/r/60240
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id39158c68a5a2df1e601cf4a7a616ba046853ba6
Gerrit-PatchSet: 1
Gerrit-Project: operations/debs/adminbot
Gerrit-Branch: master
Gerrit-Owner: Legoktm <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to