]> git.cworth.org Git - turbot/commitdiff
Put a message into the channel when a user edits a puzzle
authorCarl Worth <cworth@cworth.org>
Sat, 9 Jan 2021 08:26:24 +0000 (00:26 -0800)
committerCarl Worth <cworth@cworth.org>
Sat, 9 Jan 2021 08:26:24 +0000 (00:26 -0800)
So that other members of the puzzle are informed that something has changed.

TODO
turbot/interaction.py
turbot/slack.py

diff --git a/TODO b/TODO
index 23db9cb69f82b16b08763accc5e279f3bac83271..20387a6694ee20bf15ffebc1d78a337490675612 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,9 +1,6 @@
 Ordered punch-list (aiming to complete by 2021-01-08)
 -----------------------------------------------------
 
-• Put a message in the puzzle channel when a user edits something
-  (maybe just spit out the /puzzle output)
-
 • Add new /puzzle edit as a shortcut instead of /puzzle followed by
   clicking :pencil:
 
index 955fae5b776f15db7222e7a5e3a0cbe81ec4f0c0..e68aa6f276a7754e60d38a1c73cafbbc70825ec2 100644 (file)
@@ -179,6 +179,7 @@ def edit_puzzle_submission(turb, payload, metadata):
     puzzle['sheet_url'] = meta['sheet_url']
 
     state = payload['view']['state']['values']
+    user_id = payload['user']['id']
 
     puzzle['name'] = state['name']['name']['value']
     url = state['url']['url']['value']
@@ -238,6 +239,14 @@ def edit_puzzle_submission(turb, payload, metadata):
     # Update the puzzle in the database
     turb.table.put_item(Item=puzzle)
 
+    # Inform the puzzle channel about the edit
+    edit_message = "Puzzle edited by <@{}>".format(user_id)
+    blocks = ([section_block(text_block(edit_message+":\n"))] +
+              puzzle_blocks(puzzle, include_rounds=True))
+    slack_send_message(
+        turb.slack_client, puzzle['channel_id'],
+        edit_message, blocks=blocks)
+
     # We need to set the channel topic if any of puzzle name, url,
     # state, status, or solution, has changed. Let's just do that
     # unconditionally here.
index b824213550a0851e6222efa05e5e083b8b1efbae..6ea9166595e7b236eeeaa009d41fdd0653e1939d 100644 (file)
@@ -59,5 +59,9 @@ def slack_channel_members(slack_client, channel_id):
 
     return members
 
-def slack_send_message(slack_client, channel_id, text):
-    slack_client.chat_postMessage(channel=channel_id, text=text)
+def slack_send_message(slack_client, channel_id, text, blocks=None):
+    if blocks:
+        slack_client.chat_postMessage(channel=channel_id,
+                                      text=text, blocks=blocks)
+    else:
+        slack_client.chat_postMessage(channel=channel_id, text=text)