diff options
author | Trygve Aaberge <trygveaa@gmail.com> | 2021-05-08 20:11:37 +0200 |
---|---|---|
committer | Trygve Aaberge <trygveaa@gmail.com> | 2021-05-08 20:41:34 +0200 |
commit | a191708db7a3edc99d9567efa523c75d03c134f3 (patch) | |
tree | dcc585482e2719ef4d166c3d2a83021579f171e5 | |
parent | 2c70f00a9996e104fbefefb8c2fd9d0103bbb04e (diff) | |
download | wee-slack-a191708db7a3edc99d9567efa523c75d03c134f3.tar.gz |
Support mpim_aware RTM API
Apparently, the API now sends an mpim_joined event when an MPIM is
created instead of a group_joined event, even if we don't set mpim_aware
to true.
Instead of just handling mpim_joined in addition to group_joined (which
could cause issues if both are called for MPIMs, though I haven't
experienced that), it's better to properly support mpim_aware.
Fixes #825, fixes #833
-rw-r--r-- | _pytest/data/http/rtm.start.json | 154 | ||||
-rw-r--r-- | wee_slack.py | 37 |
2 files changed, 102 insertions, 89 deletions
diff --git a/_pytest/data/http/rtm.start.json b/_pytest/data/http/rtm.start.json index 8caee41..972df4b 100644 --- a/_pytest/data/http/rtm.start.json +++ b/_pytest/data/http/rtm.start.json @@ -502,82 +502,6 @@ ], "groups": [ { - "id": "G3ZGMF4RZ", - "name": "mpdm-bob--alice--charles-1", - "is_group": true, - "created": 1485975690, - "creator": "U407ABLLW", - "is_archived": false, - "is_mpim": true, - "has_pins": false, - "is_open": true, - "last_read": "0000000000.000000", - "latest": { - "type": "message", - "subtype": "file_share", - "text": "<@U407ABLLW|alice> uploaded a file: <https:\/\/weeslacktest.slack.com\/files\/alice\/F3ZLY6K5J\/-.txt|Untitled>", - "file": { - "id": "F3ZLY6K5J", - "created": 1485975715, - "timestamp": 1485975715, - "name": "-.txt", - "title": "Untitled", - "mimetype": "text\/plain", - "filetype": "text", - "pretty_type": "Plain Text", - "user": "U407ABLLW", - "editable": true, - "size": 14, - "mode": "snippet", - "is_external": false, - "external_type": "", - "is_public": false, - "public_url_shared": false, - "display_as_bot": false, - "username": "", - "url_private": "https:\/\/files.slack.com\/files-pri\/T3YS5EAL9-F3ZLY6K5J\/-.txt", - "url_private_download": "https:\/\/files.slack.com\/files-pri\/T3YS5EAL9-F3ZLY6K5J\/download\/-.txt", - "permalink": "https:\/\/weeslacktest.slack.com\/files\/alice\/F3ZLY6K5J\/-.txt", - "permalink_public": "https:\/\/slack-files.com\/T3YS5EAL9-F3ZLY6K5J-39c2c4f739", - "edit_link": "https:\/\/weeslacktest.slack.com\/files\/alice\/F3ZLY6K5J\/-.txt\/edit", - "preview": "some code here", - "preview_highlight": "<div class=\"CodeMirror cm-s-default CodeMirrorServer\" oncopy=\"if(event.clipboardData){event.clipboardData.setData('text\/plain',window.getSelection().toString().replace(\/\\u200b\/g,''));event.preventDefault();event.stopPropagation();}\">\n<div class=\"CodeMirror-code\">\n<div><pre>some code here<\/pre><\/div>\n<\/div>\n<\/div>\n", - "lines": 1, - "lines_more": 0, - "preview_is_truncated": false, - "channels": [], - "groups": [ - "G3ZGMF4RZ" - ], - "ims": [], - "comments_count": 0 - }, - "user": "U407ABLLW", - "upload": true, - "display_as_bot": false, - "username": "<@U407ABLLW|alice>", - "bot_id": null, - "ts": "1485975715.000005" - }, - "unread_count": 1, - "unread_count_display": 1, - "members": [ - "U407ABLLW", - "U3ZKBBDL5", - "U4096CBHC" - ], - "topic": { - "value": "Group messaging", - "creator": "U407ABLLW", - "last_set": 1485975690 - }, - "purpose": { - "value": "Group messaging with: @bob @alice @charles", - "creator": "U407ABLLW", - "last_set": 1485975690 - } - }, - { "id": "G3ZJKP7GA", "name": "some-private-channel", "is_group": true, @@ -716,6 +640,84 @@ "cache_ts": 1485977062, "read_only_channels": [], "can_manage_shared_channels": false, + "mpims": [ + { + "id": "G3ZGMF4RZ", + "name": "mpdm-bob--alice--charles-1", + "is_group": true, + "created": 1485975690, + "creator": "U407ABLLW", + "is_archived": false, + "is_mpim": true, + "has_pins": false, + "is_open": true, + "last_read": "0000000000.000000", + "latest": { + "type": "message", + "subtype": "file_share", + "text": "<@U407ABLLW|alice> uploaded a file: <https:\/\/weeslacktest.slack.com\/files\/alice\/F3ZLY6K5J\/-.txt|Untitled>", + "file": { + "id": "F3ZLY6K5J", + "created": 1485975715, + "timestamp": 1485975715, + "name": "-.txt", + "title": "Untitled", + "mimetype": "text\/plain", + "filetype": "text", + "pretty_type": "Plain Text", + "user": "U407ABLLW", + "editable": true, + "size": 14, + "mode": "snippet", + "is_external": false, + "external_type": "", + "is_public": false, + "public_url_shared": false, + "display_as_bot": false, + "username": "", + "url_private": "https:\/\/files.slack.com\/files-pri\/T3YS5EAL9-F3ZLY6K5J\/-.txt", + "url_private_download": "https:\/\/files.slack.com\/files-pri\/T3YS5EAL9-F3ZLY6K5J\/download\/-.txt", + "permalink": "https:\/\/weeslacktest.slack.com\/files\/alice\/F3ZLY6K5J\/-.txt", + "permalink_public": "https:\/\/slack-files.com\/T3YS5EAL9-F3ZLY6K5J-39c2c4f739", + "edit_link": "https:\/\/weeslacktest.slack.com\/files\/alice\/F3ZLY6K5J\/-.txt\/edit", + "preview": "some code here", + "preview_highlight": "<div class=\"CodeMirror cm-s-default CodeMirrorServer\" oncopy=\"if(event.clipboardData){event.clipboardData.setData('text\/plain',window.getSelection().toString().replace(\/\\u200b\/g,''));event.preventDefault();event.stopPropagation();}\">\n<div class=\"CodeMirror-code\">\n<div><pre>some code here<\/pre><\/div>\n<\/div>\n<\/div>\n", + "lines": 1, + "lines_more": 0, + "preview_is_truncated": false, + "channels": [], + "groups": [ + "G3ZGMF4RZ" + ], + "ims": [], + "comments_count": 0 + }, + "user": "U407ABLLW", + "upload": true, + "display_as_bot": false, + "username": "<@U407ABLLW|alice>", + "bot_id": null, + "ts": "1485975715.000005" + }, + "unread_count": 1, + "unread_count_display": 1, + "members": [ + "U407ABLLW", + "U3ZKBBDL5", + "U4096CBHC" + ], + "topic": { + "value": "Group messaging", + "creator": "U407ABLLW", + "last_set": 1485975690 + }, + "purpose": { + "value": "Group messaging with: @bob @alice @charles", + "creator": "U407ABLLW", + "last_set": 1485975690 + } + } + ], "subteams": { "all": [ { diff --git a/wee_slack.py b/wee_slack.py index bd03c7a..f8ea41d 100644 --- a/wee_slack.py +++ b/wee_slack.py @@ -3597,12 +3597,13 @@ def handle_rtmstart(login_data, eventrouter, team, channel, metadata): for item in login_data["ims"]: channels[item["id"]] = SlackDMChannel(eventrouter, users, **item) + for item in login_data["mpims"]: + channels[item["id"]] = SlackMPDMChannel( + eventrouter, users, login_data["self"]["id"], **item + ) + for item in login_data["groups"]: - if item["is_mpim"]: - channels[item["id"]] = SlackMPDMChannel( - eventrouter, users, login_data["self"]["id"], **item - ) - else: + if not item["is_mpim"]: channels[item["id"]] = SlackGroupChannel(eventrouter, **item) t = SlackTeam( @@ -4218,14 +4219,20 @@ def process_im_close(message_json, eventrouter, team, channel, metadata): ) +def process_mpim_joined(message_json, eventrouter, team, channel, metadata): + item = message_json["channel"] + channel = SlackMPDMChannel( + eventrouter, team.users, team.myidentifier, team=team, **item + ) + team.channels[item["id"]] = channel + channel.open() + + def process_group_joined(message_json, eventrouter, team, channel, metadata): item = message_json["channel"] - if item["name"].startswith("mpdm-"): - channel = SlackMPDMChannel( - eventrouter, team.users, team.myidentifier, team=team, **item - ) - else: - channel = SlackGroupChannel(eventrouter, team=team, **item) + if item["is_mpim"]: + return + channel = SlackGroupChannel(eventrouter, team=team, **item) team.channels[item["id"]] = channel channel.open() @@ -6623,10 +6630,14 @@ def trace_calls(frame, event, arg): def initiate_connection(token, retries=3, team=None, reconnect=False): + request_type = "connect" if team else "start" + post_data = {"batch_presence_aware": 1} + if request_type == "start": + post_data["mpim_aware"] = "true" return SlackRequest( team, - "rtm.{}".format("connect" if team else "start"), - {"batch_presence_aware": 1}, + "rtm.{}".format(request_type), + post_data, retries=retries, token=token, metadata={"reconnect": reconnect}, |