RedPlug's Tory

밥집 추천 슬랙 봇

  • 사전에 봇 등록하여 토큰발급과 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)