def test_reconnects_are_stable(self, disconnecting_server): """ Ensure that disconnects from the server don't lead to exponential growth in reconnect attempts. """ recon = irc.bot.ExponentialBackoff(min_interval=0.01) bot = irc.bot.SingleServerIRCBot( server_list=[disconnecting_server.socket.getsockname()], realname='reconnect_test', nickname='reconnect_test', recon=recon, ) bot._connect() for x in range(4): bot.reactor.process_once() time.sleep(0.01) assert len(bot.reactor.scheduler.queue) <= 1
from dateutil.parser import parse class PhongHunter(irc.bot.SingleServerIRCBot): def __init__(self): irc.bot.SingleServerIRCBot.__init__(self, [('chat.freenode.net', 6667)], 'WHEREISPHONG', 'WHEREISPHONG') self.running = True def on_welcome(self, c, e): c.privmsg('nickserv', 'info Phong') def on_privnotice(self, c, e): if e.source.startswith('NickServ!'): if e.arguments[0].startswith('Last seen'): lastSeen = e.arguments[0].split(':')[1].split('(')[0].strip() if lastSeen == 'now': self.lastSeenStamp = datetime.now() else: self.lastSeenStamp = datetime.strptime(lastSeen, '%b %d %H:%M:%S %Y') self.running = False bot = PhongHunter() bot._connect() while bot.running: bot.ircobj.process_once() lastSeen = datetime.now() - bot.lastSeenStamp delta = "%s days, %s hours, %s minutes ago" % (lastSeen.days, lastSeen.seconds / 60 / 60, lastSeen.seconds / 60) print 'Last seen:', delta, '(%s)'%(lastSeen)