From a8415c8d7575e6a8e9d072dd98b981f513bc8e3a Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Mon, 17 Sep 2012 19:27:18 +0200 Subject: [PATCH] AutoMode: Fix commit 4eb674843e17 (extra modes). --- plugins/AutoMode/plugin.py | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/plugins/AutoMode/plugin.py b/plugins/AutoMode/plugin.py index 16bd18fab..fbe440e8d 100644 --- a/plugins/AutoMode/plugin.py +++ b/plugins/AutoMode/plugin.py @@ -28,8 +28,10 @@ # POSSIBILITY OF SUCH DAMAGE. ### +import re import time +import supybot.log as log import supybot.conf as conf import supybot.ircdb as ircdb import supybot.ircmsgs as ircmsgs @@ -92,6 +94,26 @@ class AutoMode(callbacks.Plugin): do('voice') except Continue: return + finally: + user = ircdb.users.getUser(ircdb.users.getUserId(msg.prefix)) + pattern = re.compile('-|\+') + for item in self.registryValue('extra', channel): + try: + username, modes = pattern.split(item, maxsplit=1) + modes = item[len(username)] + modes + except ValueError: # No - or + in item + log.error(('%r is not a valid item for ' + 'supybot.plugins.AutoMode.extra') % item) + continue + if username != user.name: + continue + else: + self.log.info('Scheduling auto-modes %s of %s in %s.', + modes, msg.prefix, channel) + modes = [modes] + \ + ([msg.nick]*len(pattern.sub('', modes))) + schedule_msg(ircmsgs.mode(channel, modes), lambda :False) + break c = ircdb.channels.getChannel(channel) if c.checkBan(msg.prefix) and self.registryValue('ban', channel): period = self.registryValue('ban.period', channel) @@ -108,20 +130,6 @@ class AutoMode(callbacks.Plugin): irc.queueMsg(ircmsgs.ban(channel, banmask)) irc.queueMsg(ircmsgs.kick(channel, msg.nick)) - user = ircdb.users.getUser(ircdb.users.getUserId(msg.prefix)) - pattern = re.compile('-\+') - for item in self.registryValue('extra', channel): - try: - username, modes = pattern.split(item, maxsplit=1) - except ValueError: # No - or + in item - log.error('%r is not a valid item for ' - 'supybot.plugins.AutoMode.extra') - continue - if username != user.name: - continue - else: - schedule_msg(ircmsgs.mode(msg.nick, modes), lambda :True) - break