3
0
mirror of https://github.com/jlu5/PyLink.git synced 2024-11-01 09:19:23 +01:00

clientbot: handle nick conflicts on connect (43x)

This commit is contained in:
James Lu 2016-07-23 12:48:26 -07:00
parent a662f93e15
commit 3ec11680ea

View File

@ -69,7 +69,8 @@ class ClientbotWrapperProtocol(Protocol):
# This is a really gross hack to get the defined NICK/IDENT/HOST/GECOS.
# But this connection stuff is done before any of the spawnClient stuff in
# services_support fires.
f('NICK %s' % (self.irc.serverdata.get('pylink_nick') or conf.conf["bot"].get("nick", "PyLink")))
self.conf_nick = self.irc.serverdata.get('pylink_nick') or conf.conf["bot"].get("nick", "PyLink")
f('NICK %s' % (self.conf_nick))
ident = self.irc.serverdata.get('pylink_ident') or conf.conf["bot"].get("ident", "pylink")
f('USER %s 8 * %s' % (ident, # TODO: per net realnames or hostnames aren't implemented yet.
conf.conf["bot"].get("realname", "PyLink Clientbot")))
@ -435,6 +436,16 @@ class ClientbotWrapperProtocol(Protocol):
return {'channel': channel, 'users': users, 'modes': self.irc.channels[channel].modes,
'parse_as': "JOIN"}
def handle_433(self, source, command, args):
# <- :millennium.overdrivenetworks.com 433 * ice :Nickname is already in use.
# HACK: I don't like modifying the config entries raw, but this is difficult because
# irc.pseudoclient doesn't exist as an attribute until we get run the ENDBURST stuff
# in service_support (this is mapped to 005 here).
self.conf_nick += '_'
self.irc.serverdata['pylink_nick'] = self.conf_nick
self.irc.send('NICK %s' % self.conf_nick)
handle_432 = handle_437 = handle_433
def handle_join(self, source, command, args):
"""
Handles incoming JOINs.