From 24cdff9e44c8afdbb6a1289b8da451ec1d0ba9af Mon Sep 17 00:00:00 2001 From: jesopo Date: Thu, 20 Jun 2019 16:52:23 +0100 Subject: Add an export for IRCv3 CAPs --- modules/ircv3_chathistory.py | 6 +----- modules/ircv3_labeled_responses.py | 6 +----- modules/ircv3_multiline.py | 6 +----- modules/ircv3_server_time.py | 6 +----- modules/line_handler/__init__.py | 2 +- modules/line_handler/ircv3.py | 5 ++++- 6 files changed, 9 insertions(+), 22 deletions(-) (limited to 'modules') diff --git a/modules/ircv3_chathistory.py b/modules/ircv3_chathistory.py index 5f72850d..27daad2b 100644 --- a/modules/ircv3_chathistory.py +++ b/modules/ircv3_chathistory.py @@ -8,12 +8,8 @@ CHATHISTORY_BATCH = utils.irc.BatchType("chathistory") EVENTPLAYBACK_CAP = utils.irc.Capability(None, "draft/event-playback") HISTORY_BATCH = utils.irc.BatchType("history") +@utils.export("cap", EVENTPLAYBACK_CAP) class Module(ModuleManager.BaseModule): - @utils.hook("received.cap.ls") - @utils.hook("received.cap.new") - def on_cap(self, event): - return EVENTPLAYBACK_CAP.copy() - @utils.hook("received.batch.end") def batch_end(self, event): if (CHATHISTORY_BATCH.match(event["batch"].type) or diff --git a/modules/ircv3_labeled_responses.py b/modules/ircv3_labeled_responses.py index 952cddfa..c30b6804 100644 --- a/modules/ircv3_labeled_responses.py +++ b/modules/ircv3_labeled_responses.py @@ -15,16 +15,12 @@ class WaitingForLabel(object): self.events = events self.labels_since = 0 +@utils.export("cap", CAP) class Module(ModuleManager.BaseModule): @utils.hook("new.server") def new_server(self, event): event["server"]._label_cache = {} - @utils.hook("received.cap.ls") - @utils.hook("received.cap.new") - def on_cap(self, event): - return CAP.copy() - @utils.hook("preprocess.send") def raw_send(self, event): available_cap = event["server"].available_capability(CAP) diff --git a/modules/ircv3_multiline.py b/modules/ircv3_multiline.py index 18e91d65..357b99a3 100644 --- a/modules/ircv3_multiline.py +++ b/modules/ircv3_multiline.py @@ -4,12 +4,8 @@ CAP = utils.irc.Capability(None, "bitbot.dev/multiline") BATCH = utils.irc.BatchType(None, "bitbot.dev/multiline") TAG = utils.irc.MessageTag(None, "+bitbot.dev/multiline-concat") +@utils.export("cap", CAP) class Module(ModuleManager.BaseModule): - @utils.hook("received.cap.ls") - @utils.hook("received.cap.new") - def on_cap(self, event): - return CAP.copy() - @utils.hook("preprocess.send.privmsg") def preprocess_send_privmsg(self, event): if len(event["line"].args) > 1: diff --git a/modules/ircv3_server_time.py b/modules/ircv3_server_time.py index 31126b45..c9790d95 100644 --- a/modules/ircv3_server_time.py +++ b/modules/ircv3_server_time.py @@ -3,12 +3,8 @@ from src import ModuleManager, utils CAP = utils.irc.Capability("server-time") TAG = utils.irc.MessageTag("time") +@utils.export("cap", CAP) class Module(ModuleManager.BaseModule): - @utils.hook("received.cap.ls") - @utils.hook("received.cap.new") - def on_cap(self, event): - return CAP.copy() - @utils.hook("raw.received") def raw_recv(self, event): server_time = TAG.get_value(event["line"].tags) diff --git a/modules/line_handler/__init__.py b/modules/line_handler/__init__.py index 15a921c2..0470e36a 100644 --- a/modules/line_handler/__init__.py +++ b/modules/line_handler/__init__.py @@ -133,7 +133,7 @@ class Module(ModuleManager.BaseModule): # the server is telling us about its capabilities! @utils.hook("raw.received.cap") def cap(self, event): - ircv3.cap(self.events, event) + ircv3.cap(self.exports, self.events, event) # the server is asking for authentication @utils.hook("raw.received.authenticate") diff --git a/modules/line_handler/ircv3.py b/modules/line_handler/ircv3.py index 3c389c85..93b814c8 100644 --- a/modules/line_handler/ircv3.py +++ b/modules/line_handler/ircv3.py @@ -27,7 +27,7 @@ def _cap_match(server, caps): matched_caps[available] = cap return matched_caps -def cap(events, event): +def cap(exports, events, event): capabilities = utils.parse.keyvalue(event["args"][-1]) subcommand = event["args"][1].upper() is_multiline = len(event["args"]) > 3 and event["args"][2] == "*" @@ -50,6 +50,9 @@ def cap(events, event): server_caps = list(event["server"].server_capabilities.keys()) all_caps = CAPABILITIES[:] + export_caps = [cap.copy() for cap in exports.get_all("cap")] + all_caps.extend(export_caps) + module_caps = events.on("received.cap.ls").call( capabilities=event["server"].server_capabilities, server=event["server"]) -- cgit v1.3.1-10-gc9f91