1 분 소요

슬랙의 API를 이용해 슬랙 봇을 만들어 보려고 합니다.

Slack App 만들기

  1. Create a Slack App에서 슬랙 앱을 만듭니다. “Development Slack Workspace”는 본인의 슬랙 워크스페이스를 지정하면 됩니다. image

  2. Basic Information 페이지의 Add features and functionality의 Bots를 클릭합니다. image

  3. 봇의 정보를 입력하고 봇을 추가합니다. image

  4. Settings > Install App 페이지에서 Install App to Workspace 버튼을 클릭해 워크스페이스에 앱을 설치하고 토큰을 얻습니다. 타인에게 공개되지 않도록 주의해야 합니다. image

봇 만들기

slacker 설치

slacker는 slack 페이지에 기재되어 있는 오픈소스 라이브러리입니다.

$ pip3 install slacker

채널에 메세지 보내기

아까 만들어진 토큰 중 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')
python3 bot.py

실행하면 봇이 #test 채널에 Hello라는 메세지를 보냅니다. image

RTM(Real Time Messaging) 봇 만들기

위의 과정으로 채널에 메세지를 뿌리는 봇이 만들어졌습니다.
하지만 이것만으론 아쉽지 않나요?
사용자의 메세지를 받아 응답하는 기능을 추가해보겠습니다.

slacksocket 설치

$ pip3 install 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)

실행해볼까요?

$ python3 bot.py

image image

혹시 메세지가 출력되지 않는다면 봇을 채널에 초대해보세요!

메세지 보내기

봇이 메세지를 받아온다면 똑같이 말하는 봇으로 업그레이드 해 봅시다.

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'))

image

카테고리:

업데이트:

댓글남기기