示例#1
0
class IRCThread(threading.Thread):
  def __init__(self, host, port, nick, channels, dispatcher):
    self.connexion = IRCConnection(host, port, nick)
    self.botInstance = InterChatIRCListener(self.connexion, dispatcher)
    self.connexion.connect()
    self.channels = channels
    threading.Thread.__init__(self)
  def getConnexion(self):
    return self.connexion
  def run(self):
    for channel in self.channels:
      self.connexion.join(channel) 
    self.connexion.enter_event_loop()
  def writeToChannel(self, message, channel):
    self.botInstance.respond(message,channel);
示例#2
0
class MPMBot(IRCBot, GithubMixin, RedmineMixin, TalkbackMixin):
    """
    Subclasses IRCBot to construct a bot that responds to request for commit
    and ticket information. Queries Redmine instances and Github accounts based
    on settings.py
    """

    def __init__(self, start=False):
        self.conn = IRCConnection(HOST, PORT, NICK)

        self.register_callbacks()
        if start:
            self.run()

    def run(self):
        """ Start the IRC bot and connect to our channels """

        while 1:
            self.conn.connect()

            channels = CHANNELS or []

            for channel in channels:
                self.conn.join(channel)

            self.conn.enter_event_loop()

    def log(self, text):
        """ Shortcut to our logger """
        self.conn.logger.info(text)

    def command_patterns(self):
        """ Define dispatch regexes """
        patterns = ()

        for base in MPMBot.mro():
            if issubclass(base, IRCBotMixin):
                func = '%s_command_patterns' % base.__name__[0:-5].lower()
                if hasattr(self, func):
                    func = getattr(self, func, None)
                    patterns += (func())

        return patterns
示例#3
0
文件: markov.py 项目: Adrellias/irc
    
    def command_patterns(self):
        return (
            self.ping('^imitate \S+', self.imitate),
            self.ping('^cite', self.cite),
            ('.*', self.log),
        )


host = 'irc.freenode.net'
port = 6667
nick = 'whatyousay'

conn = IRCConnection(host, port, nick)
markov_bot = MarkovBot(conn)

if len(sys.argv) > 1 and sys.argv[1] == '-log':
    if len(sys.argv) == 3:
        markov_bot.load_log_file(sys.argv[2])
    elif len(sys.argv):
        markov_bot.load_text_file(sys.argv[2], sys.argv[3])
else:
    conn.connect()
    conn.join('#botwars')
    try:
        conn.enter_event_loop()
    except:
        pass

markov_bot.save_data()
示例#4
0
                      '-n',
                      dest='nick',
                      default='boss1337',
                      help='Nick to use')
    parser.add_option('--secret', '-x', dest='secret', default='password')
    parser.add_option('--channel',
                      '-c',
                      dest='channel',
                      default='#botwars-test')
    parser.add_option('--logfile', '-f', dest='logfile')
    parser.add_option('--verbosity',
                      '-v',
                      dest='verbosity',
                      default=1,
                      type='int')

    return parser


if __name__ == '__main__':
    parser = get_parser()
    (options, args) = parser.parse_args()

    conn = IRCConnection(options.server, options.port, options.nick,
                         options.logfile, options.verbosity)
    conn.connect()

    bot = BotnetBot(conn, options.secret, options.channel)

    conn.enter_event_loop()