diff --git a/modules/MegaHAL.py b/modules/MegaHAL.py deleted file mode 100644 index f56ae25..0000000 --- a/modules/MegaHAL.py +++ /dev/null @@ -1,91 +0,0 @@ -""" -MegaHAL - MegaHAL bot for IRC -Copyright (C) 2010 Brian S. Stephan - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - -from ConfigParser import NoOptionError -import mh_python -import os -import re - -from extlib import irclib - -from Module import Module - -class MegaHAL(Module): - - """Have an annoying, dumb, and hilarious chatterbot on IRC.""" - - def priority(self): - return 95 - - def __init__(self, irc, config, server): - """Upon creation, open the MegaHAL brain and get ready for doing actual stuff.""" - - Module.__init__(self, irc, config, server) - - mh_python.initbrain() - - def register_handlers(self): - """Handle pubmsg/privmsg, so we can learn only from 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) - - 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) - - def save(self): - """Sync the megahal brain.""" - mh_python.cleanup() - - def learn_from_irc_event(self, connection, event): - """Learn text when an irc event happens.""" - what = ''.join(event.arguments()[0]) - mh_python.learn(what) - - def do(self, connection, event, nick, userhost, what, admin_unlocked): - """Say something on IRC if the bot is being addressed.""" - - # i think this megahal module is corrupting the object while walking it, - # so give it a stupid copy of the string. stupid stupid stupid. - line = ''.join(what) - reply = "" - append_nick = False - - if re.search(connection.get_nickname(), line, re.IGNORECASE) is not None: - addressed_pattern = '^' + connection.get_nickname() + '[:,]\s+' - addressed_re = re.compile(addressed_pattern) - if addressed_re.match(what): - line = addressed_re.sub('', line) - append_nick = True - - reply = mh_python.doreply(line) - elif re.search('^!megahal$', line, re.IGNORECASE) is not None: - reply = mh_python.doreply('') - - if reply is not "": - if append_nick: - reply = nick + ": " + reply - return self.reply(connection, event, reply) - -# vi:tabstop=4:expandtab:autoindent -# kate: indent-mode python;indent-width 4;replace-tabs on; diff --git a/modules/Trigger.py b/modules/Trigger.py deleted file mode 100644 index 692fd82..0000000 --- a/modules/Trigger.py +++ /dev/null @@ -1,44 +0,0 @@ -""" -Trigger - simple input -> output lookup based on config -Copyright (C) 2010 Brian S. Stephan - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - -from ConfigParser import NoOptionError, NoSectionError -import re - -from extlib import irclib - -from Module import Module - -class Trigger(Module): - """Return text based on trigger input.""" - - def do(self, connection, event, nick, userhost, what, admin_unlocked): - """Look up input text in config, and respond with result if found.""" - - try: - trigger_list = self.config.options(self.__class__.__name__) - self.remove_metaoptions(trigger_list) - - for trigger in trigger_list: - if re.search(trigger, what) is not None: - output = self.config.get(self.__class__.__name__, trigger) - return self.reply(connection, event, output) - except NoOptionError: pass - except NoSectionError: pass - -# vi:tabstop=4:expandtab:autoindent -# kate: indent-mode python;indent-width 4;replace-tabs on; diff --git a/modules/Urls.py b/modules/Urls.py deleted file mode 100644 index de1a43d..0000000 --- a/modules/Urls.py +++ /dev/null @@ -1,73 +0,0 @@ -""" -Urls - store urls, retrieve urls, even track some maybe -Copyright (C) 2010 Brian S. Stephan - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - -from ConfigParser import NoOptionError -import os -import random -import re - -from extlib import irclib - -from Module import Module - -class Urls(Module): - """Track URLs and allow one to be returned randomly or searched for.""" - - def do(self, connection, event, nick, userhost, what, admin_unlocked): - """Search for a URL from the store, or return a random one, or add one.""" - - whats = what.split(' ') - if whats[0] == "!url": - try: - filename = self.config.get(self.__class__.__name__, 'urlfile') - - # check file - if os.path.isfile(filename): - # try special commands like add - if len(whats) > 1: - if whats[1] == "add" and len(whats) > 2: - with open(filename, 'a') as file: - urlstr = ' '.join(whats[2:]) + "\n" - file.write(urlstr) - - return self.reply(connection, event, 'added url') - - # default: get a random url - - # http://www.regexprn.com/2008/11/read-random-line-in-large-file-in.html - with open(filename, 'r') as file: - urls = [] - if len(whats) == 1: - urls = file.readlines() - else: - lines = file.readlines() - for line in lines: - # check if line matches provided regex - if re.search(' '.join(whats[1:]), line, re.IGNORECASE) is not None: - urls.append(line) - if len(urls) > 0: - to_print = urls[random.randint(1, len(urls))-1] - - # return text - return self.reply(connection, event, to_print.rstrip()) - else: - print('filename in config file for urls is wrong') - except NoOptionError: pass - -# vi:tabstop=4:expandtab:autoindent -# kate: indent-mode python;indent-width 4;replace-tabs on;