]> git.cworth.org Git - turbot/blobdiff - turbot.py
Add Slack dependencies and minimum boilerplate to our flask app
[turbot] / turbot.py
index 1cb6e68032d427038753232c6ab85d820651acd1..d4479051e77acfe19331e99953037aeb09288705 100755 (executable)
--- a/turbot.py
+++ b/turbot.py
@@ -1,52 +1,25 @@
 #!/usr/bin/env python3
 
-from flask import Flask
-from flask_restful import reqparse, abort, Api, Resource
+from slackeventsapi import SlackEventAdapter
+from slack import WebClient
+import os
 
-app = Flask(__name__)
-api = Api(app)
+slack_signing_secret = os.environ['SLACK_SIGNING_SECRET']
+slack_bot_token = os.environ['SLACK_BOT_TOKEN']
 
-TODOS = {}
+slack_events = SlackEventAdapter(slack_signing_secret, "/slack/events")
+slack_client = WebClient(slack_bot_token)
 
-def abort_if_todo_doesnt_exist(todo_id):
-    if todo_id not in TODOS:
-        abort(404, message="Todo {} doesn't exist".format(todo_id))
+@slack_events.on("message")
+def handle_message(data):
+    message = data["event"]
+    if message.get("subtype") is None and "hi" in message.get("text"):
+        channel = message["channel"]
+        response = "Hello {}! :tada:".format(message["user"])
+        slack_client.chat_postMessage(channel=channel, text=response)
 
-parser = reqparse.RequestParser()
-parser.add_argument('task')
+@slack_events.on("error")
+def handle_error(err):
+    print("ERROR: " + str(err))
 
-class Todo(Resource):
-    def get(self, todo_id):
-        abort_if_todo_doesnt_exist(todo_id)
-        return TODOS[todo_id]
-
-    def delete(self, todo_id):
-        abort_if_todo_doesnt_exist(todo_id)
-        del TODOS[todo_id]
-        return '', 204
-
-    def put(self, todo_id):
-        args = parser.parse_args()
-        task = {'task': args['task']}
-        TODOS[todo_id] = task
-        return task, 201
-
-class TodoList(Resource):
-    def get(self):
-        return TODOS
-
-    def post(self):
-        args = parser.parse_args()
-        try:
-            todo_id = int(max(TODOS.keys()).lstrip('todo')) + 1
-        except:
-            todo_id = 1
-        todo_id = 'todo%i' % todo_id
-        TODOS[todo_id] = {'task': args['task']}
-        return TODOS[todo_id], 201
-
-api.add_resource(TodoList, '/todos')
-api.add_resource(Todo, '/todos/<todo_id>')
-
-if __name__ == '__main__':
-    app.run(debug=True)
+slack_events.start(port=3000)