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:
parent
3e76f75bba
commit
8d6d66333b
|
@ -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()
|
||||||
|
|
||||||
|
|
18
Module.py
18
Module.py
|
@ -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.
|
||||||
|
|
|
@ -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."""
|
||||||
|
|
|
@ -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."""
|
||||||
|
|
|
@ -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")
|
||||||
|
|
||||||
|
|
|
@ -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 = []
|
||||||
|
|
||||||
|
|
|
@ -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")
|
||||||
|
|
||||||
|
|
|
@ -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*$')
|
||||||
|
|
||||||
|
|
|
@ -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."""
|
||||||
|
|
|
@ -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+|$)'
|
||||||
|
|
|
@ -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."""
|
||||||
|
|
|
@ -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."""
|
||||||
|
|
|
@ -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$'
|
||||||
|
|
|
@ -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+)$"
|
||||||
|
|
|
@ -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+(.*)$")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue