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
This commit is contained in:
Brian S. Stephan 2012-12-19 21:06:53 -06:00
parent 3e76f75bba
commit 8d6d66333b
15 changed files with 75 additions and 77 deletions

View File

@ -610,7 +610,7 @@ class DrBotIRC(irclib.IRC):
modstr = 'modules.'+modname modstr = 'modules.'+modname
__import__(modstr) __import__(modstr)
module = sys.modules[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) self.modlist.append(botmod)
botmod.register_handlers() botmod.register_handlers()

View File

@ -32,7 +32,7 @@ class Module(object):
def priority(self): def priority(self):
return 50 return 50
def __init__(self, irc, config, server): def __init__(self, irc, config):
"""Construct a feature module. """Construct a feature module.
Inheritors can do special things here, but should be sure to call Inheritors can do special things here, but should be sure to call
@ -41,13 +41,11 @@ class Module(object):
Args: Args:
irc DrBotIRC object for the running bot irc DrBotIRC object for the running bot
config ConfigParser object, the entire config file config ConfigParser object, the entire config file
server DrBotServerConnection object
""" """
self.irc = irc self.irc = irc
self.config = config self.config = config
self.server = server
# reload logging config every time # reload logging config every time
logging.config.fileConfig('logging.cfg') logging.config.fileConfig('logging.cfg')
@ -66,7 +64,7 @@ class Module(object):
This is called when the module is loaded. Classes with special stuff 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.: 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 By default, a module attaches to pubmsg/privmsg, which sets up some
common variables and then calls do(). You are free to implement do() 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.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()) self.priority())
def unregister_handlers(self): def unregister_handlers(self):
@ -87,12 +85,12 @@ class Module(object):
been added via register_handlers). Classes inheriting from Module been added via register_handlers). Classes inheriting from Module
could reimplement this, e.g.: 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.irc.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('privmsg', self.on_pub_or_privmsg)
def on_pub_or_privmsg(self, connection, event): def on_pub_or_privmsg(self, connection, event):
"""Do a default thing on a pubmsg or privmsg. """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): def get_db(self):
"""Get a database connection to mdb. """Get a database connection to mdb.

View File

@ -45,7 +45,7 @@ class Achievements(Module):
pass pass
def __init__(self, irc, config, server): def __init__(self, irc, config):
"""Set up trigger regexes.""" """Set up trigger regexes."""
# TODO # TODO
@ -59,7 +59,7 @@ class Achievements(Module):
self.infore = re.compile(infopattern) self.infore = re.compile(infopattern)
self.rankre = re.compile(rankpattern) self.rankre = re.compile(rankpattern)
Module.__init__(self, irc, config, server) Module.__init__(self, irc, config)
self.connection = None self.connection = None
self.next_achievements_scan = 0 self.next_achievements_scan = 0
@ -145,38 +145,38 @@ class Achievements(Module):
def register_handlers(self): def register_handlers(self):
"""Handle all sorts of things to track.""" """Handle all sorts of things to track."""
self.server.add_global_handler('pubmsg', self.track_irc_event) self.irc.server.add_global_handler('pubmsg', self.track_irc_event)
self.server.add_global_handler('pubnotice', self.track_irc_event) self.irc.server.add_global_handler('pubnotice', self.track_irc_event)
self.server.add_global_handler('privmsg', self.track_irc_event) self.irc.server.add_global_handler('privmsg', self.track_irc_event)
self.server.add_global_handler('privnotice', self.track_irc_event) self.irc.server.add_global_handler('privnotice', self.track_irc_event)
self.server.add_global_handler('join', self.track_irc_event) self.irc.server.add_global_handler('join', self.track_irc_event)
self.server.add_global_handler('kick', self.track_irc_event) self.irc.server.add_global_handler('kick', self.track_irc_event)
self.server.add_global_handler('mode', self.track_irc_event) self.irc.server.add_global_handler('mode', self.track_irc_event)
self.server.add_global_handler('part', self.track_irc_event) self.irc.server.add_global_handler('part', self.track_irc_event)
self.server.add_global_handler('quit', self.track_irc_event) self.irc.server.add_global_handler('quit', self.track_irc_event)
self.server.add_global_handler('invite', self.track_irc_event) self.irc.server.add_global_handler('invite', self.track_irc_event)
self.server.add_global_handler('action', self.track_irc_event) self.irc.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('topic', self.track_irc_event)
self.server.add_global_handler('pubmsg', self.on_pub_or_privmsg) self.irc.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('privmsg', self.on_pub_or_privmsg)
def unregister_handlers(self): def unregister_handlers(self):
self.server.remove_global_handler('pubmsg', self.track_irc_event) self.irc.server.remove_global_handler('pubmsg', self.track_irc_event)
self.server.remove_global_handler('pubnotice', self.track_irc_event) self.irc.server.remove_global_handler('pubnotice', self.track_irc_event)
self.server.remove_global_handler('privmsg', self.track_irc_event) self.irc.server.remove_global_handler('privmsg', self.track_irc_event)
self.server.remove_global_handler('privnotice', self.track_irc_event) self.irc.server.remove_global_handler('privnotice', self.track_irc_event)
self.server.remove_global_handler('join', self.track_irc_event) self.irc.server.remove_global_handler('join', self.track_irc_event)
self.server.remove_global_handler('kick', self.track_irc_event) self.irc.server.remove_global_handler('kick', self.track_irc_event)
self.server.remove_global_handler('mode', self.track_irc_event) self.irc.server.remove_global_handler('mode', self.track_irc_event)
self.server.remove_global_handler('part', self.track_irc_event) self.irc.server.remove_global_handler('part', self.track_irc_event)
self.server.remove_global_handler('quit', self.track_irc_event) self.irc.server.remove_global_handler('quit', self.track_irc_event)
self.server.remove_global_handler('invite', self.track_irc_event) self.irc.server.remove_global_handler('invite', self.track_irc_event)
self.server.remove_global_handler('action', self.track_irc_event) self.irc.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('topic', self.track_irc_event)
self.server.remove_global_handler('pubmsg', self.on_pub_or_privmsg) self.irc.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('privmsg', self.on_pub_or_privmsg)
def track_irc_event(self, connection, event): def track_irc_event(self, connection, event):
"""Put events in the database.""" """Put events in the database."""

View File

@ -65,7 +65,7 @@ class Acro(Module):
acronyms. acronyms.
""" """
def __init__(self, irc, config, server): def __init__(self, irc, config):
"""Set up the game tracking and such.""" """Set up the game tracking and such."""
# build regexes # build regexes
@ -85,7 +85,7 @@ class Acro(Module):
# game state # game state
self.game = self.AcroGame() 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): def do(self, connection, event, nick, userhost, what, admin_unlocked):
"""Handle commands and inputs.""" """Handle commands and inputs."""

View File

@ -32,10 +32,10 @@ class Dice(Module):
tokens = ['NUMBER', 'TEXT', 'ROLLSEP'] tokens = ['NUMBER', 'TEXT', 'ROLLSEP']
literals = ['#', '/', '+', '-', 'd'] literals = ['#', '/', '+', '-', 'd']
def __init__(self, irc, config, server): def __init__(self, irc, config):
"""Set up XML-RPC methods.""" """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") irc.xmlrpc_register_function(self.do_roll, "dice_roll")

View File

@ -25,10 +25,10 @@ class EightBall(Module):
"""Return a random answer when asked a question.""" """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.""" """Initialize the list of self.responses."""
Module.__init__(self, irc, config, server) Module.__init__(self, irc, config)
self.responses = [] self.responses = []

View File

@ -30,10 +30,10 @@ class Facts(Module):
Facts are categorized by a name, which may allow for random selection and so on. 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.""" """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") irc.xmlrpc_register_function(self._get_fact, "facts_get")

View File

@ -25,12 +25,12 @@ __date__ = "2011-01-08"
class Help(Module): class Help(Module):
def __init__(self, irc, config, server): def __init__(self, irc, config):
""" """
Upon creation, determine the save file location 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*$') self.helpre = re.compile('^!help(\s+(\S+)(\s+(.+))?)?\s*$')

View File

@ -27,14 +27,14 @@ class IrcAdmin(Module):
"""Support miscellaneous IRC stuff --- joining channels, changing the nick, etc.""" """Support miscellaneous IRC stuff --- joining channels, changing the nick, etc."""
def register_handlers(self): def register_handlers(self):
self.server.add_global_handler('pubmsg', self.on_pub_or_privmsg, self.priority()) 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.priority()) self.irc.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('welcome', self.on_connect, self.priority())
def unregister_handlers(self): def unregister_handlers(self):
self.server.remove_global_handler('pubmsg', self.on_pub_or_privmsg) self.irc.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('privmsg', self.on_pub_or_privmsg)
self.server.remove_global_handler('welcome', self.on_connect) self.irc.server.remove_global_handler('welcome', self.on_connect)
def on_connect(self, connection, event): def on_connect(self, connection, event):
"""Set up handlers when the bot has connected to IRC.""" """Set up handlers when the bot has connected to IRC."""

View File

@ -28,12 +28,12 @@ __date__ = "$Oct 23, 2010 11:12:33 AM$"
class Karma(Module): class Karma(Module):
def __init__(self, irc, config, server): def __init__(self, irc, config):
""" """
Upon creation, determine the save file location Upon creation, determine the save file location
""" """
Module.__init__(self, irc, config, server) Module.__init__(self, irc, config)
pattern = "(?:\((.+?)\)|(\S+))" pattern = "(?:\((.+?)\)|(\S+))"
karmapattern = pattern + '(\+\+|--|\+-|-\+)' + '(\s+|$)' karmapattern = pattern + '(\+\+|--|\+-|-\+)' + '(\s+|$)'

View File

@ -41,7 +41,7 @@ class Markov(Module):
http://code.activestate.com/recipes/194364-the-markov-chain-algorithm/ 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.""" """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 # 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.shut_up = False
self.lines_seen = [] self.lines_seen = []
Module.__init__(self, irc, config, server) Module.__init__(self, irc, config)
self.next_shut_up_check = 0 self.next_shut_up_check = 0
self.next_chatter_check = 0 self.next_chatter_check = 0
@ -129,16 +129,16 @@ class Markov(Module):
def register_handlers(self): def register_handlers(self):
"""Handle pubmsg/privmsg, to learn and/or reply to IRC events.""" """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.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.priority()) self.irc.server.add_global_handler('privmsg', self.on_pub_or_privmsg, self.priority())
self.server.add_global_handler('pubmsg', self.learn_from_irc_event) self.irc.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('privmsg', self.learn_from_irc_event)
def unregister_handlers(self): def unregister_handlers(self):
self.server.remove_global_handler('pubmsg', self.on_pub_or_privmsg) self.irc.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('privmsg', self.on_pub_or_privmsg)
self.server.remove_global_handler('pubmsg', self.learn_from_irc_event) self.irc.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('privmsg', self.learn_from_irc_event)
def learn_from_irc_event(self, connection, event): def learn_from_irc_event(self, connection, event):
"""Learn from IRC events.""" """Learn from IRC events."""

View File

@ -46,7 +46,7 @@ class Radio(Module):
connection is necessary or not. 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 the usual IRC regex-type stuff."""
# set up regexes, for replying to specific stuff # set up regexes, for replying to specific stuff
@ -67,7 +67,7 @@ class Radio(Module):
except (NoSectionError, NoOptionError): except (NoSectionError, NoOptionError):
pass pass
Module.__init__(self, irc, config, server) Module.__init__(self, irc, config)
def do(self, connection, event, nick, userhost, what, admin_unlocked): def do(self, connection, event, nick, userhost, what, admin_unlocked):
"""Handle commands and inputs from IRC events.""" """Handle commands and inputs from IRC events."""

View File

@ -69,10 +69,10 @@ class Storycraft(Module):
pass pass
def __init__(self, irc, config, server): def __init__(self, irc, config):
"""Set up trigger regexes.""" """Set up trigger regexes."""
Module.__init__(self, irc, config, server) Module.__init__(self, irc, config)
rootcommand = '^!storycraft' rootcommand = '^!storycraft'
statuspattern = rootcommand + '\s+status$' statuspattern = rootcommand + '\s+status$'

View File

@ -32,10 +32,10 @@ class Twitter(Module):
"""Access Twitter via the bot as an authenticated client.""" """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).""" """Prepare for oauth stuff (but don't execute it yet)."""
Module.__init__(self, irc, config, server) Module.__init__(self, irc, config)
# setup regexes # setup regexes
getstatuspattern = "^!twitter\s+getstatus(\s+nosource)?(\s+noid)?\s+(\S+)$" getstatuspattern = "^!twitter\s+getstatus(\s+nosource)?(\s+noid)?\s+(\S+)$"

View File

@ -27,10 +27,10 @@ from Module import Module
class Weather(Module): class Weather(Module):
"""Provide weather lookup services to the bot.""" """Provide weather lookup services to the bot."""
def __init__(self, irc, config, server): def __init__(self, irc, config):
"""Set up regexes and wunderground API.""" """Set up regexes and wunderground API."""
Module.__init__(self, irc, config, server) Module.__init__(self, irc, config)
self.weatherre = re.compile("^!weather\s+(.*)$") self.weatherre = re.compile("^!weather\s+(.*)$")