# FactFile - display facts from a flat file upon request # 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 from irclib import irclib from Module import Module # Returns a random fact/quote/whatever from one or more files class FactFile(Module): def __init__(self, config, server, modlist, rehash): super(FactFile, self).__init__(config, server, modlist, rehash) modlist.append(self) def register_handlers(self, server): server.add_global_handler('pubmsg', self.on_pubmsg) server.add_global_handler('privmsg', self.on_privmsg) def do(self, connection, event, nick, userhost, replypath, what, admin_unlocked): whats = what.split(' ') try: filename = self.config.get('fact', whats[0]) # open file if os.path.isfile(filename): # http://www.regexprn.com/2008/11/read-random-line-in-large-file-in.html with open(filename, 'r') as file: facts = file.readlines() to_print = facts[random.randint(0, len(facts))] # return text if replypath is None: return to_print.rstrip() else: connection.privmsg(replypath, to_print.rstrip()) else: print('filename in config file for \'' + whats[0] + '\' is wrong') except NoOptionError: pass # vi:tabstop=4:expandtab:autoindent # kate: indent-mode python;indent-width 4;replace-tabs on;