Profile picture

[Python] Slack 메신저 봇 만들기

JaehyoJJAng2023년 08월 18일

▶︎ Slack Bot

나에게 메시지를 보내주는 Slack 봇을 만들어보자


‣ Workspace 설정

슬랙 봇으로 부터 메시지를 받기 위한 슬랙 메신저 내 "워크스페이스" 와 "채널" 개설 그리고 메시지를 보내줄 "슬랙 앱"을 만들고 설정하도록 하자


• Workspace 개설

슬랙 홈페이지


a. 새로운 워크스페이스를 만들기 위해 본인이 사용하는 메일 주소를 입력
image


b. 사용할 워크스페이스 이름 지정
image


c. 슬랙 메신저에서 추가된 워크스페이스와 채널 확인
image
Gallery_Alarm 워크스페이스 선택


‣ 슬랙 App 생성

개설한 채널에 메시지를 보내줄 슬랙 앱을 만들어보자
Slack API를 사용해야 하기 때문에 Slack API 홈페이지로 이동한다
https://api.slack.com/


a. 슬랙 앱 생성하기
Your Apps 클릭 후 Create New App 클릭
image


Create New App 클릭
image


b. 슬랙 앱 팝업 - From scratch 선택
image


c. 앱 이름 및 채널 선택
image


d. Slack Oauth & Permissions 설정
image
image
Scopes에 chat:write OAuth 추가


e. 앱 적용하기
image


f. Slack Token 복사하기
image


‣ Slack App 채널 초대

새로 생성한 워크스페이스 내 채널에 메시지를 보낼 수 있는 Slack App(Alarm_App)이 메시지를 보낼 채널에 초대해보자

참고로 초대받지 않은 사람과 App은 메시지를 보낼 수 없다


a. Slack App 채널에서 '채널 세부 정보 열기' - 통합 - 앱 추가 클릭
image
image


▶︎ 메신저 봇 구현

‣ slack_SDK 설치

pip install slack_sdk

‣ 코드 작성

import slack_sdk
import environ

def _get_token(file_name: str) -> environ.Env:
    env : environ.Env = environ.Env(DEBUG=(bool,False))
    env.read_env(env_file=file_name)
    return env

def msg_bot(slack_token: str, slack_channel: str, slack_message: str) -> None:
    client = slack_sdk.Webclient(token=slack_token)
    client.chat_postMessage(channel=slack_channel,text=slack_message)

if __name__ == '__main__':
    file_name : str = 'app.env'

    SLACK_TOKEN   : str= _get_token(file_name=file_name)
    SLACK_CHANNEL : str = '#알림-자동화'
    SLACK_MESSAGE : str = 'Hello test'
    msg_bog(slack_token=SLACK_TOKEN,slack_channel=SLACK_CHANNEL,slack_message=SLACK_MESSAGE)

Loading script...