11# ------------------------------------------------
22# instead of slack_bolt in requirements.txt
3- import re
43import sys
54
65sys .path .insert (1 , ".." )
1211
1312from slack_bolt import App
1413
15- app = App (process_before_response = True )
14+ app = App ()
1615
1716
1817@app .middleware # or app.use(log_request)
@@ -21,222 +20,12 @@ def log_request(logger, payload, next):
2120 return next ()
2221
2322
24- @app .command ("/hello-bolt-python" )
25- # or app.command(re.compile(r"/hello-.+"))(test_command)
26- def test_command (payload , respond , client , ack , logger ):
27- logger .info (payload )
28- ack ("Thanks!" )
29-
30- respond (blocks = [
31- {
32- "type" : "section" ,
33- "block_id" : "b" ,
34- "text" : {
35- "type" : "mrkdwn" ,
36- "text" : "You can add a button alongside text in your message. "
37- },
38- "accessory" : {
39- "type" : "button" ,
40- "action_id" : "a" ,
41- "text" : {
42- "type" : "plain_text" ,
43- "text" : "Button"
44- },
45- "value" : "click_me_123"
46- }
47- }
48- ])
49-
50- res = client .views_open (
51- trigger_id = payload ["trigger_id" ],
52- view = {
53- "type" : "modal" ,
54- "callback_id" : "view-id" ,
55- "title" : {
56- "type" : "plain_text" ,
57- "text" : "My App" ,
58- },
59- "submit" : {
60- "type" : "plain_text" ,
61- "text" : "Submit" ,
62- },
63- "close" : {
64- "type" : "plain_text" ,
65- "text" : "Cancel" ,
66- },
67- "blocks" : [
68- {
69- "type" : "input" ,
70- "element" : {
71- "type" : "plain_text_input"
72- },
73- "label" : {
74- "type" : "plain_text" ,
75- "text" : "Label" ,
76- }
77- },
78- {
79- "type" : "input" ,
80- "block_id" : "es_b" ,
81- "element" : {
82- "type" : "external_select" ,
83- "action_id" : "es_a" ,
84- "placeholder" : {
85- "type" : "plain_text" ,
86- "text" : "Select an item"
87- }
88- },
89- "label" : {
90- "type" : "plain_text" ,
91- "text" : "Search"
92- }
93- },
94- {
95- "type" : "input" ,
96- "block_id" : "mes_b" ,
97- "element" : {
98- "type" : "multi_external_select" ,
99- "action_id" : "mes_a" ,
100- "placeholder" : {
101- "type" : "plain_text" ,
102- "text" : "Select an item"
103- }
104- },
105- "label" : {
106- "type" : "plain_text" ,
107- "text" : "Search (multi)"
108- }
109- }
110-
111- ]
112- })
113- logger .info (res )
114-
115-
116- @app .options ("es_a" )
117- def show_options (ack ):
118- ack ({
119- "options" : [
120- {
121- "text" : {
122- "type" : "plain_text" ,
123- "text" : "Maru"
124- },
125- "value" : "maru"
126- }
127- ]
128- })
129-
130-
131- @app .options ("mes_a" )
132- def show_multi_options (ack ):
133- ack ({
134- "option_groups" : [
135- {
136- "label" : {
137- "type" : "plain_text" ,
138- "text" : "Group 1"
139- },
140- "options" : [
141- {
142- "text" : {
143- "type" : "plain_text" ,
144- "text" : "Option 1"
145- },
146- "value" : "1-1"
147- },
148- {
149- "text" : {
150- "type" : "plain_text" ,
151- "text" : "Option 2"
152- },
153- "value" : "1-2"
154- }
155- ]
156- },
157- {
158- "label" : {
159- "type" : "plain_text" ,
160- "text" : "Group 2"
161- },
162- "options" : [
163- {
164- "text" : {
165- "type" : "plain_text" ,
166- "text" : "Option 1"
167- },
168- "value" : "2-1"
169- },
170- ]
171- }
172- ]
173- })
174-
175-
176- @app .view ("view-id" )
177- def view_submission (ack , payload , logger ):
178- logger .info (payload )
179- return ack ()
180-
181-
182- @app .action ("a" )
183- def button_click (logger , payload , ack , respond ):
184- logger .info (payload )
185- respond ("respond!" )
186- # say(text="say!")
187- ack ()
188-
189-
19023@app .event ("app_mention" )
19124def event_test (payload , say , logger ):
19225 logger .info (payload )
19326 say ("What's up?" )
19427
19528
196- @app .message ("test" )
197- def test_message (logger , payload ):
198- logger .info (payload )
199-
200-
201- @app .message (re .compile ("seratch\d" ))
202- def seratch_message (logger , payload ):
203- logger .info (payload )
204-
205-
206- # @app.event("message")
207- # def new_message(logger, payload):
208- # message = payload.get("event", {}).get("text", None)
209- # logger.info(f"A new message was posted (text: {message})")
210-
211-
212- message_deleted_constraints = {"type" : "message" , "subtype" : "message_deleted" }
213-
214-
215- @app .event (
216- event = message_deleted_constraints ,
217- matchers = [lambda payload : payload ["event" ]["previous_message" ].get ("bot_id" , None ) is None ]
218- )
219- def deleted (payload , say ):
220- message = payload ["event" ]["previous_message" ]["text" ]
221- say (f"I've noticed you deleted: { message } " )
222-
223-
224- def print_bot (req , resp , next ):
225- bot_id = req .payload ["event" ]["previous_message" ]["bot_id" ]
226- logger = logging .getLogger (__name__ )
227- logger .info (f"bot_id surely exists here: { bot_id } " )
228- return next ()
229-
230-
231- @app .event (
232- event = message_deleted_constraints ,
233- matchers = [lambda payload : payload ["event" ]["previous_message" ].get ("bot_id" , None )],
234- middleware = [print_bot ]
235- )
236- def bot_message_deleted (logger ):
237- logger .info ("A bot message has been deleted" )
238-
239-
24029if __name__ == "__main__" :
24130 app .start (3000 )
24231
0 commit comments