From e96c983dca023381ca1924cc851612fa38110292 Mon Sep 17 00:00:00 2001 From: jesopo Date: Fri, 12 Oct 2018 10:57:34 +0100 Subject: [PATCH] Check a channel's automode when automode is turned on in modules/auto_mode.py --- modules/auto_mode.py | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/modules/auto_mode.py b/modules/auto_mode.py index f3c2d119..dc8cff38 100644 --- a/modules/auto_mode.py +++ b/modules/auto_mode.py @@ -26,17 +26,12 @@ class Module(ModuleManager.BaseModule): for channel in event["user"].channels: self._check_modes(channel, event["user"]) - @utils.hook("received.command.syncmodes", channel_only=True) - def sync_modes(self, event): - """ - :help: Check/sync user modes - :require_mode: o - """ + def _check_channel(self, channel): modes = [] - for user in event["target"].users: - user_modes = self._get_modes(event["target"], user) + for user in channel.users: + user_modes = self._get_modes(channel, user) for user_mode in user_modes: - if not event["target"].has_mode(user, user_mode): + if not channel.has_mode(user, user_mode): modes.append([user_mode, user.nickname]) # break up in to chunks of (maximum) 3 @@ -45,8 +40,19 @@ class Module(ModuleManager.BaseModule): for chunk in mode_chunks: modes = [item[0] for item in chunk] nicknames = [item[1] for item in chunk] - event["target"].send_mode( + channel.send_mode( "+%s" % "".join(modes), " ".join(nicknames)) + @utils.hook("received.command.syncmodes", channel_only=True) + def sync_modes(self, event): + """ + :help: Check/sync user modes + :require_mode: o + """ + self._check_channel(event["target"]) + @utils.hook("set.channelset.automode") + def on_automode_set(self, event): + if event["value"]: + self._check_channel(event["target"]) def _add_mode(self, event, mode, mode_name): target_user = event["server"].get_user(event["args_split"][0])