python 으로 만든 slack bot입니다. 사용 라이브러리는 아래와 같습니다.
- Flask
- Slacker
- SlackClient
- bs4
- FeedParser
봇에게 멘션할 시 버튼 선택 기능을 답변해 줍니다. 특정 키워드 (안녕, 메롱, 꺼져) 를 멘션할 시 답변도 해줍니다. 봇의 답변에 선택함에 따라 특정 키워드 입력 시와 동일한 함수를 실행합니다.
오키
, 클리앙
, 지디넷
, 디데일리
, 블로그
, 시사
키워드 입력 시 해당 사이트를 크롤링하여 보여줍니다.
- 슬랙 앱부터 만듭니다.(https://api.slack.com/apps/) 저기서 만드시면 됩니다.
만드신 후 여기(https://api.slack.com/bot-users)로 이동하셔서, 봇을 만드세요. 왜 앱에서 봇을 만드냐면, 앱만이 interaction(사용자의 버튼 클릭 등)을 할 수 있거든요!
SLACK_VERIFICATION_TOKEN 에 등록하세요.
아래 있는 토큰을 SLACK_BOT_TOKEN 에 등록하세요.
위 곳에서 등록할 수 있습니다.(사실 어디인지 찾기가 아주 불편합니다)
- 이 내용들을 env.py안에 등록하여 사용합니다.
자신의 개인정보는 소중하니 이 정보들을 깃허브 등에 올리지 않게 주의 하도록 하세요.
- 서버를 만듭니다.
가. 로컬 서버인 경우
a. ngrok를 까세요.
b. 그리고 ngrok가 있는 곳에 가서 cmd창에
./ngrok http 5000
을 쳐보세요.(5000은 포트 번호예요.) c. d. 이렇게 online 이 뜨면 되어요. 여기서 뜬 주소에서 Forwarding 에 있는 주소가 외부에서 자신의 컴퓨터로 접속하는 주소입니다.
나. 이미 있는 경우
a. 자신의 주소/slack/message_actions
와 /slack/message_options
로 설정하세요.
-
여기가 보이시나요? 여기서 이 주소를 설정 하세요. 위는 버튼 클릭 등에 대한 리퀘스트를 받아 올 주소이고, 아래는 옵션 선택에 대한 값을 받아 올 주소입니다. 저희 봇에서는 차례로
/slack/message_actions
과/slack/message_options
로 설정했어요. -
outgoing webhook(https://api.slack.com/outgoing-webhooks) 설정 페이지로 가서, 를 설정하세요.
여기 토큰을 SLACK_WEBHOOK_SECRET 에 등록하세요.
-
자기가 쓸 채널에 만든 봇을 추가하세요.
/invite @봇이름
-
pip install requirements.txt
로 필요 라이브러리도 설치 한 후, -
봇을
python slack.py
로 실행 해 보세요
# 주석을 보시면 되시지만 몇몇 내용에 대해 설명해 드립니다.
# clien, ddaily, okky_tech, rssParse, ycombinator, zdnet은 각 사이트에서 크롤링을 해오는 내용입니다.
# 자기 취향에 따라 여러 곳에서 문서를 얻어와 보세요.
# rssParse는 rss 구독이 가능한 기술 블로그들 중 랜덤으로 5곳에서 HTML을 파징해와 가장 최신 글과 URL을 리턴합니다.
# slack.py가 메시지를 받아오고 보내는 주 소스입니다.
## MsgSlack()함수는 크롤링해 받아온 딕셔너리를 넣어서, 슬랙에 보낼 내용을 리턴합니다.
### title, title link, color 등은 슬랙 attachment의 양식입니다.(*json 형식)
## inbound는 슬랙과 통신하는 함수입니다.
### 채널별, 메시지별로 반응을 다르게 하고 있습니다.
## message_options 과 message_actions 은 슬랙에서 사용자가 봇에게 반응한 내용을 받아온 후 작동하는 함수입니다.
### 선택을 버튼으로 했는지, 아니면 셀렉트 박스로 했는지에 따라 다르게 반응 하도록 구현 해 두었습니다.
# envsetting.py 는 자기 개인 토큰 정보를 저장하라고 만들어 두었어요.
# env.py로 바꿔 쓰시거나 slack.py에서 import envsetting을 하세요.