1+ # ------------------
2+ # Only for running this script here
3+ import logging
4+ import sys
5+ from os .path import dirname
6+
7+ sys .path .insert (1 , f"{ dirname (__file__ )} /../.." )
8+ logging .basicConfig (level = logging .DEBUG )
9+ # ------------------
10+
11+ from slackeventsapi import SlackEventAdapter
12+ from slack import WebClient
13+ import os
14+
15+ slack_signing_secret = os .environ ["SLACK_SIGNING_SECRET" ]
16+ slack_events_adapter = SlackEventAdapter (slack_signing_secret , "/slack/events" )
17+
18+ # pip install proxy.py
19+ # proxy --port 9000 --log-level d
20+ proxy_info = "http://localhost:9000"
21+ slack_bot_token = os .environ ["SLACK_BOT_TOKEN" ]
22+ slack_client = WebClient (token = slack_bot_token , proxy = proxy_info )
23+
24+ @slack_events_adapter .on ("message" )
25+ def handle_message (event_data ):
26+ message = event_data ["event" ]
27+ if message .get ("subtype" ) is None and "hi" in message .get ('text' ):
28+ channel = message ["channel" ]
29+ message = "Hello <@%s>! :tada:" % message ["user" ]
30+ slack_client .chat_postMessage (channel = channel , text = message )
31+
32+
33+ @slack_events_adapter .on ("reaction_added" )
34+ def reaction_added (event_data ):
35+ event = event_data ["event" ]
36+ emoji = event ["reaction" ]
37+ channel = event ["item" ]["channel" ]
38+ text = ":%s:" % emoji
39+ slack_client .chat_postMessage (channel = channel , text = text )
40+
41+ @slack_events_adapter .on ("error" )
42+ def error_handler (err ):
43+ print ("ERROR: " + str (err ))
44+
45+ if __name__ == '__main__' :
46+ slack_events_adapter .start (port = 3000 )
47+
48+ # -------------------------------
49+
50+ # (Terminal A)
51+ # source env/bin/activate
52+ # (env) $ export SLACK_BOT_TOKEN=xoxb-***
53+ # (env) $ export SLACK_SIGNING_SECRET=**
54+ # (env) $ FLASK_ENV=development python example/working_with_proxy/example.py
55+
56+ # (Terminal B)
57+ # source env/bin/activate
58+ # (env) $ proxy --port 9000 --log-level d
59+
60+ # (Terminal C)
61+ # ngrok http 3000
62+
63+ # in Slack
64+ # /invite @{your app's bot user}
65+ # post a message "hi" in the channel
0 commit comments