[Python] 슬랙(Slack) 알림봇 설정하여 매일 증시 알림 받기 (2)
프로젝트/[ed]_슬랙봇_증시알림

[Python] 슬랙(Slack) 알림봇 설정하여 매일 증시 알림 받기 (2)

728x90
반응형

지난편에 이어서, 이번엔 파이썬을 활용하여 슬랙봇이 채팅을 보내는 걸 해보겠습니다.

 

2021년 2월 이후로 파이썬의 Slacker 라이브러리를 사용할 수 없습니다.  (∵ SLACK 의 정책변경)

 

따라서, 다른 방법을 사용하여 슬랙봇을 조작해야 합니다. 여기선 조코딩 님의 포스팅을 참고하여 조작해보도록 하겠습니다. [1]

 

0. Slack 세팅

슬랙봇 조작에 앞서, Slack 에 세팅을 조금 더 해줘야 합니다. 채널추가 버튼을 클릭하여 이름을 정하고 생성 버튼을 눌러줍니다. 사용자 추가는 지금은 건너뛰기를 눌러 생략합니다.

 

만든 # stock_notice 를 우클릭하여 채널 세부정보 열기를 누릅니다. 그 다음, 통합탭에서 앱추가를 클릭합니다.

 

 

 

앞에서 만든 StockNoticeBot 을 추가시킵니다.

 

 

그러면 워크스페이스 메시지가 바뀐걸 통해 StockNoticeBot 이 참여됨을 확인할 수 있습니다.

 

 

1. 파이썬을 활용하여 슬랙봇 조작하기

 

슬랙봇을 파이썬으로 사용하기 위해선 Token 을 입력해야 합니다. api.slack.com → Your Apps → StockNoticeBot 에 들어갑니다. 

 

 

OAuth & Permissions 를 클릭하여 'Bot User OAuth Token' 안의 Token 을 복사해줍니다.

 

1. Token Copy

 

이제 파이썬 파일을 하나 만들어서 아래와 같이 써줍니다.

request, json 라이브러리가 없다면 커맨드 입력창에 pip install request / pip install json 으로 해당 라이브러리를 설치해 줍니다.

코드의 흐름은 slack bot 이 slack 채널에 알려줘야할 내용을 담고있는 notice_message 함수와 이에 들어가는 token, channel, text, attachments 를 입력하는 순서로 구성되어 있습니다. 

 

한번 만들어 놓으면 notice_message 함수는 건드릴 필요 없이 함수의 arguments 만 바꿔서 사용 가능합니다. 

 

# requests 와 json 을 활용하여 slack bot 조작하기
import requests
import json

# 메시지를 보내는 부분. 함수 안 argument 순서 :
# token : Slack Bot의 토큰
# channel : 메시지를 보낼 채널 #stock_notice
# text : Slack Bot 이 보낼 텍스트 메시지. 마크다운 형식이 지원된다.
# attachments : 첨부파일. 텍스트 이외에 이미지등을 첨부할 수 있다.

def notice_message(token, channel, text, attachments):
    attachments = json.dumps(attachments) # 리스트는 Json 으로 덤핑 시켜야 Slack한테 제대로 간다.
    response = requests.post("https://slack.com/api/chat.postMessage",
        headers={"Authorization": "Bearer "+token},
        data={"channel": channel, "text": text ,"attachments": attachments})

Token = 'xoxb-' # 자신의 Token 입력
str1_title = '오늘의 증시 KOSPI 2021-09-17 (금)'
str2 = 'test 메시지를 보냅니다.'

attach_dict = {
    'color' : '#ff0000',
    'author_name' : 'Slack Bot Notice',
    'title' : str1_title,
    'title_link' : 'http://finance.naver.com/sise/sise_index.nhn?code=KOSPI',
    'text' : str1_title,
    'image_url' : 'https://ssl.pstatic.net/imgstock/chart3/day/KOSPI.png?sidcode=1632301488333'
} # attachment 에 넣고싶은 목록들을 딕셔너리 형태로 입력

attach_list=[attach_dict] # 딕셔너리 형태를 리스트로 변환
notice_message(Token, "#stock", str2, attach_list)

 

이 코드를 실행시키면 아래와 같은 결과를 얻을 수 있습니다.

 

 

여기까진 단순 텍스트를 입력하여 슬랙봇을 조작하는 방법을 익혔습니다. 

다음 포스팅에선 웹스크래이핑을 활용하여 매일 바뀌는 증시 변화를 알려주는 봇 만들기를 해보겠습니다.

 

 

References.

[1]. slacker.Error: invalid_auth 에러 해결방법 - https://developerdk.tistory.com/96

728x90
반응형