Moved BadWords's kick-check to an inFilter rather than doPrivmsg, so ignored people can still be kicked.

This commit is contained in:
Jeremy Fincher 2009-03-12 13:47:12 -05:00
parent ecd2c63650
commit d73b1eecf7
2 changed files with 14 additions and 13 deletions

View File

@ -64,6 +64,20 @@ class BadWords(callbacks.Privmsg):
def inFilter(self, irc, msg):
self.filtering = True
# We need to check for bad words here rather than in doPrivmsg because
# messages don't get to doPrivmsg is the user is ignored.
if msg.command == 'PRIVMSG':
self.updateRegexp()
s = ircutils.stripFormatting(msg.args[1])
channel = msg.args[0]
if ircutils.isChannel(channel) and self.registryValue('kick', channel):
if self.regexp.search(s):
if irc.nick in irc.state.channels[channel].ops:
message = self.registryValue('kick.message', channel)
irc.queueMsg(ircmsgs.kick(channel, msg.nick, message))
else:
self.log.warning('Should kick %s from %s, but not opped.',
msg.nick, channel)
return msg
def updateRegexp(self):
@ -81,19 +95,6 @@ class BadWords(callbacks.Privmsg):
msg = ircmsgs.privmsg(msg.args[0], s, msg=msg)
return msg
def doPrivmsg(self, irc, msg):
self.updateRegexp()
s = ircutils.stripFormatting(msg.args[1])
channel = msg.args[0]
if ircutils.isChannel(channel) and self.registryValue('kick', channel):
if self.regexp.search(s):
if irc.nick in irc.state.channels[channel].ops:
message = self.registryValue('kick.message', channel)
irc.queueMsg(ircmsgs.kick(channel, msg.nick, message))
else:
self.log.warning('Should kick %s from %s, but not opped.',
msg.nick, channel)
def makeRegexp(self, iterable):
s = '(%s)' % '|'.join(map(re.escape, iterable))
if self.registryValue('requireWordBoundaries'):

0
plugins/RSS/our_feedparser.py Executable file → Normal file
View File