diff --git a/plugins/AutoMode/config.py b/plugins/AutoMode/config.py index 95e0692c9..4c2e2dc40 100644 --- a/plugins/AutoMode/config.py +++ b/plugins/AutoMode/config.py @@ -75,5 +75,8 @@ conf.registerChannelValue(AutoMode, 'delay', registry.Integer(0, _("""Determines how many seconds the bot will wait before applying a mode. Has no effect on bans."""))) +conf.registerChannelValue(AutoMode, 'extra', + registry.SpaceSeparatedListOfStrings([], _("""Extra modes that will be + applied to a user. Example syntax: user1+o-v user2+v user3-v"""))) # vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79: diff --git a/plugins/AutoMode/plugin.py b/plugins/AutoMode/plugin.py index 90b357df3..16bd18fab 100644 --- a/plugins/AutoMode/plugin.py +++ b/plugins/AutoMode/plugin.py @@ -108,6 +108,22 @@ 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 + + Class = AutoMode