fixed case where bot doesn't deop/devoice someone quieted via chanserv

This commit is contained in:
Nicolas Coevoet 2014-07-23 10:17:48 +02:00
parent 974f3ce4cd
commit 51d628eeab

View File

@ -841,6 +841,8 @@ class Chan (object):
# eqIb(+*) (-ov) pattern prefix when # eqIb(+*) (-ov) pattern prefix when
# mode : eqIb -ov + ? # mode : eqIb -ov + ?
l = self.getItemsFor(mode) l = self.getItemsFor(mode)
if not self.syn:
checkUser = False
if not value in l: if not value in l:
i = Item() i = Item()
i.channel = self.name i.channel = self.name
@ -2724,17 +2726,19 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
tolift.append(active) tolift.append(active)
kicked = False kicked = False
if m in self.registryValue('kickMode',channel=channel) and msg.nick == irc.nick: # and not value.startswith(self.getIrcdExtbans(irc)) works for unreal if m in self.registryValue('kickMode',channel=channel) and msg.nick == irc.nick: # and not value.startswith(self.getIrcdExtbans(irc)) works for unreal
if nick in irc.state.channels[channel].users and nick != irc.nick: if msg.nick == irc.nick or msg.nick == 'ChanServ':
chan.action.enqueue(ircmsgs.kick(channel,nick,self.registryValue('kickMessage',channel=channel))) if nick in irc.state.channels[channel].users and nick != irc.nick:
self.forceTickle = True chan.action.enqueue(ircmsgs.kick(channel,nick,self.registryValue('kickMessage',channel=channel)))
kicked = True self.forceTickle = True
if not kicked and m in self.registryValue('modesToAsk',channel=channel) and self.registryValue('doActionAgainstAffected',channel=channel) and msg.nick == irc.nick: kicked = True
if nick in irc.state.channels[channel].ops and not nick == irc.nick: if not kicked and m in self.registryValue('modesToAsk',channel=channel) and self.registryValue('doActionAgainstAffected',channel=channel):
chan.queue.enqueue(('-o',nick)) if msg.nick == irc.nick or msg.nick == 'ChanServ':
if nick in irc.state.channels[channel].halfops and not nick == irc.nick: if nick in irc.state.channels[channel].ops and not nick == irc.nick:
chan.queue.enqueue(('-h',nick)) chan.queue.enqueue(('-o',nick))
if nick in irc.state.channels[channel].voices and not nick == irc.nick: if nick in irc.state.channels[channel].halfops and not nick == irc.nick:
chan.queue.enqueue(('-v',nick)) chan.queue.enqueue(('-h',nick))
if nick in irc.state.channels[channel].voices and not nick == irc.nick:
chan.queue.enqueue(('-v',nick))
# bot just got op # bot just got op
if m == 'o' and value == irc.nick: if m == 'o' and value == irc.nick: