Last active
August 8, 2019 20:32
-
-
Save jamesr2323/836899ea47f1fa0de7162a09e16410ca to your computer and use it in GitHub Desktop.
Post experiment results, images etc. to Slack in an updating message
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## Usage | |
## sp = SlackPost(token=app_token, channel='#random') | |
## await sp.post_update("Look at this cool graph", ['img1.png', 'img2.png']) | |
## await sp.post_update("The data has changed!", ['img3.png', 'img4.png']) | |
class SlackPost(): | |
def __init__(self, token, channel): | |
self.channel = channel | |
self.client = client = slack.WebClient( | |
token=token, | |
run_async=True | |
) | |
self.ts = None | |
async def post_update(self, message, fnames = []): | |
attachments=[ | |
{ | |
'fallback': 'graph', | |
'image_url': await self.upload_image(f) | |
} for f in fnames | |
] | |
await self.send_message( | |
channel=self.channel, | |
text=message, | |
attachments=attachments | |
) | |
async def send_message(self, **kwargs): | |
if self.ts: | |
await (self.client.chat_update(ts=self.ts, **kwargs)) | |
else: | |
response = await (self.client.chat_postMessage(**kwargs)) | |
self.ts = response.data['ts'] | |
self.channel = response.data['channel'] | |
async def upload_image(self, fname): | |
img_response = await self.client.files_upload( | |
file=fname, | |
title="image" | |
) | |
file_response = await self.client.files_sharedPublicURL( | |
file=img_response.data['file']['id'], | |
) | |
return file_response.data['file']['permalink_public'] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment