aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorGravatar jesopo2019-06-20 16:52:23 +0100
committerGravatar jesopo2019-06-20 16:52:23 +0100
commit24cdff9e44c8afdbb6a1289b8da451ec1d0ba9af (patch)
tree0a147e612ffe1b5e5c3cc1ebe982f3f853898292 /modules
parentreturn unshortened url when shortening fails (diff)
signature
Add an export for IRCv3 CAPs
Diffstat (limited to 'modules')
-rw-r--r--modules/ircv3_chathistory.py6
-rw-r--r--modules/ircv3_labeled_responses.py6
-rw-r--r--modules/ircv3_multiline.py6
-rw-r--r--modules/ircv3_server_time.py6
-rw-r--r--modules/line_handler/__init__.py2
-rw-r--r--modules/line_handler/ircv3.py5
6 files changed, 9 insertions, 22 deletions
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"])