diff options
| author | 2018-09-06 17:58:53 +0100 | |
|---|---|---|
| committer | 2018-09-06 17:58:53 +0100 | |
| commit | 25ef1965fdbd278056a12bbdcbdc0fda2b5a42f4 (patch) | |
| tree | 112f265cf340087190ab1644987a6b7ab85fabad /modules/auto_mode.py | |
| parent | Don't strip out empty arguments on commands.py (diff) | |
| signature | ||
Finally implement auto_mode.py!
Diffstat (limited to 'modules/auto_mode.py')
| -rw-r--r-- | modules/auto_mode.py | 72 |
1 files changed, 61 insertions, 11 deletions
diff --git a/modules/auto_mode.py b/modules/auto_mode.py index 08fd94de..9cdd47a8 100644 --- a/modules/auto_mode.py +++ b/modules/auto_mode.py @@ -1,23 +1,73 @@ import Utils class Module(object): + _name = "AutoMode" def __init__(self, bot, events, exports): self.bot = bot + events.on("received.join").hook(self.on_join) + + events.on("received.command.addop").hook(self.add_op, + require_mode="o", min_args=1, channel_only=True, + usage="<nickname>", help="Add a user to the automode op list") + events.on("received.command.removeop").hook(self.remove_op, + require_mode="o", min_args=1, channel_only=True, + usage="<nickname>", help="Remove a user from the automode " + "op list") + + events.on("received.command.addvoice").hook(self.add_voice, + require_mode="o", min_args=1, channel_only=True, + usage="<nickname>", help="Add a user to the automode voice list") + events.on("received.command.removevoice").hook(self.remove_voice, + require_mode="o", min_args=1, channel_only=True, + usage="<nickname>", help="Remove a user from the automode " + "voice list") + exports.add("channelset", {"setting": "automode", "help": "Disable/Enable automode", "validate": Utils.bool_or_none}) - events.on("channel").on("mode").hook(self.on_mode) - events.on("received").on("join").hook(self.on_join) - - def on_mode(self, event): - if event["channel"].get_setting("automode", False): - remove = event["remove"] - channel = event["channel"] - mode = event["mode"] - args = event["mode_args"] - def on_join(self, event): if event["channel"].get_setting("automode", False): - pass + modes = event["channel"].get_user_setting(event["user"].get_id(), + "automodes", []) + if modes: + event["channel"].send_mode("+%s" % "".join(modes), + " ".join([event["user"].nickname for mode in modes])) + + def _add_mode(self, event, mode, mode_name): + target_user = event["server"].get_user(event["args_split"][0]) + automodes = event["target"].get_user_setting(target_user.get_id(), + "automodes", []) + if mode in automodes: + event["stderr"].write("'%s' already has automode %s" % ( + target_user.nickname, mode_name)) + else: + automodes.append("o") + event["target"].set_user_setting(target_user.get_id(), "automodes", + automodes) + event["stdout"].write("Added automode %s for '%s'" % ( + mode_name, target_user.nickname)) + def _remove_mode(self, event, mode, mode_name): + target_user = event["server"].get_user(event["args_split"][0]) + automodes = event["target"].get_user_setting(target_user.get_id(), + "automodes", []) + if not mode in automodes: + event["stderr"].write("'%s' doesn't have automode %s" % ( + target_user.nickname, mode_name)) + else: + automodes.remove("o") + event["target"].set_user_setting(target_user.get_id(), "automodes", + automodes) + event["stdout"].write("Removed automode %s from '%s'" % ( + mode_name, target_user.nickname)) + + def add_op(self, event): + self._add_mode(event, "o", "op") + def remove_op(self, event): + self._remove_mode(event, "o", "op") + + def add_voice(self, event): + self._add_mode(event, "v", "voice") + def remove_voice(self, event): + self._remove_mode(event, "v", "voice") |
