From 8d6d66333bc436ec2b5c522b8d20d70d9157c01a Mon Sep 17 00:00:00 2001 From: "Brian S. Stephan" Date: Wed, 19 Dec 2012 21:06:53 -0600 Subject: [PATCH] Module: don't pass DrBotServerConnection to init another "this is unnecessary" change, obviously impacting all the modules that override __init__ as well as the base class. again, they can use the DrBotIRC instance for anything, which is (with one exception) only for add/remove_global_handler, which i'm planning on working my way off of anyway --- DrBotIRC.py | 2 +- Module.py | 18 ++++++------- modules/Achievements.py | 60 ++++++++++++++++++++--------------------- modules/Acro.py | 4 +-- modules/Dice.py | 4 +-- modules/EightBall.py | 4 +-- modules/Facts.py | 4 +-- modules/Help.py | 4 +-- modules/IrcAdmin.py | 12 ++++----- modules/Karma.py | 4 +-- modules/Markov.py | 20 +++++++------- modules/Radio.py | 4 +-- modules/Storycraft.py | 4 +-- modules/Twitter.py | 4 +-- modules/Weather.py | 4 +-- 15 files changed, 75 insertions(+), 77 deletions(-) diff --git a/DrBotIRC.py b/DrBotIRC.py index a5078f2..bcad038 100644 --- a/DrBotIRC.py +++ b/DrBotIRC.py @@ -610,7 +610,7 @@ class DrBotIRC(irclib.IRC): modstr = 'modules.'+modname __import__(modstr) module = sys.modules[modstr] - botmod = eval('module.' + modname + '(self, self.config, self.server)') + botmod = eval('module.' + modname + '(self, self.config)') self.modlist.append(botmod) botmod.register_handlers() diff --git a/Module.py b/Module.py index 62d0c6f..988eae6 100644 --- a/Module.py +++ b/Module.py @@ -32,7 +32,7 @@ class Module(object): def priority(self): return 50 - def __init__(self, irc, config, server): + def __init__(self, irc, config): """Construct a feature module. Inheritors can do special things here, but should be sure to call @@ -41,13 +41,11 @@ class Module(object): Args: irc DrBotIRC object for the running bot config ConfigParser object, the entire config file - server DrBotServerConnection object """ self.irc = irc self.config = config - self.server = server # reload logging config every time logging.config.fileConfig('logging.cfg') @@ -66,7 +64,7 @@ class Module(object): This is called when the module is loaded. Classes with special stuff to do could implement this and set up the appropriate handlers, e.g.: - self.server.add_global_handler('welcome', self.on_connect) + self.irc.server.add_global_handler('welcome', self.on_connect) By default, a module attaches to pubmsg/privmsg, which sets up some common variables and then calls do(). You are free to implement do() @@ -74,9 +72,9 @@ class Module(object): """ - self.server.add_global_handler('pubmsg', self.on_pub_or_privmsg, + self.irc.server.add_global_handler('pubmsg', self.on_pub_or_privmsg, self.priority()) - self.server.add_global_handler('privmsg', self.on_pub_or_privmsg, + self.irc.server.add_global_handler('privmsg', self.on_pub_or_privmsg, self.priority()) def unregister_handlers(self): @@ -87,12 +85,12 @@ class Module(object): been added via register_handlers). Classes inheriting from Module could reimplement this, e.g.: - self.server.remove_global_handler('welcome', self.on_connect) + self.irc.server.remove_global_handler('welcome', self.on_connect) """ - self.server.remove_global_handler('pubmsg', self.on_pub_or_privmsg) - self.server.remove_global_handler('privmsg', self.on_pub_or_privmsg) + self.irc.server.remove_global_handler('pubmsg', self.on_pub_or_privmsg) + self.irc.server.remove_global_handler('privmsg', self.on_pub_or_privmsg) def on_pub_or_privmsg(self, connection, event): """Do a default thing on a pubmsg or privmsg. @@ -187,7 +185,7 @@ class Module(object): """ - self.server._handle_event(event) + self.irc.server._handle_event(event) def get_db(self): """Get a database connection to mdb. diff --git a/modules/Achievements.py b/modules/Achievements.py index 7a94dc6..a37ed2b 100644 --- a/modules/Achievements.py +++ b/modules/Achievements.py @@ -45,7 +45,7 @@ class Achievements(Module): pass - def __init__(self, irc, config, server): + def __init__(self, irc, config): """Set up trigger regexes.""" # TODO @@ -59,7 +59,7 @@ class Achievements(Module): self.infore = re.compile(infopattern) self.rankre = re.compile(rankpattern) - Module.__init__(self, irc, config, server) + Module.__init__(self, irc, config) self.connection = None self.next_achievements_scan = 0 @@ -145,38 +145,38 @@ class Achievements(Module): def register_handlers(self): """Handle all sorts of things to track.""" - self.server.add_global_handler('pubmsg', self.track_irc_event) - self.server.add_global_handler('pubnotice', self.track_irc_event) - self.server.add_global_handler('privmsg', self.track_irc_event) - self.server.add_global_handler('privnotice', self.track_irc_event) - self.server.add_global_handler('join', self.track_irc_event) - self.server.add_global_handler('kick', self.track_irc_event) - self.server.add_global_handler('mode', self.track_irc_event) - self.server.add_global_handler('part', self.track_irc_event) - self.server.add_global_handler('quit', self.track_irc_event) - self.server.add_global_handler('invite', self.track_irc_event) - self.server.add_global_handler('action', self.track_irc_event) - self.server.add_global_handler('topic', self.track_irc_event) + self.irc.server.add_global_handler('pubmsg', self.track_irc_event) + self.irc.server.add_global_handler('pubnotice', self.track_irc_event) + self.irc.server.add_global_handler('privmsg', self.track_irc_event) + self.irc.server.add_global_handler('privnotice', self.track_irc_event) + self.irc.server.add_global_handler('join', self.track_irc_event) + self.irc.server.add_global_handler('kick', self.track_irc_event) + self.irc.server.add_global_handler('mode', self.track_irc_event) + self.irc.server.add_global_handler('part', self.track_irc_event) + self.irc.server.add_global_handler('quit', self.track_irc_event) + self.irc.server.add_global_handler('invite', self.track_irc_event) + self.irc.server.add_global_handler('action', self.track_irc_event) + self.irc.server.add_global_handler('topic', self.track_irc_event) - self.server.add_global_handler('pubmsg', self.on_pub_or_privmsg) - self.server.add_global_handler('privmsg', self.on_pub_or_privmsg) + self.irc.server.add_global_handler('pubmsg', self.on_pub_or_privmsg) + self.irc.server.add_global_handler('privmsg', self.on_pub_or_privmsg) def unregister_handlers(self): - self.server.remove_global_handler('pubmsg', self.track_irc_event) - self.server.remove_global_handler('pubnotice', self.track_irc_event) - self.server.remove_global_handler('privmsg', self.track_irc_event) - self.server.remove_global_handler('privnotice', self.track_irc_event) - self.server.remove_global_handler('join', self.track_irc_event) - self.server.remove_global_handler('kick', self.track_irc_event) - self.server.remove_global_handler('mode', self.track_irc_event) - self.server.remove_global_handler('part', self.track_irc_event) - self.server.remove_global_handler('quit', self.track_irc_event) - self.server.remove_global_handler('invite', self.track_irc_event) - self.server.remove_global_handler('action', self.track_irc_event) - self.server.remove_global_handler('topic', self.track_irc_event) + self.irc.server.remove_global_handler('pubmsg', self.track_irc_event) + self.irc.server.remove_global_handler('pubnotice', self.track_irc_event) + self.irc.server.remove_global_handler('privmsg', self.track_irc_event) + self.irc.server.remove_global_handler('privnotice', self.track_irc_event) + self.irc.server.remove_global_handler('join', self.track_irc_event) + self.irc.server.remove_global_handler('kick', self.track_irc_event) + self.irc.server.remove_global_handler('mode', self.track_irc_event) + self.irc.server.remove_global_handler('part', self.track_irc_event) + self.irc.server.remove_global_handler('quit', self.track_irc_event) + self.irc.server.remove_global_handler('invite', self.track_irc_event) + self.irc.server.remove_global_handler('action', self.track_irc_event) + self.irc.server.remove_global_handler('topic', self.track_irc_event) - self.server.remove_global_handler('pubmsg', self.on_pub_or_privmsg) - self.server.remove_global_handler('privmsg', self.on_pub_or_privmsg) + self.irc.server.remove_global_handler('pubmsg', self.on_pub_or_privmsg) + self.irc.server.remove_global_handler('privmsg', self.on_pub_or_privmsg) def track_irc_event(self, connection, event): """Put events in the database.""" diff --git a/modules/Acro.py b/modules/Acro.py index 64c9f0d..09f0545 100644 --- a/modules/Acro.py +++ b/modules/Acro.py @@ -65,7 +65,7 @@ class Acro(Module): acronyms. """ - def __init__(self, irc, config, server): + def __init__(self, irc, config): """Set up the game tracking and such.""" # build regexes @@ -85,7 +85,7 @@ class Acro(Module): # game state self.game = self.AcroGame() - Module.__init__(self, irc, config, server) + Module.__init__(self, irc, config) def do(self, connection, event, nick, userhost, what, admin_unlocked): """Handle commands and inputs.""" diff --git a/modules/Dice.py b/modules/Dice.py index 373756c..63e1de2 100644 --- a/modules/Dice.py +++ b/modules/Dice.py @@ -32,10 +32,10 @@ class Dice(Module): tokens = ['NUMBER', 'TEXT', 'ROLLSEP'] literals = ['#', '/', '+', '-', 'd'] - def __init__(self, irc, config, server): + def __init__(self, irc, config): """Set up XML-RPC methods.""" - Module.__init__(self, irc, config, server) + Module.__init__(self, irc, config) irc.xmlrpc_register_function(self.do_roll, "dice_roll") diff --git a/modules/EightBall.py b/modules/EightBall.py index 94a6920..147864e 100644 --- a/modules/EightBall.py +++ b/modules/EightBall.py @@ -25,10 +25,10 @@ class EightBall(Module): """Return a random answer when asked a question.""" - def __init__(self, irc, config, server): + def __init__(self, irc, config): """Initialize the list of self.responses.""" - Module.__init__(self, irc, config, server) + Module.__init__(self, irc, config) self.responses = [] diff --git a/modules/Facts.py b/modules/Facts.py index ee7e168..63c9687 100644 --- a/modules/Facts.py +++ b/modules/Facts.py @@ -30,10 +30,10 @@ class Facts(Module): Facts are categorized by a name, which may allow for random selection and so on. """ - def __init__(self, irc, config, server): + def __init__(self, irc, config): """Set up XML-RPC methods.""" - Module.__init__(self, irc, config, server) + Module.__init__(self, irc, config) irc.xmlrpc_register_function(self._get_fact, "facts_get") diff --git a/modules/Help.py b/modules/Help.py index e5e8efd..6971473 100644 --- a/modules/Help.py +++ b/modules/Help.py @@ -25,12 +25,12 @@ __date__ = "2011-01-08" class Help(Module): - def __init__(self, irc, config, server): + def __init__(self, irc, config): """ Upon creation, determine the save file location """ - Module.__init__(self, irc, config, server) + Module.__init__(self, irc, config) self.helpre = re.compile('^!help(\s+(\S+)(\s+(.+))?)?\s*$') diff --git a/modules/IrcAdmin.py b/modules/IrcAdmin.py index aec0207..6c5637c 100644 --- a/modules/IrcAdmin.py +++ b/modules/IrcAdmin.py @@ -27,14 +27,14 @@ class IrcAdmin(Module): """Support miscellaneous IRC stuff --- joining channels, changing the nick, etc.""" def register_handlers(self): - self.server.add_global_handler('pubmsg', self.on_pub_or_privmsg, self.priority()) - self.server.add_global_handler('privmsg', self.on_pub_or_privmsg, self.priority()) - self.server.add_global_handler('welcome', self.on_connect, self.priority()) + self.irc.server.add_global_handler('pubmsg', self.on_pub_or_privmsg, self.priority()) + self.irc.server.add_global_handler('privmsg', self.on_pub_or_privmsg, self.priority()) + self.irc.server.add_global_handler('welcome', self.on_connect, self.priority()) def unregister_handlers(self): - self.server.remove_global_handler('pubmsg', self.on_pub_or_privmsg) - self.server.remove_global_handler('privmsg', self.on_pub_or_privmsg) - self.server.remove_global_handler('welcome', self.on_connect) + self.irc.server.remove_global_handler('pubmsg', self.on_pub_or_privmsg) + self.irc.server.remove_global_handler('privmsg', self.on_pub_or_privmsg) + self.irc.server.remove_global_handler('welcome', self.on_connect) def on_connect(self, connection, event): """Set up handlers when the bot has connected to IRC.""" diff --git a/modules/Karma.py b/modules/Karma.py index d11b02d..faa9dda 100644 --- a/modules/Karma.py +++ b/modules/Karma.py @@ -28,12 +28,12 @@ __date__ = "$Oct 23, 2010 11:12:33 AM$" class Karma(Module): - def __init__(self, irc, config, server): + def __init__(self, irc, config): """ Upon creation, determine the save file location """ - Module.__init__(self, irc, config, server) + Module.__init__(self, irc, config) pattern = "(?:\((.+?)\)|(\S+))" karmapattern = pattern + '(\+\+|--|\+-|-\+)' + '(\s+|$)' diff --git a/modules/Markov.py b/modules/Markov.py index 2ad9426..811e603 100644 --- a/modules/Markov.py +++ b/modules/Markov.py @@ -41,7 +41,7 @@ class Markov(Module): http://code.activestate.com/recipes/194364-the-markov-chain-algorithm/ """ - def __init__(self, irc, config, server): + def __init__(self, irc, config): """Create the Markov chainer, and learn text from a file if available.""" # set up some keywords for use in the chains --- don't change these @@ -60,7 +60,7 @@ class Markov(Module): self.shut_up = False self.lines_seen = [] - Module.__init__(self, irc, config, server) + Module.__init__(self, irc, config) self.next_shut_up_check = 0 self.next_chatter_check = 0 @@ -129,16 +129,16 @@ class Markov(Module): def register_handlers(self): """Handle pubmsg/privmsg, to learn and/or reply to IRC events.""" - self.server.add_global_handler('pubmsg', self.on_pub_or_privmsg, self.priority()) - self.server.add_global_handler('privmsg', self.on_pub_or_privmsg, self.priority()) - self.server.add_global_handler('pubmsg', self.learn_from_irc_event) - self.server.add_global_handler('privmsg', self.learn_from_irc_event) + self.irc.server.add_global_handler('pubmsg', self.on_pub_or_privmsg, self.priority()) + self.irc.server.add_global_handler('privmsg', self.on_pub_or_privmsg, self.priority()) + self.irc.server.add_global_handler('pubmsg', self.learn_from_irc_event) + self.irc.server.add_global_handler('privmsg', self.learn_from_irc_event) def unregister_handlers(self): - self.server.remove_global_handler('pubmsg', self.on_pub_or_privmsg) - self.server.remove_global_handler('privmsg', self.on_pub_or_privmsg) - self.server.remove_global_handler('pubmsg', self.learn_from_irc_event) - self.server.remove_global_handler('privmsg', self.learn_from_irc_event) + self.irc.server.remove_global_handler('pubmsg', self.on_pub_or_privmsg) + self.irc.server.remove_global_handler('privmsg', self.on_pub_or_privmsg) + self.irc.server.remove_global_handler('pubmsg', self.learn_from_irc_event) + self.irc.server.remove_global_handler('privmsg', self.learn_from_irc_event) def learn_from_irc_event(self, connection, event): """Learn from IRC events.""" diff --git a/modules/Radio.py b/modules/Radio.py index 805e70b..535a3f5 100644 --- a/modules/Radio.py +++ b/modules/Radio.py @@ -46,7 +46,7 @@ class Radio(Module): connection is necessary or not. """ - def __init__(self, irc, config, server): + def __init__(self, irc, config): """Set up the usual IRC regex-type stuff.""" # set up regexes, for replying to specific stuff @@ -67,7 +67,7 @@ class Radio(Module): except (NoSectionError, NoOptionError): pass - Module.__init__(self, irc, config, server) + Module.__init__(self, irc, config) def do(self, connection, event, nick, userhost, what, admin_unlocked): """Handle commands and inputs from IRC events.""" diff --git a/modules/Storycraft.py b/modules/Storycraft.py index 31cd2ce..f8e2ce0 100644 --- a/modules/Storycraft.py +++ b/modules/Storycraft.py @@ -69,10 +69,10 @@ class Storycraft(Module): pass - def __init__(self, irc, config, server): + def __init__(self, irc, config): """Set up trigger regexes.""" - Module.__init__(self, irc, config, server) + Module.__init__(self, irc, config) rootcommand = '^!storycraft' statuspattern = rootcommand + '\s+status$' diff --git a/modules/Twitter.py b/modules/Twitter.py index 56ef617..e6788a9 100644 --- a/modules/Twitter.py +++ b/modules/Twitter.py @@ -32,10 +32,10 @@ class Twitter(Module): """Access Twitter via the bot as an authenticated client.""" - def __init__(self, irc, config, server): + def __init__(self, irc, config): """Prepare for oauth stuff (but don't execute it yet).""" - Module.__init__(self, irc, config, server) + Module.__init__(self, irc, config) # setup regexes getstatuspattern = "^!twitter\s+getstatus(\s+nosource)?(\s+noid)?\s+(\S+)$" diff --git a/modules/Weather.py b/modules/Weather.py index 61d80d5..1022af6 100644 --- a/modules/Weather.py +++ b/modules/Weather.py @@ -27,10 +27,10 @@ from Module import Module class Weather(Module): """Provide weather lookup services to the bot.""" - def __init__(self, irc, config, server): + def __init__(self, irc, config): """Set up regexes and wunderground API.""" - Module.__init__(self, irc, config, server) + Module.__init__(self, irc, config) self.weatherre = re.compile("^!weather\s+(.*)$")