diff options
| -rw-r--r-- | IRCLineHandler.py | 2 | ||||
| -rw-r--r-- | ModuleManager.py | 8 | ||||
| -rw-r--r-- | modules/channel_op.py | 18 |
3 files changed, 18 insertions, 10 deletions
diff --git a/IRCLineHandler.py b/IRCLineHandler.py index ca54d7f5..1b6014d2 100644 --- a/IRCLineHandler.py +++ b/IRCLineHandler.py @@ -291,7 +291,7 @@ def handle_PRIVMSG(data): server = data.server nickname, username, hostname = Utils.seperate_hostmask(data.prefix) user = server.get_user(nickname) - message = data.args[1] + message = "" if len(data.args) < 2 else data.args[1] message_split = message.split(" ") target = data.args[0] action = message.startswith("\01ACTION ") and message.endswith("\01") diff --git a/ModuleManager.py b/ModuleManager.py index fdc2108d..2354a799 100644 --- a/ModuleManager.py +++ b/ModuleManager.py @@ -44,10 +44,10 @@ class ModuleManager(object): break import_name = "bitbot_%s" % name module = imp.load_source(import_name, filename) - assert hasattr(module, "Module" - ), "module '%s' doesn't have a Module class." - assert inspect.isclass(module.Module - ), "module '%s' has a Module attribute but it is not a class." + if not hasattr(module, "Module"): + raise ImportError("module '%s' doesn't have a Module class.") + if not inspect.isclass(module.Module): + raise ImportError("module '%s' has a Module attribute but it is not a class.") module_object = module.Module(self.bot) if not hasattr(module_object, "_name"): module_object._name = name.title() diff --git a/modules/channel_op.py b/modules/channel_op.py index d24314d5..03d97426 100644 --- a/modules/channel_op.py +++ b/modules/channel_op.py @@ -29,7 +29,11 @@ class Module(object): validate=Utils.int_or_none) bot.events.on("postboot").on("configure").on( "channelset").call(setting="highlight-spam-protection", - help="Enable/Disable highligh spam protection", + help="Enable/Disable highlight spam protection", + validate=Utils.bool_or_none) + bot.events.on("postboot").on("configure").on( + "channelset").call(setting="highlight-spam-ban", + help="Enable/Disable banning highlight spammers instead of just kicking", validate=Utils.bool_or_none) def kick(self, event): @@ -85,7 +89,11 @@ class Module(object): ) + [event["server"].nickname] if len(set(nicknames) & set(event["message_split"])) >= event["channel"].get_setting( "highlight-spam-threshold", 10): - if event["channel"].get_setting("highlight-spam-protection", False): - if not event["channel"].mode_or_above(event["user"].nickname, "v"): - event["channel"].send_kick(event["user"].nickname, - "highlight spam detected") + protection_enabled = event["channel"].get_setting("highlight-spam-protection", False) + has_mode = event["channel"].mode_or_above(event["user"].nickname, "v") + should_ban = event["channel"].get_setting("highlight-spam-ban", False) + if protection_enabled and not has_mode: + if should_ban: + event["channel"].send_ban("*!%s@%s" % (event["user"].username, + event["user"].hostname)) + event["channel"].send_kick(event["user"].nickname, "highlight spam detected") |
