]> git.cworth.org Git - turbot/blobdiff - turbot/hunt.py
Live fix for apparently overflowing the Slack message limit with hunt details
[turbot] / turbot / hunt.py
index 97712982fd32aa7afb4367a7b65ce0838f3c910f..7b515d21c0012ccf5b8f74f9f7962f0ef00349cf 100644 (file)
@@ -41,6 +41,10 @@ def hunt_blocks(turb, hunt, puzzle_status='unsolved', search_terms=[],
                 limit_to_rounds=None):
     """Generate Slack blocks for a hunt
 
+    Returns a list of lists of blocks, (broken up by round so that
+    the receiver should do one Slack post for each entry in the
+    outer array.
+
     The hunt argument should be a dictionary as returned from the
     database.
 
@@ -117,12 +121,13 @@ def hunt_blocks(turb, hunt, puzzle_status='unsolved', search_terms=[],
             button_block("✏", "edit_hunt", hunt_id)
         )
     ]
+    block = blocks[0]
 
     if not len(puzzles):
         text = "No puzzles found."
         if puzzle_status != 'all':
             text += ' (Consider searching for "all" puzzles?)'
-        blocks += [
+        block += [
             section_block(text_block(text))
         ]
 
@@ -132,10 +137,12 @@ def hunt_blocks(turb, hunt, puzzle_status='unsolved', search_terms=[],
             continue
         # If we're only displaying one round the round header is redundant
         if limit_to_rounds and len(limit_to_rounds) == 1:
-            blocks += round_blocks(round, puzzles, omit_header=True)
+            block += round_blocks(round, puzzles, omit_header=True)
         else:
-            blocks += round_blocks(round, puzzles)
-        blocks.append(divider_block())
+            block += round_blocks(round, puzzles)
+        block.append(divider_block())
+        blocks.append([])
+        block = blocks[-1]
 
     # Also blocks for any puzzles not in any round
     stray_puzzles = [puzzle for puzzle in puzzles if 'rounds' not in puzzle]
@@ -147,10 +154,10 @@ def hunt_blocks(turb, hunt, puzzle_status='unsolved', search_terms=[],
     # to rounds but specifically the round of unassigned puzzles
     if len(stray_puzzles) and not limit_to_rounds:
         stray_text = "*Puzzles with no assigned round*"
-        blocks.append(section_block(text_block(stray_text)))
+        block.append(section_block(text_block(stray_text)))
         for puzzle in stray_puzzles:
-            blocks += puzzle_blocks(puzzle)
+            block += puzzle_blocks(puzzle)
 
-    blocks.append(divider_block())
+    block.append(divider_block())
 
     return blocks