From 572ea85f1eb96eb777e4d9a056bb7aa64d5c64f5 Mon Sep 17 00:00:00 2001 From: jesopo Date: Sun, 9 Sep 2018 09:06:17 +0100 Subject: Better indentation in commands.py --- modules/commands.py | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/modules/commands.py b/modules/commands.py index 2567880b..79631a8c 100644 --- a/modules/commands.py +++ b/modules/commands.py @@ -190,14 +190,10 @@ class Module(object): event["stdout"].write("Commands: %s" % ", ".join(help_available)) def usage(self, event): + command_prefix = "" if event["is_channel"]: command_prefix = event["target"].get_setting("command-prefix", - event["server"].get_setting( - "command-prefix", - "!")) - else: - command_prefix = "" - + event["server"].get_setting("command-prefix", "!")) command = event["args_split"][0].lower() if command in self.events.on("received").on( @@ -205,9 +201,7 @@ class Module(object): hooks = self.events.on("received").on("command").on(command).get_hooks() if hooks and "usage" in hooks[0].kwargs: event["stdout"].write("Usage: %s%s %s" % (command_prefix, - command, - hooks[0].kwargs[ - "usage"])) + command, hooks[0].kwargs["usage"])) else: event["stderr"].write("No usage help available for %s" % command) else: -- cgit v1.3.1-10-gc9f91 From f2626a829b2c6d12ba4df330a0b1cc57d63fba31 Mon Sep 17 00:00:00 2001 From: jesopo Date: Sun, 9 Sep 2018 09:26:56 +0100 Subject: Switch set.py to use delimited events --- modules/set.py | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/modules/set.py b/modules/set.py index a389cc8b..a9a677ae 100644 --- a/modules/set.py +++ b/modules/set.py @@ -5,25 +5,22 @@ class Module(object): self.bot = bot self.exports = exports - events.on("received").on("command").on("set").hook( - self.set, help="Set a specified user setting", - usage=" ") - events.on("received").on("command").on("get").hook( - self.get, help="Get a specified user setting", - usage="", min_args=1) + events.on("received.command.set").hook(self.set, + usage=" ", help="Set a specified user setting") + events.on("received.command.get").hook(self.get, min_args=1, + usage="", help="Get a specified user setting") - events.on("received").on("command").on("channelset" - ).hook(self.channel_set, channel_only=True, - help="Set a specified setting for the current channel", - usage=" ", require_mode="o") - events.on("received").on("command").on("channelsetoverride" - ).hook(self.channel_set, channel_only=True, - help="Set a specified setting for the current channel", - usage=" ", permission="channelsetoverride") - events.on("received").on("command").on("channelget" - ).hook(self.channel_get, channel_only=True, - help="Get a specified setting for the current channel", - usage="", min_args=1, require_mode="o") + events.on("received.command.channelset").hook(self.channel_set, + channel_only=True, usage=" ", require_mode="o", + help="Set a specified setting for the current channel") + events.on("received.command.channelsetoverride").hook( + self.channel_set, channel_only=True, usage=" ", + permission="channelsetoverride", + help="Set a specified setting for the current channel") + events.on("received.command.channelget").hook(self.channel_get, + channel_only=True, usage="", min_args=1, + require_mode="o", help="Get a specified setting for the current " + "channel") def _set(self, settings, event, target): settings_dict = dict([(setting["setting"], setting -- cgit v1.3.1-10-gc9f91 From 0f292f461774c7ae04f97b63c1f13619a6d79b87 Mon Sep 17 00:00:00 2001 From: jesopo Date: Sun, 9 Sep 2018 09:34:55 +0100 Subject: Add !serverset and !serverget --- modules/commands.py | 8 +++++--- modules/set.py | 24 +++++++++++++++++++----- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/modules/commands.py b/modules/commands.py index 79631a8c..21b0f361 100644 --- a/modules/commands.py +++ b/modules/commands.py @@ -64,13 +64,15 @@ class Module(object): help="Unignore commands from a given user", usage="", permission="unignore") - exports.add("channelset", {"setting": "command-prefix", - "help": "Set the command prefix used in this channel"}) - events.on("new").on("user", "channel").hook(self.new) events.on("send").on("stdout").hook(self.send_stdout) events.on("send").on("stderr").hook(self.send_stderr) + exports.add("channelset", {"setting": "command-prefix", + "help": "Set the command prefix used in this channel"}) + exports.add("serverset", {"setting": "identity-mechanism", + "help": "Set the identity mechanism for this server"}) + def new(self, event): if "user" in event: target = event["user"] diff --git a/modules/set.py b/modules/set.py index a9a677ae..6735b34a 100644 --- a/modules/set.py +++ b/modules/set.py @@ -22,6 +22,13 @@ class Module(object): require_mode="o", help="Get a specified setting for the current " "channel") + events.on("received.command.serverset").hook(self.server_set, + usage=" ", permission="serverset", + help="Set a specified setting for the current server") + events.on("received.command.serverget").hook(self.server_get, + usage="", min_args=1, permission="serverget", + help="Get a specified setting for the current server") + def _set(self, settings, event, target): settings_dict = dict([(setting["setting"], setting ) for setting in settings]) @@ -47,8 +54,10 @@ class Module(object): self._set(self.exports.get_all("set"), event, event["user"]) def channel_set(self, event): - self._set(self.exports.get_all("channelset"), event, - event["target"]) + self._set(self.exports.get_all("channelset"), event, event["target"]) + + def server_set(self, event): + self._set(self.exports.get_all("serverset"), event, event["server"]) def _get(self, event, setting, qualifier, value): if not value == None: @@ -57,12 +66,17 @@ class Module(object): else: event["stdout"].write("'%s' has no value set" % setting) + def get(self, event): + setting = event["args_split"][0] + self._get(event, setting, "", event["user"].get_setting( + setting, None)) + def channel_get(self, event): setting = event["args_split"][0] self._get(event, setting, " for %s" % event["target"].name, event["target"].get_setting(setting, None)) - def get(self, event): + def server_get(self, event): setting = event["args_split"][0] - self._get(event, setting, "", event["user"].get_setting( - setting, None)) + self._get(event, setting, " for %s" % event["server"].name, + event["server"].get_setting(setting, None)) -- cgit v1.3.1-10-gc9f91 From 2346eeffd0c92c0c00fe00ac999df737dac28e1d Mon Sep 17 00:00:00 2001 From: jesopo Date: Sun, 9 Sep 2018 09:38:35 +0100 Subject: Don't add a qualifier for server settings --- modules/set.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/set.py b/modules/set.py index 6735b34a..86cbe6bf 100644 --- a/modules/set.py +++ b/modules/set.py @@ -78,5 +78,5 @@ class Module(object): def server_get(self, event): setting = event["args_split"][0] - self._get(event, setting, " for %s" % event["server"].name, - event["server"].get_setting(setting, None)) + self._get(event, setting, "", event["server"].get_setting( + setting, None)) -- cgit v1.3.1-10-gc9f91 From 8b7cecda04c3371cb3ba933a4380bd6aa34997fc Mon Sep 17 00:00:00 2001 From: jesopo Date: Sun, 9 Sep 2018 10:04:21 +0100 Subject: Add nickserv-password and sasl to !serverset --- modules/nickserv.py | 16 +++++----------- modules/sasl.py | 8 ++++++++ 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/modules/nickserv.py b/modules/nickserv.py index 5b7e9087..b4aeb938 100644 --- a/modules/nickserv.py +++ b/modules/nickserv.py @@ -3,12 +3,11 @@ import EventManager class Module(object): def __init__(self, bot, events, exports): - events.on("received").on("numeric").on("001" - ).hook(self.on_connect, priority=EventManager.PRIORITY_URGENT) - events.on("received").on("command").on("setnickserv" - ).hook(self.set_nickserv, min_args=1, permission="setnickserv", - help="Set bot's nickserv password", usage="", - private_only=True) + events.on("received").on("numeric").on("001").hook(self.on_connect, + priority=EventManager.PRIORITY_URGENT) + + exports.add("serverset", {"setting": "nickserv-password", + "help": "Set the nickserv password for this server"}) def on_connect(self, event): nickserv_password = event["server"].get_setting( @@ -17,8 +16,3 @@ class Module(object): event["server"].attempted_auth = True event["server"].send_message("nickserv", "identify %s" % nickserv_password) - - def set_nickserv(self, event): - nickserv_password = event["args"] - event["server"].set_setting("nickserv-password", nickserv_password) - event["stdout"].write("Nickserv password saved") diff --git a/modules/sasl.py b/modules/sasl.py index 32e20137..dee74133 100644 --- a/modules/sasl.py +++ b/modules/sasl.py @@ -8,6 +8,14 @@ class Module(object): events.on("received.authenticate").hook(self.on_authenticate) events.on("received.numeric.903").hook(self.sasl_success) + exports.add("serverset", {"setting": "sasl", + "help": "Set the sasl username/password for this server", + "validate": self._validate}) + + def _validate(self, s): + if " " in s: + return s.split(" ", 1) + def on_cap(self, event): has_sasl = "sasl" in event["capabilities"] has_mechanisms = has_sasl and not event["capabilities"]["sasl" -- cgit v1.3.1-10-gc9f91 From fd51d44c705bda4c5ec4ccf99e085941fea459d8 Mon Sep 17 00:00:00 2001 From: jesopo Date: Sun, 9 Sep 2018 10:17:22 +0100 Subject: Utilise !serverset in more modules --- modules/accept_invite.py | 6 +++++- modules/check_urls.py | 3 +++ modules/commands.py | 2 ++ modules/ctcp.py | 4 ++++ 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/modules/accept_invite.py b/modules/accept_invite.py index 671b76f4..6dd476e1 100644 --- a/modules/accept_invite.py +++ b/modules/accept_invite.py @@ -1,10 +1,14 @@ - +import Utils class Module(object): def __init__(self, bot, events, exports): events.on("received").on("invite").hook(self.on_invite) + exports.add("serverset", {"setting": "accept-invites", + "help": "Set whether I accept invites on this server", + "validate": Utils.bool_or_none}) def on_invite(self, event): if event["server"].is_own_nickname(event["target_user"].nickname): if event["server"].get_setting("accept-invites", True): event["server"].send_join(event["target_channel"]) + diff --git a/modules/check_urls.py b/modules/check_urls.py index e53437b7..221f548d 100644 --- a/modules/check_urls.py +++ b/modules/check_urls.py @@ -15,6 +15,9 @@ class Module(object): exports.add("channelset", {"setting": "check-urls", "help": "Enable/Disable automatically checking for " "malicious URLs", "validate": Utils.bool_or_none}) + exports.add("serverset", {"setting": "check-urls", + "help": "Enable/Disable automatically checking for " + "malicious URLs", "validate": Utils.bool_or_none}) exports.add("channelset", {"setting": "check-urls-kick", "help": "Enable/Disable automatically kicking users that " "send malicious URLs", "validate": Utils.bool_or_none}) diff --git a/modules/commands.py b/modules/commands.py index 21b0f361..a500c75d 100644 --- a/modules/commands.py +++ b/modules/commands.py @@ -70,6 +70,8 @@ class Module(object): exports.add("channelset", {"setting": "command-prefix", "help": "Set the command prefix used in this channel"}) + exports.add("serverset", {"setting": "command-prefix", + "help": "Set the command prefix used on this server"}) exports.add("serverset", {"setting": "identity-mechanism", "help": "Set the identity mechanism for this server"}) diff --git a/modules/ctcp.py b/modules/ctcp.py index e6d7ad8f..1a009d1d 100644 --- a/modules/ctcp.py +++ b/modules/ctcp.py @@ -1,10 +1,14 @@ import datetime +import Utils class Module(object): def __init__(self, bot, events, exports): self.bot = bot events.on("received").on("message").on("private").hook( self.private_message) + exports.add("serverset", {"setting": "ctcp-responses", + "help": "Set whether I respond to CTCPs on this server", + "validate": Utils.bool_or_none}) def private_message(self, event): if event["message"][0] == "\x01" and event["message"][-1] == "\x01": -- cgit v1.3.1-10-gc9f91