Skip to content

Commit 7c607ff

Browse files
Initial commit
0 parents  commit 7c607ff

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

bot.py

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
from flask import Flask, Response
2+
from slackeventsapi import SlackEventAdapter
3+
import os
4+
from threading import Thread
5+
from slack import WebClient
6+
7+
8+
# This `app` represents your existing Flask app
9+
app = Flask(__name__)
10+
11+
greetings = ["hi", "hello", "hello there", "hey"]
12+
13+
SLACK_SIGNING_SECRET = os.environ['SLACK_SIGNING_SECRET']
14+
slack_token = os.environ['SLACK_BOT_TOKEN']
15+
VERIFICATION_TOKEN = os.environ['VERIFICATION_TOKEN']
16+
17+
#instantiating slack client
18+
slack_client = WebClient(slack_token)
19+
20+
# An example of one of your Flask app's routes
21+
@app.route("/")
22+
def event_hook(request):
23+
json_dict = json.loads(request.body.decode("utf-8"))
24+
if json_dict["token"] != VERIFICATION_TOKEN:
25+
return {"status": 403}
26+
27+
if "type" in json_dict:
28+
if json_dict["type"] == "url_verification":
29+
response_dict = {"challenge": json_dict["challenge"]}
30+
return response_dict
31+
return {"status": 500}
32+
return
33+
34+
35+
slack_events_adapter = SlackEventAdapter(
36+
SLACK_SIGNING_SECRET, "/slack/events", app
37+
)
38+
39+
40+
@slack_events_adapter.on("app_mention")
41+
def handle_message(event_data):
42+
def send_reply(value):
43+
event_data = value
44+
message = event_data["event"]
45+
if message.get("subtype") is None:
46+
command = message.get("text")
47+
channel_id = message["channel"]
48+
if any(item in command.lower() for item in greetings):
49+
message = (
50+
"Hello <@%s>! :tada:"
51+
% message["user"] # noqa
52+
)
53+
slack_client.chat_postMessage(channel=channel_id, text=message)
54+
thread = Thread(target=send_reply, kwargs={"value": event_data})
55+
thread.start()
56+
return Response(status=200)
57+
58+
59+
# Start the server on port 3000
60+
if __name__ == "__main__":
61+
app.run(port=3000)

0 commit comments

Comments
 (0)