From dfbf74ba62ab8ff10ad43128a4f6fa64b332fddb Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Sat, 22 Sep 2012 17:22:35 +0200 Subject: [PATCH] AutoMode: Prevent traceback if a unregistered user joins. --- plugins/AutoMode/plugin.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/plugins/AutoMode/plugin.py b/plugins/AutoMode/plugin.py index fbe440e8d..ed6bfe7f4 100644 --- a/plugins/AutoMode/plugin.py +++ b/plugins/AutoMode/plugin.py @@ -87,15 +87,11 @@ class AutoMode(callbacks.Plugin): schedule.addEvent(f, time.time() + delay) else: f() - try: - do('op') - if 'h' in irc.state.supported['prefix']: - do('halfop') - do('voice') - except Continue: - return - finally: - user = ircdb.users.getUser(ircdb.users.getUserId(msg.prefix)) + def extra_modes(): + try: + user = ircdb.users.getUser(ircdb.users.getUserId(msg.prefix)) + except KeyError: + return pattern = re.compile('-|\+') for item in self.registryValue('extra', channel): try: @@ -114,6 +110,15 @@ class AutoMode(callbacks.Plugin): ([msg.nick]*len(pattern.sub('', modes))) schedule_msg(ircmsgs.mode(channel, modes), lambda :False) break + try: + do('op') + if 'h' in irc.state.supported['prefix']: + do('halfop') + do('voice') + except Continue: + return + finally: + extra_modes() c = ircdb.channels.getChannel(channel) if c.checkBan(msg.prefix) and self.registryValue('ban', channel): period = self.registryValue('ban.period', channel)