Add an export for IRCv3 CAPs
This commit is contained in:
parent
8797be9457
commit
24cdff9e44
6 changed files with 9 additions and 22 deletions
|
@ -8,12 +8,8 @@ CHATHISTORY_BATCH = utils.irc.BatchType("chathistory")
|
||||||
EVENTPLAYBACK_CAP = utils.irc.Capability(None, "draft/event-playback")
|
EVENTPLAYBACK_CAP = utils.irc.Capability(None, "draft/event-playback")
|
||||||
HISTORY_BATCH = utils.irc.BatchType("history")
|
HISTORY_BATCH = utils.irc.BatchType("history")
|
||||||
|
|
||||||
|
@utils.export("cap", EVENTPLAYBACK_CAP)
|
||||||
class Module(ModuleManager.BaseModule):
|
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")
|
@utils.hook("received.batch.end")
|
||||||
def batch_end(self, event):
|
def batch_end(self, event):
|
||||||
if (CHATHISTORY_BATCH.match(event["batch"].type) or
|
if (CHATHISTORY_BATCH.match(event["batch"].type) or
|
||||||
|
|
|
@ -15,16 +15,12 @@ class WaitingForLabel(object):
|
||||||
self.events = events
|
self.events = events
|
||||||
self.labels_since = 0
|
self.labels_since = 0
|
||||||
|
|
||||||
|
@utils.export("cap", CAP)
|
||||||
class Module(ModuleManager.BaseModule):
|
class Module(ModuleManager.BaseModule):
|
||||||
@utils.hook("new.server")
|
@utils.hook("new.server")
|
||||||
def new_server(self, event):
|
def new_server(self, event):
|
||||||
event["server"]._label_cache = {}
|
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")
|
@utils.hook("preprocess.send")
|
||||||
def raw_send(self, event):
|
def raw_send(self, event):
|
||||||
available_cap = event["server"].available_capability(CAP)
|
available_cap = event["server"].available_capability(CAP)
|
||||||
|
|
|
@ -4,12 +4,8 @@ CAP = utils.irc.Capability(None, "bitbot.dev/multiline")
|
||||||
BATCH = utils.irc.BatchType(None, "bitbot.dev/multiline")
|
BATCH = utils.irc.BatchType(None, "bitbot.dev/multiline")
|
||||||
TAG = utils.irc.MessageTag(None, "+bitbot.dev/multiline-concat")
|
TAG = utils.irc.MessageTag(None, "+bitbot.dev/multiline-concat")
|
||||||
|
|
||||||
|
@utils.export("cap", CAP)
|
||||||
class Module(ModuleManager.BaseModule):
|
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")
|
@utils.hook("preprocess.send.privmsg")
|
||||||
def preprocess_send_privmsg(self, event):
|
def preprocess_send_privmsg(self, event):
|
||||||
if len(event["line"].args) > 1:
|
if len(event["line"].args) > 1:
|
||||||
|
|
|
@ -3,12 +3,8 @@ from src import ModuleManager, utils
|
||||||
CAP = utils.irc.Capability("server-time")
|
CAP = utils.irc.Capability("server-time")
|
||||||
TAG = utils.irc.MessageTag("time")
|
TAG = utils.irc.MessageTag("time")
|
||||||
|
|
||||||
|
@utils.export("cap", CAP)
|
||||||
class Module(ModuleManager.BaseModule):
|
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")
|
@utils.hook("raw.received")
|
||||||
def raw_recv(self, event):
|
def raw_recv(self, event):
|
||||||
server_time = TAG.get_value(event["line"].tags)
|
server_time = TAG.get_value(event["line"].tags)
|
||||||
|
|
|
@ -133,7 +133,7 @@ class Module(ModuleManager.BaseModule):
|
||||||
# the server is telling us about its capabilities!
|
# the server is telling us about its capabilities!
|
||||||
@utils.hook("raw.received.cap")
|
@utils.hook("raw.received.cap")
|
||||||
def cap(self, event):
|
def cap(self, event):
|
||||||
ircv3.cap(self.events, event)
|
ircv3.cap(self.exports, self.events, event)
|
||||||
|
|
||||||
# the server is asking for authentication
|
# the server is asking for authentication
|
||||||
@utils.hook("raw.received.authenticate")
|
@utils.hook("raw.received.authenticate")
|
||||||
|
|
|
@ -27,7 +27,7 @@ def _cap_match(server, caps):
|
||||||
matched_caps[available] = cap
|
matched_caps[available] = cap
|
||||||
return matched_caps
|
return matched_caps
|
||||||
|
|
||||||
def cap(events, event):
|
def cap(exports, events, event):
|
||||||
capabilities = utils.parse.keyvalue(event["args"][-1])
|
capabilities = utils.parse.keyvalue(event["args"][-1])
|
||||||
subcommand = event["args"][1].upper()
|
subcommand = event["args"][1].upper()
|
||||||
is_multiline = len(event["args"]) > 3 and event["args"][2] == "*"
|
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())
|
server_caps = list(event["server"].server_capabilities.keys())
|
||||||
all_caps = CAPABILITIES[:]
|
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(
|
module_caps = events.on("received.cap.ls").call(
|
||||||
capabilities=event["server"].server_capabilities,
|
capabilities=event["server"].server_capabilities,
|
||||||
server=event["server"])
|
server=event["server"])
|
||||||
|
|
Loading…
Reference in a new issue