[python] slackbot 밥집 추천 슬랙 봇
언어/Python2020. 9. 6. 09:48
밥집 추천 슬랙 봇
- 사전에 봇 등록하여 토큰발급과 event Subscriptions 등록 필요.
- 플라스크를 이용하여 봇에게 멘션이 들어올 경우 밥집을 랜덤하게 리턴해주는 코드
# -*- coding: utf-8 -*-
import json
from slacker import Slacker
from flask import Flask, request, make_response
import random
## 슬랙 봇 토큰 ##
token = "슬랙봇 토큰"
slack = Slacker(token)
app = Flask(__name__)
def get_answer():
food = ['밥집1','밥집2','밥집3']
random.shuffle(food)
return food
# 이벤트 핸들하는 함수
def event_handler(event_type, slack_event):
if event_type == "app_mention":
channel = slack_event["event"]["channel"]
text = get_answer()
slack.chat.post_message(channel, "오늘의 밥집 추천은 {text[0]} 입니다")
return make_response("앱 멘션 메시지가 보내졌습니다.", 200, )
message = "[%s] 이벤트 핸들러를 찾을 수 없습니다." % event_type
return make_response(message, 200, {"X-Slack-No-Retry": 1})
@app.route("/slack", methods=["GET", "POST"])
def hears():
slack_event = json.loads(request.data)
if "challenge" in slack_event:
return make_response(slack_event["challenge"], 200, {"content_type": "application/json"})
if "event" in slack_event:
event_type = slack_event["event"]["type"]
return event_handler(event_type, slack_event)
return make_response("슬랙 요청에 이벤트가 없습니다.", 404, {"X-Slack-No-Retry": 1})
if __name__ == '__main__':
app.run('0.0.0.0', port=8080)