X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=turbot%2Fslack.py;h=6ea9166595e7b236eeeaa009d41fdd0653e1939d;hb=HEAD;hp=d2d683d067dbd0ae797af095a5439fecabd6fd02;hpb=9e6e3213fb04c3c67539bd85b62dcdbbe4bf4a7c;p=turbot diff --git a/turbot/slack.py b/turbot/slack.py index d2d683d..6ea9166 100644 --- a/turbot/slack.py +++ b/turbot/slack.py @@ -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)