aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTrygve Aaberge <trygveaa@gmail.com>2021-05-08 20:11:37 +0200
committerTrygve Aaberge <trygveaa@gmail.com>2021-05-08 20:41:34 +0200
commita191708db7a3edc99d9567efa523c75d03c134f3 (patch)
treedcc585482e2719ef4d166c3d2a83021579f171e5
parent2c70f00a9996e104fbefefb8c2fd9d0103bbb04e (diff)
downloadwee-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.json154
-rw-r--r--wee_slack.py37
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},