Better stupid nick resolution scheme.

This commit is contained in:
Jeremy Fincher 2004-08-17 08:07:47 +00:00
parent c925b483c7
commit 3cf02c85a6

View File

@ -36,6 +36,7 @@ import supybot.fix as fix
import copy import copy
import sets import sets
import time import time
import random
import operator import operator
from itertools import imap, chain, cycle from itertools import imap, chain, cycle
@ -500,24 +501,14 @@ class Irc(IrcCommandDispatcher):
return self.alternateNicks.pop(0) return self.alternateNicks.pop(0)
else: else:
nick = conf.supybot.nick() nick = conf.supybot.nick()
for c in '`_^': ret = nick
if nick.endswith(c): L = list(nick)
if len(nick) >= 9: # The max length on many servers. while len(L) <= 3:
nick = nick.rstrip(c) L.append('`')
continue while ret == nick:
else: L[random.randrange(len(L))] = random.choice('0123456789')
return nick + c ret = ''.join(L)
else: return ret
return nick + c
for c in '`_^':
if nick.startswith(c):
if len(nick) >= 9:
nick = nick.lstrip(c)
continue
else:
return c + nick
else:
return c + nick
def __repr__(self): def __repr__(self):
return '<irclib.Irc object for %s>' % self.network return '<irclib.Irc object for %s>' % self.network
@ -620,6 +611,7 @@ class Irc(IrcCommandDispatcher):
def do433(self, msg): def do433(self, msg):
"""Handles 'nickname already in use' messages.""" """Handles 'nickname already in use' messages."""
newNick = self._getNextNick() newNick = self._getNextNick()
assert newNick != self.nick, 'self._getNextNick() returned same nick.'
log.info('Got 433: %s is in use. Trying %s.', self.nick, newNick) log.info('Got 433: %s is in use. Trying %s.', self.nick, newNick)
self.sendMsg(ircmsgs.nick(newNick)) self.sendMsg(ircmsgs.nick(newNick))
do432 = do433 # 432: Erroneous nickname. do432 = do433 # 432: Erroneous nickname.