]> git.cworth.org Git - turbot/blobdiff - turbot/slack.py
Add notes on how to update the Google sheets credentials
[turbot] / turbot / slack.py
index d2d683d067dbd0ae797af095a5439fecabd6fd02..6ea9166595e7b236eeeaa009d41fdd0653e1939d 100644 (file)
@@ -1,6 +1,16 @@
 import hashlib
 import hmac
 import os
+import boto3
+
+if 'SLACK_SIGNING_SECRET' in os.environ:
+    slack_signing_secret = os.environ['SLACK_SIGNING_SECRET']
+else:
+    ssm = boto3.client('ssm')
+    response = ssm.get_parameter(Name='SLACK_SIGNING_SECRET',
+                                 WithDecryption=True)
+    slack_signing_secret = response['Parameter']['Value']
+    os.environ['SLACK_SIGNING_SECRET'] = slack_signing_secret
 
 slack_signing_secret = bytes(os.environ['SLACK_SIGNING_SECRET'], 'utf-8')
 
@@ -21,3 +31,37 @@ def slack_is_valid_request(slack_signature, timestamp, body):
     else:
         print("Bad signature: {} != {}".format(signature, slack_signature))
         return False
+
+def slack_channel_members(slack_client, channel_id):
+    members = []
+
+    cursor = None
+    while True:
+        if cursor:
+            response = slack_client.conversations_members(channel=channel_id,
+                                                          cursor=cursor)
+        else:
+            response = slack_client.conversations_members(channel=channel_id)
+
+        if response['ok']:
+            members += response['members']
+        else:
+            print("Error querying members of channel {}: {}"
+                  .format(channel_id, response['error']))
+            return members
+
+        cursor = None
+        if 'next_cursor' in response['response_metadata']:
+            cursor = response['response_metadata']['next_cursor']
+
+        if not cursor or cursor == '':
+            break
+
+    return members
+
+def slack_send_message(slack_client, channel_id, text, blocks=None):
+    if blocks:
+        slack_client.chat_postMessage(channel=channel_id,
+                                      text=text, blocks=blocks)
+    else:
+        slack_client.chat_postMessage(channel=channel_id, text=text)