aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Evelyn2018-02-04 09:27:54 +0000
committerGravatar Evelyn2018-02-04 09:27:54 +0000
commit840fbcdb10b49861f8d51869dc7b832a16fdf35b (patch)
treed276f056da9e88a6a3d4fc517ac4475d6f993870
parentNR: Eagle endpoints are now under /json/ going forward (diff)
parentFix crash on PRIVMSG with nothing but whitespace (diff)
signature
Merge branch 'master' of github.com:jesopo/bitbot
-rw-r--r--IRCLineHandler.py2
-rw-r--r--ModuleManager.py8
-rw-r--r--modules/channel_op.py18
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")