[Slack-bot] slack-sdk

강버섯·2022년 1월 14일
1

SLACK BOT🤖

목록 보기
2/2

👉 slack-sdk

생성한 slack bot의 동작을 Python 코드를 이용해서 지정할 수 있도록 "slack-sdk" package를 이용해서 작성할 수 있다.

slack-sdk👇
https://github.com/slackapi/python-slack-sdk
https://api.slack.com/methods

👉 사용하기 전에,,,

사용하기에 앞서서 slack-sdk를 설치해준다.

$> pip install slack_sdk

# poetry 사용시
$> poetry add slack_sdk	

👉 채널에 메세지 보내기

설치가 완료되었다면 slack-sdk를 import해서 사용해주면 된다.

from slack_sdk import WebClient

slack_sdk를 이용해서 slack에 접근하기 위해서는 app token을 필요로하는데, 이 token 값은 slack api의 생성한 app 페이지에서 "Feature > OAuth & Permissions" 에서 확인할 수 있다.

import os
from slack_sdk import WebClient

client = WebClient(token=os.environ['TOKEN'])

이 토큰 값을 이용해서 WebClient를 통해 접근을 시도할 수 있다.

slack app의 token을 이용하여 client를 연결했다면, slack api를 사용해서 slack app이 있는 채널에 메세지를 보내볼 수 있다.

slack-sdk에서 제공하는 "chat_postMessage" 를 이용하면 가능하다.

import os
from slack_sdk import WebClient

client = WebClient(token=os.environ['TOKEN'])
response = client.chat_postMessage(channel='#bot-test', text="MORE!")

다만 실행을 한다고 바로 보내지는 것이 아니라

  1. app에 메세지를 보낼 수 있도록하는 권한을 추가해주고,
  2. app을 채널에 추가해줘야한다.

"OAuth & Permissions > Scope" 에서 추가할 수 있으며, 필요한 권한은 chat:write이다.
권한 추가 후에는 앱을 재설치해줘야만 한다.
그리고 채널에 앱을 초대하는 작업을 마친 다음 작성한 코드를 실행시키면,

채널에 메세지가 작성된 것을 확인할 수 있다.

단순히 plain text 외에도 blocks를 사용하면 마크다운, 버튼 등의 다양한 포맷의 메세지를 전송할 수 있다.

만약 마크다운을 사용해서 메세지를 전송한다면,

import os
from slack_sdk import WebClient

client = WebClient(token=os.environ["TOKEN"])

blocks = [{
    "type": "section",
    "text": {
        "type": "mrkdwn",
        "text": "A message *with some bold text* and _some italicized text_."
    }

}]

response = client.chat_postMessage(channel='#bot-test', blocks=blocks)

"chat_postMessage" 함수에 text parameter가 아닌 blocks parameter를 사용하고, 사용할 block의 값들이 들어있는 list를 값으로 넘겨주면 된다.

모양이 없던 이전 텍스트와는 다르게 볼드체와 이탤릭체가 적용되어 메세지가 전송된 것을 확인할 수 있다.

다양한 형식의 block들을 사용할 수 있는데, 자세한 block의 사용법들은 slack api docs에서 확인할 수 있다.

blocks docs👇
https://api.slack.com/reference/block-kit/blocks#actions

👉 마무리

slack-sdk를 이용하면 단순히 메세지를 전송하는 것만이 아닌 파일 전송, 이미지 전송 등등 다양한 기능들을 사용할 수 있다.
해당 기능들을 사용할 때 app에 권한 추가를 해주는 것을 잊지 말 것!
앞으로 기능들은 찬찬히 사용해보면서 익혀가는 것으로!

profile
무럭무럭 버섯농장

0개의 댓글