aboutsummaryrefslogtreecommitdiff
path: root/modules/line_handler.py
diff options
context:
space:
mode:
authorGravatar jesopo2019-02-08 17:30:07 +0000
committerGravatar jesopo2019-02-08 17:30:07 +0000
commit15ab77244205257f0f9ce5b869bc7eaa70e93423 (patch)
tree15888fd1852436312d5d41fa0dda0fdc19826db6 /modules/line_handler.py
parentmake `!sp` and alias of `!spotify` (spotify.py) (diff)
signature
Request CAPs we support when we see them advertised with `CAP NEW`
(line_handler.py)
Diffstat (limited to 'modules/line_handler.py')
-rw-r--r--modules/line_handler.py17
1 files changed, 14 insertions, 3 deletions
diff --git a/modules/line_handler.py b/modules/line_handler.py
index 21bb20a2..7843221f 100644
--- a/modules/line_handler.py
+++ b/modules/line_handler.py
@@ -279,6 +279,9 @@ class Module(ModuleManager.BaseModule):
else:
event["server"].disconnect()
+ def _match_caps(self, cabilities):
+ return set(capabilities) & CAPABILITIES
+
# the server is telling us about its capabilities!
@utils.hook("raw.received.cap")
def cap(self, event):
@@ -290,10 +293,11 @@ class Module(ModuleManager.BaseModule):
event["server"].cap_started = True
event["server"].server_capabilities.update(capabilities)
if not is_multiline:
- matched_capabilities = set(event["server"
- ].server_capabilities.keys()) & CAPABILITIES
+ matched_caps = self._match_caps(
+ list(event["server"].server_capbilities.keys()))
+
if matched_capabilities:
- event["server"].queue_capabilities(matched_capabilities)
+ event["server"].queue_capabilities(matched_caps)
self._event(event, "cap.ls",
capabilities=event["server"].server_capabilities,
@@ -305,8 +309,15 @@ class Module(ModuleManager.BaseModule):
event["server"].send_capability_end()
elif subcommand == "new":
event["server"].capabilities.update(set(capabilities.keys()))
+
+ matched_caps = self._match_caps(list(capabilities.keys()))
+ event["server"].queue_capabilities(matched_caps)
+
self._event(event, "cap.new", server=event["server"],
capabilities=capabilities)
+
+ if event["server"].has_capability_queue():
+ event["server"].send_capability_queue()
elif subcommand == "del":
event["server"].capabilities.difference_update(set(
capabilities.keys()))