diff -rupN tweak/Bantracker/plugin.py tweakpatch/Bantracker/plugin.py --- tweak/Bantracker/plugin.py 2009-12-11 11:48:18.000000000 -0500 +++ tweakpatch/Bantracker/plugin.py 2009-12-11 11:52:53.000000000 -0500 @@ -438,29 +438,29 @@ class Bantracker(callbacks.Plugin): self.doKickban(irc, channel, args[2].replace(':',''), msg.nick, ' '.join(args[3:])[1:-1].strip(), extra_comment=msg.prefix) def doMode(self, irc, msg): + user = None + if msg.tagged('identified'): + try: + user = ircdb.users.getUser(msg.prefix[:msg.prefix.find('!')].lower()) + except: + pass channel = msg.args[0] if irc.isChannel(channel) and msg.args[1:]: self.doLog(irc, channel, '*** %s sets mode: %s %s\n' % (msg.nick or msg.prefix, msg.args[1], ' '.join(msg.args[2:]))) - if 'b' in msg.args[1] or 'd' in msg.args[1]: - i = 2 - plusmin = False - for c in msg.args[1]: - if c == '-': plusmin = False - elif c == '+': plusmin = True - else: - if c == 'b': - if plusmin: - comment = self.getHostFromBan(irc, msg, msg.args[i]) - self.doKickban(irc, channel, msg.nick, msg.args[i], extra_comment=comment) - else: self.doUnban(irc,channel, msg.nick, msg.args[i]) - i += 1 - if c == 'd': - if plusmin: self.doKickban(irc, channel, msg.nick, msg.args[i] + ' (realname)') - else: self.doUnban(irc,channel, msg.nick, msg.args[i] + ' (realname)') - i += 1 + modes = ircutils.separateModes(msg.args[1:]) + for param in modes: + if param == '+b': + comment = self.getHostFromBan(irc, msg, msg.args[i]) + self.doKickban(irc, channel, msg.nick, msg.args[i], extra_comment=comment) + elif param == '-b': + self.doUnban(irc,channel, msg.nick, msg.args[i]) + elif param == '+d': + self.doKickban(irc, channel, msg.nick, msg.args[i] + ' (realname)') + elif param == '-d': + self.doUnban(irc,channel, msg.nick, msg.args[i] + ' (realname)') def getHostFromBan(self, irc, msg, mask): if irc not in self.lastStates: