지난편에 이어서, 이번엔 파이썬을 활용하여 슬랙봇이 채팅을 보내는 걸 해보겠습니다.
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 을 복사해줍니다.
이제 파이썬 파일을 하나 만들어서 아래와 같이 써줍니다.
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
'프로젝트 > [ed]_슬랙봇_증시알림' 카테고리의 다른 글
[Python] 슬랙(Slack) 알림봇 설정하여 매일 증시 알림 받기 (5) (0) | 2021.10.12 |
---|---|
[Python] 슬랙(Slack) 알림봇 설정하여 매일 증시 알림 받기 (4) (0) | 2021.10.02 |
[Python] 슬랙(Slack) 알림봇 설정하여 매일 증시 알림 받기 (3) - 2 (3) | 2021.09.25 |
[Python] 슬랙(Slack) 알림봇 설정하여 매일 증시 알림 받기 (3) - 1 (1) | 2021.09.24 |
[Python] 슬랙(Slack) 알림봇 설정하여 매일 증시 알림 받기 (1) (0) | 2021.09.22 |