deleting MegaHAL, Trigger, Urls (all deleted in py3 as well)

This commit is contained in:
Brian S. Stephan 2012-07-15 21:05:48 -05:00
parent 8dba63e38c
commit 4100b55de0
3 changed files with 0 additions and 208 deletions

View File

@ -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 <http://www.gnu.org/licenses/>.
"""
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;

View File

@ -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 <http://www.gnu.org/licenses/>.
"""
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;

View File

@ -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 <http://www.gnu.org/licenses/>.
"""
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;