Mercurial > xib
changeset 64:8fc496eaa17b
Handle IRC "nickcollision" event
Signed-off-by: Charly COSTE <changaco@changaco.net>
author | Charly COSTE <changaco@changaco.net> |
---|---|
date | Sun, 30 Aug 2009 01:18:34 +0200 |
parents | 71508f22edb4 |
children | 75604669fcd9 |
files | bot.py bridge.py irclib.py participant.py |
diffstat | 4 files changed, 19 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/bot.py +++ b/bot.py @@ -462,6 +462,9 @@ class bot(Thread): if event.eventtype() == 'nicknameinuse': connection._call_nick_callbacks('nicknameinuse') return + if event.eventtype() == 'nickcollision': + connection._call_nick_callbacks('nickcollision') + return if event.eventtype() == 'erroneusnickname': connection._call_nick_callbacks('erroneusnickname') return
--- a/bridge.py +++ b/bridge.py @@ -84,6 +84,9 @@ class bridge: if error == 'nicknameinuse': self.bot.error('[Error] "'+self.bot.nickname+'" is already used in the IRC chan or reserved on the IRC server of bridge "'+str(self)+'"') raise Exception('[Error] "'+self.bot.nickname+'" is already used in the IRC chan or reserved on the IRC server of bridge "'+str(self)+'"') + if error == 'nickcollision': + self.bot.error('[Error] "'+self.bot.nickname+'" is already used or reserved on the IRC server of bridge "'+str(self)+'"') + raise Exception('[Error] "'+self.bot.nickname+'" is already used or reserved on the IRC server of bridge "'+str(self)+'"') elif error == 'erroneusnickname': self.bot.error('[Error] "'+self.bot.nickname+'" got "erroneusnickname" on bridge "'+str(self)+'"') raise Exception('[Error] "'+self.bot.nickname+'" got "erroneusnickname" on bridge "'+str(self)+'"') @@ -266,7 +269,7 @@ class bridge: if p.protocol == 'xmpp': i += 1 if p.irc_connection != None: - p.irc_connection.close('Bridge is switching to limited mode', volontary=True) + p.irc_connection.close('Bridge is switching to limited mode') p.irc_connection = None self.irc_connections_limit = i self.bot.error('===> Bridge is switching to limited mode. Limit seems to be '+str(self.irc_connections_limit)+' on "'+self.irc_server+'".') @@ -289,7 +292,7 @@ class bridge: # Close IRC connection if not used by an other bridge, just leave the room otherwise self.irc_connection.used_by -= 1 if self.irc_connection.used_by < 1: - self.irc_connection.close('Removing bridge', volontary=True) + self.irc_connection.close('Removing bridge') else: self.irc_connection.part('Removing bridge') del self.irc_connection
--- a/irclib.py +++ b/irclib.py @@ -494,7 +494,7 @@ class ServerConnection(Connection): self.nick_callbacks.append(callback) - def close(self, message, volontary=False): + def close(self, message, volontary=True): """Close the connection. This method closes the connection permanently; after it has
--- a/participant.py +++ b/participant.py @@ -82,19 +82,25 @@ class participant: self.bridge.bot.error('===> Debug: "'+self.nickname+'" is already used in the IRC chan of bridge "'+str(self.bridge)+'"', debug=True) self.bridge.say('[Warning] The nickname "'+self.nickname+'" is used on both rooms or reserved on the IRC server, please avoid that if possible') if self.irc_connection != None: - self.irc_connection.close('', volontary=True) + self.irc_connection.close('') + self.irc_connection = None + elif error == 'nickcollision': + self.bridge.bot.error('===> Debug: "'+self.nickname+'" is already used or reserved on the IRC server of bridge "'+str(self.bridge)+'"', debug=True) + self.bridge.say('[Warning] The nickname "'+self.nickname+'" is already used or reserved on the IRC server, please avoid that if possible') + if self.irc_connection != None: + self.irc_connection.close('') self.irc_connection = None elif error == 'erroneusnickname': self.bridge.bot.error('===> Debug: "'+self.nickname+'" got "erroneusnickname" on bridge "'+str(self.bridge)+'"', debug=True) self.bridge.say('[Warning] The nickname "'+self.nickname+'" contains unauthorized characters and cannot be used in the IRC channel, please avoid that if possible') if self.irc_connection != None: - self.irc_connection.close('', volontary=True) + self.irc_connection.close('') self.irc_connection = None elif error == 'nicknametoolong': self.bridge.bot.error('===> Debug: "'+self.nickname+'" got "nicknametoolong" on bridge "'+str(self.bridge)+'"', debug=True) self.bridge.say('[Warning] The nickname "'+self.nickname+'" is too long (limit seems to be '+str(arguments[0])+') and cannot be used in the IRC channel, please avoid that if possible') if self.irc_connection != None: - self.irc_connection.close('', volontary=True) + self.irc_connection.close('') self.irc_connection = None @@ -195,7 +201,7 @@ class participant: if self.irc_connection != None: self.irc_connection.used_by -= 1 if self.irc_connection.used_by < 1: - self.irc_connection.close(message, volontary=True) + self.irc_connection.close(message) self.irc_connection = None self.nickname = None