Python으로 만드는 Slack Bot
슬랙의 API를 이용해 슬랙 봇을 만들어 보려고 합니다.
Slack App 만들기
-
Create a Slack App에서 슬랙 앱을 만듭니다. “Development Slack Workspace”는 본인의 슬랙 워크스페이스를 지정하면 됩니다.
-
Basic Information 페이지의 Add features and functionality의 Bots를 클릭합니다.
-
봇의 정보를 입력하고 봇을 추가합니다.
-
Settings > Install App 페이지에서 Install App to Workspace 버튼을 클릭해 워크스페이스에 앱을 설치하고 토큰을 얻습니다. 타인에게 공개되지 않도록 주의해야 합니다.
봇 만들기
slacker 설치
slacker는 slack 페이지에 기재되어 있는 오픈소스 라이브러리입니다.
채널에 메세지 보내기
아까 만들어진 토큰 중 xoxb-로 시작하는 Bot User OAuth Access Token을 이용합니다.
1
2
3
4
5
6
# bot.py
from slacker import Slacker
slack = Slacker('xoxb-000000000000-000000000000-000000000000000000000000')
slack.chat.post_message('#test', 'Hello')
실행하면 봇이 #test 채널에 Hello라는 메세지를 보냅니다.
RTM(Real Time Messaging) 봇 만들기
위의 과정으로 채널에 메세지를 뿌리는 봇이 만들어졌습니다.
하지만 이것만으론 아쉽지 않나요?
사용자의 메세지를 받아 응답하는 기능을 추가해보겠습니다.
slacksocket 설치
메세지 받기
1
2
3
4
5
6
7
# bot.py
from slacksocket import SlackSocket
s = SlackSocket('xoxb-000000000000-000000000000-000000000000000000000000', translate=True)
for event in s.events():
print(event.json)
실행해볼까요?
혹시 메세지가 출력되지 않는다면 봇을 채널에 초대해보세요!
메세지 보내기
봇이 메세지를 받아온다면 똑같이 말하는 봇으로 업그레이드 해 봅시다.
1
2
3
4
5
6
# bot.py
...
for event in s.events():
if(event.type == 'message'):
e = event.event
s.send_msg(e.get('text'), channel_name=e.get('channel'))
댓글남기기