log 4 - 태블로 이미지를 슬랙으로 보내기 (2)

Minseon Kim·2022년 7월 18일
0

해당 글은 이전 글 log 3에서부터 이어집니다.

이전에 다운로드된 태블로 이미지를 이제 슬랙 방으로 봇으로 보낼 차례입니다. 그러기 위해서는 슬랙에서 직접 봇을 만들고, 설정 몇 가지를 해야 합니다.

슬랙 봇 설정하기

  1. 해당 링크에 접속 후 본인 워크스페이스에 로그인 된 채로, create an app을 눌러서 봇을 만듭니다.
  2. From scrath를 눌러줍니다.
  • create an app을 누르면 아래와 같은 화면이 나오는데, 첫 번째 버튼을 눌러줍니다.
  1. 앱의 이름을 지어주고 워크스페이스를 선택합니다
  2. permission을 선택합니다
  • 저의 경우에는, 이미지를 전송하는 봇이기 때문에 이런 권한을 줍니다.
  • permission > scopes 칸에 보면 해당 봇이 어느 범위까지 일을 할 수 있는지 지정해줄 수 있습니다
  1. 이후에 workspace에 설치를 해야 합니다

    설치 이후에는 워크스페이스 엑세스 권한을 요청하는 화면이 뜨는데, 허용을 눌러줘야 정상적으로 사용이 가능합니다.

api를 활용하여 봇 활성화하기

  • 본인이 만든 봇의 설정화면을 보다보면, oAuth Tokens for Your Workspace라는 칸이 있고, 권한 token이 있다. 해당 토큰이 있어야 api사용이 가능하다.

해당 api를 사용하려면, slack_sdk package가 필요하니, pip로 설치해줘야 한다.

from fileinput import filename
import os
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
import time

# init slack client with access token
slack_token = 'YOUR TOKEN'
client = WebClient(token=slack_token)
start = time.time()

# upload file
filtering_list = ['filter1', 'filter2', 'filter3']
for filter_value in filtering_list:
    try:
        response = client.files_upload(
            channels='channel_name', 
            file=f'{filter_value}.png', # path
            filename=f'{filter_value}.png',
            filetype='png'
        )

        print(response['ok'])

    except SlackApiError as e:
        # You will get a SlackApiError if "ok" is False
        assert e.response["ok"] is False
        assert e.response["error"]  # str like 'invalid_auth', 'channel_not_found'
        print(f"Got an error: {e.response['error']}")
print("time :", time.time() - start)

위의 구문을 이용하면 손쉽게 채널에 자신이 원하는 이미지를 슬랙봇을 통해 보낼 수 있다

profile
1에서 10을 만들고 싶은 데이터 분석가

0개의 댓글