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