예제 #1
0
            key = self.separator.join(words[:-1])

            # add the last word to the set
            self.redis_conn.sadd(self.make_key(key), words[-1])

            # if we should say something, generate some messages based on what
            # was just said and select the longest, then add it to the list
            if say_something:
                best_message = ''
                for i in range(self.messages_to_generate):
                    generated = self.generate_message(seed=key)
                    if len(generated) > len(best_message):
                        best_message = generated

                if best_message:
                    messages.append(best_message)

        if len(messages):
            return random.choice(messages)

    def command_patterns(self):
        return (('.*', self.log), )


host = 'irc.snoonet.org'
port = 6667
nick = 'thebotandstuff'
ignored = ['banjax', 'grisher']

run_bot(MarkovBot, host, port, nick, ['#outsidethehall'])
예제 #2
0
파일: lolbot.py 프로젝트: Adrellias/irc
            }

    def check_lulz(self, sender, message, channel):
        if channel in self.last_urls and self.message_count > 0:
            vals = {
                'sender': self.last_urls[channel]['sender'],
                'phrases': self.phrases,
            }
            for pattern, score in self.influencer_patterns:
                if re.match(pattern % vals, message):
                    self.redis_conn.zincrby(self.last_urls[channel]['url'], score)

    def log(self, sender, message, channel):
        if self.message_count > 0:
            self.message_count -= 1

        self.check_lulz(sender, message, channel)
        self.search_urls(sender, message, channel)

    def command_patterns(self):
        return (
            ('.*', self.log),
        )


host = 'irc.freenode.net'
port = 6667
nick = 'walrus-whisker'

run_bot(LolBot, host, port, nick, ['#lawrence-botwars'])
예제 #3
0
파일: quote.py 프로젝트: Adrellias/irc
        no_html = re.sub('<[^\>]+>', '', ghetto_parsed)
        no_charrefs = re.sub('&[^\;]+;', '', no_html)
        return chap, no_charrefs
    
    def display(self, sender, message, channel):
        if self.is_ping(message):
            query = self.fix_ping(message)
            result = self.fetch_result(query)
            if result:
                return '%s: %s' % (result[0], result[1])
        else:
            self.last_message = message
    
    def contextualize(self, sender, message, channel):
        result = self.fetch_result(self.last_message)
        if result:
            return '%s: %s' % (result[0], result[1])
    
    def command_patterns(self):
        return (
            ('^contextualize', self.contextualize),
            ('', self.display),
        )


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

run_bot(QuoteBot, host, port, nick, ['#botwars'])
예제 #4
0
    self.get_currency("", "", "")
    self.xpm_mining("", "", "")
    self.get_beer("", "", "")
    self.get_qrk_news("", "", "")
    self.get_btc_news("", "", "")
    self.get_ltc_news("", "", "")
    self.get_mtgox("", "", "")
    
class GreeterBot(IRCBot, Commands):

    def command_patterns(self):
        return (
            ('!s$', self.get_currency),
            ('!mtgox$', self.get_mtgox),
            ('!ltcnews$', self.get_ltc_news),
            ('!btcnews$', self.get_btc_news),
            ('!qrknews$', self.get_qrk_news),
            ('!beer$', self.get_beer),
            ('!votka$', self.get_qrk_balance),
            ('!xpm_mining', self.xpm_mining),
            ('!help$', self.help)
        )
if __name__ == "__main__":
  try:
    bt = BasicTest()
    bt.run_test()
    run_bot(GreeterBot, 'irc.freenode.net', 6667, 'nermincoin2', ['#btcsohbet', '#speedlings', '#bitcoin-tr', '#eksicoin', '#cointurk'])
  except Exception, e:
    import traceback
    traceback.print_exc()
예제 #5
0
#!/usr/local/bin/python
'''
DEPENDENCES
pip install irckit
pip install gevent (for botnet)
pip install boto (for botnet's EC2 launcher)
pip install httplib2 (for some of the bots)
'''

from irc import IRCBot, run_bot


class GreeterBot(IRCBot):
    def greet(self, nick, message, channel):
        return 'Hi, %s' % nick

    def command_patterns(self):
        return (self.ping('^hello', self.greet), )


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

run_bot(GreeterBot, host, port, nick, ['#botwars'])
예제 #6
0
		return "beeeeech slaps %s" % inp
		
	def whoami(self, nick, message, channel):
		return "You are %s silly" % nick

	def help(self, nick, message, channel):
		args = message[5:].lower()
		if len(args) < 1:
			return "Hai %s I'm %s a bot of course... I do amazingly silly things: Commands(%s) : %s" % (nick, makebold(self.conn.nick), makebold(len(self.cl)), ",".join(sorted(self.cl)))
		else:
			return "%s: %s" % (args, makebold(self.getHelpkey(args)))
		
	def command_patterns(self):
		return(
			self.command("say", self.say, "say", "make the bot say something"),
			self.command("dice", self.dice, "dice", "make the bot roll a dice"),
			self.command("slap", self.slap, "slap", "make the bot slap someone"),
			self.command("help", self.help, "help", "get help on commands"),
			self.command("whoami", self.whoami, "whoami", "see who you are of course"),
		)
		
host = "irc.domain.tld"
port = 6667
nick = "bawt"

run_bot(bot, 
	host, 
	port, 
	nick, 
	rooms)
예제 #7
0
파일: voldebot.py 프로젝트: BtbN/VoldeBot
        return messages

    def log(self, sender, message, channel):
        say_something = self.is_ping(message) or (sender != self.conn.nick and random.random() < self.chattiness)

        if channel not in self.active_channels and sender != 'oromit':
            say_something = False

        if message.startswith('/'):
            return

        if self.is_ping(message):
            message = self.fix_ping(message)

        messages = self.parse_message(message, say_something)

        if len(messages) and (channel not in self.channel_timers or channel in self.unlimited_channels or time.time() - self.channel_timers[channel] > self.cooldown):
            self.channel_timers[channel] = time.time()
            resmsg = random.choice(messages)
            print("In #%s: <%s> %s" % (channel, sender, message))
            print("-> %s" % resmsg)
            return resmsg

    def command_patterns(self):
        return (('.*', self.log),)

if __name__ == "__main__":
    run_bot(MarkovBot, 'irc.chat.twitch.tv', 6667, distdata.nick, distdata.join_channels, distdata.password)

예제 #8
0
                'url': url,
            }

    def check_lulz(self, sender, message, channel):
        if channel in self.last_urls and self.message_count > 0:
            vals = {
                'sender': self.last_urls[channel]['sender'],
                'phrases': self.phrases,
            }
            for pattern, score in self.influencer_patterns:
                if re.match(pattern % vals, message):
                    self.redis_conn.zincrby(self.last_urls[channel]['url'],
                                            score)

    def log(self, sender, message, channel):
        if self.message_count > 0:
            self.message_count -= 1

        self.check_lulz(sender, message, channel)
        self.search_urls(sender, message, channel)

    def command_patterns(self):
        return (('.*', self.log), )


host = 'irc.freenode.net'
port = 6667
nick = 'walrus-whisker'

run_bot(LolBot, host, port, nick, ['#lawrence-botwars'])
예제 #9
0
파일: googlebot.py 프로젝트: wade1990/irc-2
import urllib

from irc import IRCBot, run_bot


class GoogleBot(IRCBot):
    def fetch_result(self, query):
        sock = httplib2.Http(timeout=1)
        headers, response = sock.request(
            'http://ajax.googleapis.com/ajax/services/search/web?v=2.0&q=%s' % \
            urllib.quote(query)
        )
        if headers['status'] in (200, '200'):
            response = json.loads(response)
            return response['responseData']['results'][0]['unescapedUrl']

    def find_me(self, nick, message, channel, query):
        result = self.fetch_result(query)
        if result:
            return result

    def command_patterns(self):
        return (self.ping('^find me (?P<query>\S+)', self.find_me), )


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

run_bot(GoogleBot, host, port, nick, ['#botwars'])
예제 #10
0
        if headers['status'] in (200, '200'):
            return json.loads(response)

    def fetch_answer(self, query):
        question_search = self.get_json(
            'http://answers.yahooapis.com/AnswersService/V1/questionSearch?appid=YahooDemo&query=%s&output=json' % \
            urllib.quote(query)
        )
        if len(question_search['all']['questions']):
            question_id = question_search['all']['questions'][0]['Id']
            answer_data = self.get_json(
                'http://answers.yahooapis.com/AnswersService/V1/getQuestion?appid=YahooDemo&question_id=%s&output=json' % \
                urllib.quote(question_id)
            )
            chosen = answer_data['all']['question'][0]['ChosenAnswer']
            return chosen.encode('utf-8', 'replace')

    def answer(self, sender, message, channel):
        result = self.fetch_answer(message)
        if result:
            return re.sub('[\r\n ]+', ' ', result).strip()

    def command_patterns(self):
        return (self.ping('^\S+', self.answer), )


host = 'irc.freenode.net'
port = 6667
nick = 'answer_bot'
run_bot(YahooAnswersBot, host, port, nick, ['#botwars'])
예제 #11
0
파일: bot.py 프로젝트: jwinget/Suckbot
        # split up the incoming message into chunks that are 1 word longer than
        # the size of the chain, e.g. ['what', 'up', 'bro'], ['up', 'bro', '\x02']
        for words in itertools.permutations(self.sanitize_message(message).split(),g_chain_length):
            # grab everything but the last word
            key = self.separator.join(words)

            # if we should say something, generate some messages based on what
            # was just said and select the longest, then add it to the list
            if say_something:
                best_message = ''
                for i in range(self.messages_to_generate):
                    generated = self.generate_message(seed=key)
                    if len(generated) > len(best_message):
                        best_message = generated
               
                # throw out messages 2 words or shorter
                if best_message and len(best_message.split()) > g_chain_length:
                    messages.append(best_message)
        
        if len(messages):
            rand_index = random.randrange(len(messages))
            return messages[rand_index]

    def command_patterns(self):
        return (
            ('.*', self.log),
        )


run_bot(MarkovBot, host, port, nick, chans)
예제 #12
0
        self.pubsub.subscribe('out')
        for msg in self.pubsub.listen():
            message = json.loads(msg['data'])
            print "Got %s" % message
            if message['version'] == 1:
                if message['type'] == 'privmsg':
                    self.respond(message['data']['message'],
                                 channel=message['data']['to'])

    def do_pub(self, nick, message, channel):
        to_publish = json.dumps({
            'version': 1,
            'type': 'privmsg',
            'data': {
                'sender': nick,
                'channel': channel,
                'message': message,
            },
        })

        r.publish('in', to_publish)
        print "Sending to in %s" % to_publish

    def command_patterns(self):
        return (('.*', self.do_pub), )


run_bot(RelayBot, config['servers'][0]['hostname'],
        config['servers'][0]['port'], config['servers'][0]['nick'],
        config['servers'][0]['channels'])
예제 #13
0
        no_html = re.sub('<[^\>]+>', '', ghetto_parsed)
        no_charrefs = re.sub('&[^\;]+;', '', no_html)
        return chap, no_charrefs

    def display(self, sender, message, channel):
        if self.is_ping(message):
            query = self.fix_ping(message)
            result = self.fetch_result(query)
            if result:
                return '%s: %s' % (result[0], result[1])
        else:
            self.last_message = message

    def contextualize(self, sender, message, channel):
        result = self.fetch_result(self.last_message)
        if result:
            return '%s: %s' % (result[0], result[1])

    def command_patterns(self):
        return (
            ('^contextualize', self.contextualize),
            ('', self.display),
        )


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

run_bot(QuoteBot, host, port, nick, ['#botwars'])
예제 #14
0
            result = random.choice(results)
            result = re.sub('<[^<]+?>', '', result)

            return smart_str(result)

    def handle_all(self, nick, message, channel):
        if 'twitter' in message:
            tweet = get_tweet(message)
            if tweet:
                return tweet

        if 'youtube' in message:
            pass

    def command_patterns(self):
        return (('selam|merhaba|hi|hello',
                 self.greet), ('!pyzen', self.pyzen), ('!cs$', self.cs),
                ('!hamachi', self.hamachi), ('!cs_macfag', self.cs_macfag),
                ('!500t', self.random_log), ('!cs_sunucu', self.sunucu),
                self.ping('.*', self.talk), ('.*', self.handle_all))


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

run_bot(LogarBot, host, port, nick, [
    '#brotoss',
    '#pyistanbul',
])
예제 #15
0
파일: redisbot.py 프로젝트: thantai574/irc
            # grab everything but the last word
            key = self.separator.join(words[:-1])

            # add the last word to the set
            self.redis_conn.sadd(self.make_key(key), words[-1])

            # if we should say something, generate some messages based on what
            # was just said and select the longest, then add it to the list
            if say_something:
                best_message = ""
                for i in range(self.messages_to_generate):
                    generated = self.generate_message(seed=key)
                    if len(generated) > len(best_message):
                        best_message = generated

                if best_message:
                    messages.append(best_message)

        if len(messages):
            return random.choice(messages)

    def command_patterns(self):
        return ((".*", self.log),)


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

run_bot(MarkovBot, host, port, nick, ["#lawrence-botwars"])
예제 #16
0
#!/usr/local/bin/python
'''
DEPENDENCES
pip install irckit
pip install gevent (for botnet)
pip install boto (for botnet's EC2 launcher)
pip install httplib2 (for some of the bots)
'''

from irc import IRCBot, run_bot


class GreeterBot(IRCBot):
    def greet(self, nick, message, channel):
        return 'Hi, %s' % nick

    def command_patterns(self):
        return (
            self.ping('^hello', self.greet),
        )


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

run_bot(GreeterBot, host, port, nick, ['#botwars'])
예제 #17
0
파일: redisbot.py 프로젝트: wade1990/irc-2
            # grab everything but the last word
            key = self.separator.join(words[:-1])

            # add the last word to the set
            self.redis_conn.sadd(self.make_key(key), words[-1])

            # if we should say something, generate some messages based on what
            # was just said and select the longest, then add it to the list
            if say_something:
                best_message = ''
                for i in range(self.messages_to_generate):
                    generated = self.generate_message(seed=key)
                    if len(generated) > len(best_message):
                        best_message = generated

                if best_message:
                    messages.append(best_message)

        if len(messages):
            return random.choice(messages)

    def command_patterns(self):
        return (('.*', self.log), )


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

run_bot(MarkovBot, host, port, nick, ['#lawrence-botwars'])
예제 #18
0
파일: googlebot.py 프로젝트: Adrellias/irc
from irc import IRCBot, run_bot


class GoogleBot(IRCBot):
    def fetch_result(self, query):
        sock = httplib2.Http(timeout=1)
        headers, response = sock.request(
            'http://ajax.googleapis.com/ajax/services/search/web?v=2.0&q=%s' % \
            urllib.quote(query)
        )
        if headers['status'] in (200, '200'):
            response = json.loads(response)
            return response['responseData']['results'][0]['unescapedUrl']
    
    def find_me(self, nick, message, channel, query):
        result = self.fetch_result(query)
        if result:
            return result
    
    def command_patterns(self):
        return (
            self.ping('^find me (?P<query>\S+)', self.find_me),
        )


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

run_bot(GoogleBot, host, port, nick, ['#botwars'])
예제 #19
0
파일: ascii.py 프로젝트: wade1990/irc-2
            img = random.randint(0, len(guesses) - 1)
            if self.is_quality(guesses[img]):
                return guesses[img]
            else:
                guesses = guesses[:img] + guesses[img + 1:]

    def is_quality(self, img):
        non_empty_lines = 0
        for line in img.splitlines():
            if line.strip():
                non_empty_lines += 1

        return non_empty_lines > 3

    def display(self, nick, message, channel):
        result = self.fetch_result(message)
        if result:
            for line in result.splitlines()[:45]:
                self.respond(line, channel=channel)
                time.sleep(.2)

    def command_patterns(self):
        return (self.ping('^\S+', self.display), )


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

run_bot(AsciiArtBot, host, port, nick, ['#botwars'])
예제 #20
0
            # add the last word to the set
            self.redis_conn.sadd(self.make_key(key), words[-1])

            # if we should say something, generate some messages based on what
            # was just said and select the longest, then add it to the list
            if say_something:
                best_message = ''
                for i in range(self.messages_to_generate):
                    generated = self.generate_message(seed=key)
                    if len(generated) > len(best_message):
                        best_message = generated

                if best_message:
                    messages.append(best_message)

        if len(messages):
            return random.choice(messages)

    def command_patterns(self):
        return (
            ('.*', self.log),
        )


host = 'irc.hypersigil.org'
port = 6667
nick = 'cake'

run_bot(MarkovBot, host, port, nick, ['#botdev'])
예제 #21
0
파일: cihi.py 프로젝트: BYK/500t
            result = random.choice(results)
            result = re.sub('<[^<]+?>', '', result)

            return smart_str(result)

    def handle_all(self, nick, message, channel):
        if 'twitter' in message:
            return 'twitter buldum'

        if 'youtube' in message:
            return 'youtube buldum'

    def command_patterns(self):
        return (
            ('selam|merhaba|hi|hello', self.greet),
            ('!pyzen', self.pyzen),
            ('!cs$', self.cs),
            ('!hamachi', self.hamachi),
            ('!cs_macfag', self.cs_macfag),
            ('!500t', self.random_log),
            ('!cs_sunucu', self.sunucu),
            self.ping('.*', self.talk),
            ('.*', self.handle_all)
        )

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

run_bot(LogarBot, host, port, nick, ['#brotoss', '#pyistanbul', ])
예제 #22
0
파일: redisbot.py 프로젝트: banjaxe/irc
            # add the last word to the set
            self.redis_conn.sadd(self.make_key(key), words[-1])
            
            # if we should say something, generate some messages based on what
            # was just said and select the longest, then add it to the list
            if say_something:
                best_message = ''
                for i in range(self.messages_to_generate):
                    generated = self.generate_message(seed=key)
                    if len(generated) > len(best_message):
                        best_message = generated
                
                if best_message:
                    messages.append(best_message)
        
        if len(messages):
            return random.choice(messages)

    def command_patterns(self):
        return (
            ('.*', self.log),
        )


host = 'irc.snoonet.org'
port = 6667
nick = 'thebotandstuff'
ignored = ['banjax', 'grisher']

run_bot(MarkovBot, host, port, nick, ['#outsidethehall'])
예제 #23
0
            if msg['type'] != 'message':
                continue
            log.debug('Received {0}'.format(msg))
            for channel in config.IRC_CHANNELS:
                self.respond(msg['data'], channel=channel)

    def do_privmsg(self, nick, message, channel):
        pass

    def do_part(self, nick, command, channel):
        pass

    def do_quit(self, command, nick, channel):
        pass

    def do_nick(self, old_nick, command, new_nick):
        pass

    def command_patterns(self):
        return (
            ('/privmsg', self.do_privmsg),
            ('/part', self.do_part),
            ('/quit', self.do_quit),
            ('/nick', self.do_nick),
        )


if __name__ == '__main__':
    run_bot(RelayBot, config.IRC_HOST, config.IRC_PORT, config.IRC_NICK,
            config.IRC_CHANNELS)
예제 #24
0
    def whoami(self, nick, message, channel):
        return "You are %s silly" % nick

    def help(self, nick, message, channel):
        args = message[5:].lower()
        if len(args) < 1:
            return "Hai %s I'm %s a bot of course... I do amazingly silly things: Commands(%s) : %s" % (
                nick, makebold(self.conn.nick), makebold(len(
                    self.cl)), ",".join(sorted(self.cl)))
        else:
            return "%s: %s" % (args, makebold(self.getHelpkey(args)))

    def command_patterns(self):
        return (
            self.command("say", self.say, "say", "make the bot say something"),
            self.command("dice", self.dice, "dice",
                         "make the bot roll a dice"),
            self.command("slap", self.slap, "slap",
                         "make the bot slap someone"),
            self.command("help", self.help, "help", "get help on commands"),
            self.command("whoami", self.whoami, "whoami",
                         "see who you are of course"),
        )


host = "irc.domain.tld"
port = 6667
nick = "bawt"

run_bot(bot, host, port, nick, rooms)
예제 #25
0
파일: ascii.py 프로젝트: Adrellias/irc
                return guesses[img]
            else:
                guesses = guesses[:img] + guesses[img + 1:]
    
    def is_quality(self, img):
        non_empty_lines = 0
        for line in img.splitlines():
            if line.strip():
                non_empty_lines += 1
        
        return non_empty_lines > 3
    
    def display(self, nick, message, channel):
        result = self.fetch_result(message)
        if result:
            for line in result.splitlines()[:45]:
                self.respond(line, channel=channel)
                time.sleep(.2)
    
    def command_patterns(self):
        return (
            self.ping('^\S+', self.display),
        )


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

run_bot(AsciiArtBot, host, port, nick, ['#botwars'])
예제 #26
0
파일: yahoo.py 프로젝트: Adrellias/irc
    
    def fetch_answer(self, query):
        question_search = self.get_json(
            'http://answers.yahooapis.com/AnswersService/V1/questionSearch?appid=YahooDemo&query=%s&output=json' % \
            urllib.quote(query)
        )
        if len(question_search['all']['questions']):
            question_id = question_search['all']['questions'][0]['Id']
            answer_data = self.get_json(
                'http://answers.yahooapis.com/AnswersService/V1/getQuestion?appid=YahooDemo&question_id=%s&output=json' % \
                urllib.quote(question_id)
            )
            chosen = answer_data['all']['question'][0]['ChosenAnswer']
            return chosen.encode('utf-8', 'replace')
    
    def answer(self, sender, message, channel):
        result = self.fetch_answer(message)
        if result:
            return re.sub('[\r\n ]+', ' ', result).strip()
    
    def command_patterns(self):
        return (
            self.ping('^\S+', self.answer),
        )


host = 'irc.freenode.net'
port = 6667
nick = 'answer_bot'
run_bot(YahooAnswersBot, host, port, nick, ['#botwars'])
예제 #27
0
    def do_sub(self):
        log = logging.getLogger()
        sub = get_redis_client()
        self.pubsub = sub.pubsub()
        self.pubsub.subscribe(config.REDIS_PUBSUB_CHANNEL)
        for msg in self.pubsub.listen():
            if msg['type'] != 'message':
                continue
            log.debug('Received {0}'.format(msg))
            for channel in config.IRC_CHANNELS:
                self.respond(msg['data'],
                    channel=channel)

    def do_privmsg(self, nick, message, channel): pass
    def do_part(self, nick, command, channel): pass
    def do_quit(self, command, nick, channel): pass
    def do_nick(self, old_nick, command, new_nick): pass
    def command_patterns(self):
        return (
            ('/privmsg', self.do_privmsg),
            ('/part', self.do_part),
            ('/quit', self.do_quit),
            ('/nick', self.do_nick),
        )

if __name__=='__main__':
    run_bot(RelayBot, config.IRC_HOST,
        config.IRC_PORT, config.IRC_NICK,
        config.IRC_CHANNELS)
예제 #28
0
        print 'Sending to in %s' % to_publish

    def do_quit(self, command, nick, channel):
        to_publish = json.dumps({
            'version': 1,
            'type': 'quit',
            'data': {
                'sender': nick,
            }
        })
        pub.publish('in', to_publish)
        print 'Sending to in %s' % to_publish

    def do_nick(self, old_nick, command, new_nick):
        if pub.get('zenircbot:nick') == old_nick:
            pub.set('zenircbot:nick', new_nick)
        print 'nick change: %s -> %s' % (old_nick, new_nick)

    def command_patterns(self):
        return (
            ('/privmsg', self.do_privmsg),
            ('/part', self.do_part),
            ('/quit', self.do_quit),
            ('/nick', self.do_nick),
        )


run_bot(RelayBot, config['servers'][0]['hostname'],
        config['servers'][0]['port'], config['servers'][0]['nick'],
        config['servers'][0]['channels'])
예제 #29
0
파일: helper.py 프로젝트: chanahn/irc
            'address': address,
            'timestamp': time()
        }
        finds.append(find)
        return '[%s] %s needs help at %s', len(finds), nick, address

    def accept(self, nick, message, channel, find_id):
        for find in finds:
            if find['id'] == find_id:
                finds.remove(find)
                return '%s accepted request %s', nick, find['id']
        return 'find_id not valid'

    def list(self, nick, message, channel):
        return finds

    def command_patterns(self):
        return (
            self.ping('^register (?P<address>\S+)', self.register),
            self.ping('^find (?P<address>\S+)', self.find),
            self.ping('^accept (?P<find_id>\S+)', self.accept),
            self.ping('^list', self.list),
        )


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

run_bot(HelperBot, host, port, nick, ['#findhelper'])