mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-11-27 05:09:23 +01:00
Allow network-specific nicks. Closes GH-134.
This commit is contained in:
parent
ceabe070a0
commit
e253fe1543
@ -46,12 +46,16 @@ class NickCapture(callbacks.Plugin):
|
|||||||
self.__parent.__init__(irc)
|
self.__parent.__init__(irc)
|
||||||
self.lastIson = 0
|
self.lastIson = 0
|
||||||
|
|
||||||
def _getNick(self):
|
def _getNick(self, network):
|
||||||
|
network_nick = conf.supybot.networks.get(network).nick()
|
||||||
|
if network_nick == '':
|
||||||
return conf.supybot.nick()
|
return conf.supybot.nick()
|
||||||
|
else:
|
||||||
|
return network_nick
|
||||||
|
|
||||||
def __call__(self, irc, msg):
|
def __call__(self, irc, msg):
|
||||||
if irc.afterConnect:
|
if irc.afterConnect:
|
||||||
nick = self._getNick()
|
nick = self._getNick(irc.network)
|
||||||
if nick and not ircutils.strEqual(nick, irc.nick):
|
if nick and not ircutils.strEqual(nick, irc.nick):
|
||||||
# We used to check this, but nicksToHostmasks is never cleared
|
# We used to check this, but nicksToHostmasks is never cleared
|
||||||
# except on reconnects, which can cause trouble.
|
# except on reconnects, which can cause trouble.
|
||||||
@ -76,19 +80,19 @@ class NickCapture(callbacks.Plugin):
|
|||||||
irc.sendMsg(ircmsgs.nick(nick))
|
irc.sendMsg(ircmsgs.nick(nick))
|
||||||
|
|
||||||
def doQuit(self, irc, msg):
|
def doQuit(self, irc, msg):
|
||||||
nick = self._getNick()
|
nick = self._getNick(irc.network)
|
||||||
if ircutils.strEqual(msg.nick, nick):
|
if ircutils.strEqual(msg.nick, nick):
|
||||||
self._sendNick(irc, nick)
|
self._sendNick(irc, nick)
|
||||||
|
|
||||||
def doNick(self, irc, msg):
|
def doNick(self, irc, msg):
|
||||||
nick = self._getNick()
|
nick = self._getNick(irc.network)
|
||||||
if ircutils.strEqual(msg.nick, nick):
|
if ircutils.strEqual(msg.nick, nick):
|
||||||
self._sendNick(irc, nick)
|
self._sendNick(irc, nick)
|
||||||
|
|
||||||
def do303(self, irc, msg):
|
def do303(self, irc, msg):
|
||||||
"""This is returned by the ISON command."""
|
"""This is returned by the ISON command."""
|
||||||
if not msg.args[1]:
|
if not msg.args[1]:
|
||||||
nick = self._getNick()
|
nick = self._getNick(irc.network)
|
||||||
if nick:
|
if nick:
|
||||||
self._sendNick(irc, nick)
|
self._sendNick(irc, nick)
|
||||||
NickCapture = internationalizeDocstring(NickCapture)
|
NickCapture = internationalizeDocstring(NickCapture)
|
||||||
|
@ -83,8 +83,12 @@ class Services(callbacks.Plugin):
|
|||||||
return None
|
return None
|
||||||
return msg
|
return msg
|
||||||
|
|
||||||
def _getNick(self):
|
def _getNick(self, network):
|
||||||
|
network_nick = conf.supybot.networks.get(network).nick()
|
||||||
|
if network_nick == '':
|
||||||
return conf.supybot.nick()
|
return conf.supybot.nick()
|
||||||
|
else:
|
||||||
|
return network_nick
|
||||||
|
|
||||||
def _getNickServPassword(self, nick):
|
def _getNickServPassword(self, nick):
|
||||||
# This should later be nick-specific.
|
# This should later be nick-specific.
|
||||||
@ -100,7 +104,7 @@ class Services(callbacks.Plugin):
|
|||||||
if self.disabled(irc):
|
if self.disabled(irc):
|
||||||
return
|
return
|
||||||
if nick is None:
|
if nick is None:
|
||||||
nick = self._getNick()
|
nick = self._getNick(irc.network)
|
||||||
if nick not in self.registryValue('nicks'):
|
if nick not in self.registryValue('nicks'):
|
||||||
return
|
return
|
||||||
nickserv = self.registryValue('NickServ')
|
nickserv = self.registryValue('NickServ')
|
||||||
@ -122,7 +126,7 @@ class Services(callbacks.Plugin):
|
|||||||
if self.disabled(irc):
|
if self.disabled(irc):
|
||||||
return
|
return
|
||||||
if nick is None:
|
if nick is None:
|
||||||
nick = self._getNick()
|
nick = self._getNick(irc.network)
|
||||||
if nick not in self.registryValue('nicks'):
|
if nick not in self.registryValue('nicks'):
|
||||||
return
|
return
|
||||||
nickserv = self.registryValue('NickServ')
|
nickserv = self.registryValue('NickServ')
|
||||||
@ -150,7 +154,7 @@ class Services(callbacks.Plugin):
|
|||||||
self.__parent.__call__(irc, msg)
|
self.__parent.__call__(irc, msg)
|
||||||
if self.disabled(irc):
|
if self.disabled(irc):
|
||||||
return
|
return
|
||||||
nick = self._getNick()
|
nick = self._getNick(irc.network)
|
||||||
if nick not in self.registryValue('nicks'):
|
if nick not in self.registryValue('nicks'):
|
||||||
return
|
return
|
||||||
nickserv = self.registryValue('NickServ')
|
nickserv = self.registryValue('NickServ')
|
||||||
@ -172,7 +176,7 @@ class Services(callbacks.Plugin):
|
|||||||
def do376(self, irc, msg):
|
def do376(self, irc, msg):
|
||||||
if self.disabled(irc):
|
if self.disabled(irc):
|
||||||
return
|
return
|
||||||
nick = self._getNick()
|
nick = self._getNick(irc.network)
|
||||||
if nick not in self.registryValue('nicks'):
|
if nick not in self.registryValue('nicks'):
|
||||||
return
|
return
|
||||||
nickserv = self.registryValue('NickServ')
|
nickserv = self.registryValue('NickServ')
|
||||||
@ -196,7 +200,7 @@ class Services(callbacks.Plugin):
|
|||||||
def do433(self, irc, msg):
|
def do433(self, irc, msg):
|
||||||
if self.disabled(irc):
|
if self.disabled(irc):
|
||||||
return
|
return
|
||||||
nick = self._getNick()
|
nick = self._getNick(irc.network)
|
||||||
if nick not in self.registryValue('nicks'):
|
if nick not in self.registryValue('nicks'):
|
||||||
return
|
return
|
||||||
if nick and irc.afterConnect:
|
if nick and irc.afterConnect:
|
||||||
@ -210,7 +214,7 @@ class Services(callbacks.Plugin):
|
|||||||
self.channels.append(msg.args[1])
|
self.channels.append(msg.args[1])
|
||||||
|
|
||||||
def doNick(self, irc, msg):
|
def doNick(self, irc, msg):
|
||||||
nick = self._getNick()
|
nick = self._getNick(irc.network)
|
||||||
if ircutils.strEqual(msg.args[0], irc.nick) and \
|
if ircutils.strEqual(msg.args[0], irc.nick) and \
|
||||||
ircutils.strEqual(irc.nick, nick):
|
ircutils.strEqual(irc.nick, nick):
|
||||||
self._doIdentify(irc)
|
self._doIdentify(irc)
|
||||||
@ -218,7 +222,7 @@ class Services(callbacks.Plugin):
|
|||||||
irc.sendMsg(ircmsgs.nick(nick))
|
irc.sendMsg(ircmsgs.nick(nick))
|
||||||
|
|
||||||
def _ghosted(self, s):
|
def _ghosted(self, s):
|
||||||
nick = self._getNick()
|
nick = self._getNick(irc.network)
|
||||||
lowered = s.lower()
|
lowered = s.lower()
|
||||||
return bool('killed' in lowered and (nick in s or 'ghost' in lowered))
|
return bool('killed' in lowered and (nick in s or 'ghost' in lowered))
|
||||||
|
|
||||||
@ -267,7 +271,7 @@ class Services(callbacks.Plugin):
|
|||||||
def doNickservNotice(self, irc, msg):
|
def doNickservNotice(self, irc, msg):
|
||||||
if self.disabled(irc):
|
if self.disabled(irc):
|
||||||
return
|
return
|
||||||
nick = self._getNick()
|
nick = self._getNick(irc.network)
|
||||||
s = ircutils.stripFormatting(msg.args[1].lower())
|
s = ircutils.stripFormatting(msg.args[1].lower())
|
||||||
on = 'on %s' % irc.network
|
on = 'on %s' % irc.network
|
||||||
networkGroup = conf.supybot.networks.get(irc.network)
|
networkGroup = conf.supybot.networks.get(irc.network)
|
||||||
@ -509,7 +513,7 @@ class Services(callbacks.Plugin):
|
|||||||
"""
|
"""
|
||||||
if self.registryValue('NickServ'):
|
if self.registryValue('NickServ'):
|
||||||
if not nick:
|
if not nick:
|
||||||
nick = self._getNick()
|
nick = self._getNick(irc.network)
|
||||||
if ircutils.strEqual(nick, irc.nick):
|
if ircutils.strEqual(nick, irc.nick):
|
||||||
irc.error(_('I cowardly refuse to ghost myself.'))
|
irc.error(_('I cowardly refuse to ghost myself.'))
|
||||||
else:
|
else:
|
||||||
|
11
src/conf.py
11
src/conf.py
@ -139,6 +139,14 @@ class ValidNick(registry.String):
|
|||||||
else:
|
else:
|
||||||
registry.String.setValue(self, v)
|
registry.String.setValue(self, v)
|
||||||
|
|
||||||
|
class ValidNickOrEmpty(ValidNick):
|
||||||
|
"""Value must be a valid IRC nick or empty."""
|
||||||
|
def setValue(self, v):
|
||||||
|
if v != '' and not ircutils.isNick(v):
|
||||||
|
self.error()
|
||||||
|
else:
|
||||||
|
registry.String.setValue(self, v)
|
||||||
|
|
||||||
class ValidNicks(registry.SpaceSeparatedListOf):
|
class ValidNicks(registry.SpaceSeparatedListOf):
|
||||||
Value = ValidNick
|
Value = ValidNick
|
||||||
|
|
||||||
@ -277,6 +285,9 @@ def registerNetwork(name, password='', ssl=False, sasl_username=''):
|
|||||||
registerChannelValue(network.channels, 'key', registry.String('',
|
registerChannelValue(network.channels, 'key', registry.String('',
|
||||||
_("""Determines what key (if any) will be used to join the
|
_("""Determines what key (if any) will be used to join the
|
||||||
channel.""")))
|
channel.""")))
|
||||||
|
registerGlobalValue(network, 'nick', ValidNickOrEmpty('', _("""Determines
|
||||||
|
what nick the bot will use on this network. If empty, defaults to
|
||||||
|
supybot.nick.""")))
|
||||||
sasl = registerGroup(network, 'sasl')
|
sasl = registerGroup(network, 'sasl')
|
||||||
registerGlobalValue(sasl, 'username', registry.String(sasl_username,
|
registerGlobalValue(sasl, 'username', registry.String(sasl_username,
|
||||||
_("""Determines what SASL username will be used on %s. This should
|
_("""Determines what SASL username will be used on %s. This should
|
||||||
|
@ -859,6 +859,9 @@ class Irc(IrcCommandDispatcher):
|
|||||||
def _setNonResettingVariables(self):
|
def _setNonResettingVariables(self):
|
||||||
# Configuration stuff.
|
# Configuration stuff.
|
||||||
self.nick = conf.supybot.nick()
|
self.nick = conf.supybot.nick()
|
||||||
|
network_nick = conf.supybot.networks.get(self.network).nick()
|
||||||
|
if network_nick != '':
|
||||||
|
self.nick = network_nick
|
||||||
self.user = conf.supybot.user()
|
self.user = conf.supybot.user()
|
||||||
self.ident = conf.supybot.ident()
|
self.ident = conf.supybot.ident()
|
||||||
self.alternateNicks = conf.supybot.nick.alternates()[:]
|
self.alternateNicks = conf.supybot.nick.alternates()[:]
|
||||||
@ -914,10 +917,17 @@ class Irc(IrcCommandDispatcher):
|
|||||||
if self.alternateNicks:
|
if self.alternateNicks:
|
||||||
nick = self.alternateNicks.pop(0)
|
nick = self.alternateNicks.pop(0)
|
||||||
if '%s' in nick:
|
if '%s' in nick:
|
||||||
|
network_nick = conf.supybot.networks.get(self.network).nick()
|
||||||
|
if network_nick == '':
|
||||||
nick %= conf.supybot.nick()
|
nick %= conf.supybot.nick()
|
||||||
|
else:
|
||||||
|
nick %= network_nick
|
||||||
return nick
|
return nick
|
||||||
else:
|
else:
|
||||||
nick = conf.supybot.nick()
|
nick = conf.supybot.nick()
|
||||||
|
network_nick = conf.supybot.networks.get(self.network).nick()
|
||||||
|
if network_nick != '':
|
||||||
|
nick = network_nick
|
||||||
ret = nick
|
ret = nick
|
||||||
L = list(nick)
|
L = list(nick)
|
||||||
while len(L) <= 3:
|
while len(L) <= 3:
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
"""stick the various versioning attributes in here, so we only have to change
|
"""stick the various versioning attributes in here, so we only have to change
|
||||||
them once."""
|
them once."""
|
||||||
version = '0.83.4.1+limnoria (2011-10-27T11:56:13+0200)'
|
version = '0.83.4.1+limnoria (2011-10-27T12:31:37+0200)'
|
||||||
|
Loading…
Reference in New Issue
Block a user