Ordered punch-list (aiming to complete by 2021-01-08)
-----------------------------------------------------
-• Add new /puzzle giving puzzle status (and including :pencil:)
-
• Put a message in the puzzle channel when a user edits something
(maybe just spit out the /puzzle output)
find_puzzle_for_url,
find_puzzle_for_puzzle_id,
puzzle_update_channel_and_sheet,
- puzzle_id_from_name
+ puzzle_id_from_name,
+ puzzle_blocks
)
import turbot.rot
import turbot.sheets
The args string can be a sub-command:
/puzzle new: Bring up a dialog to create a new puzzle
+
+ Or with no argument at all:
+
+ /puzzle: Print details of the current puzzle (if in a puzzle channel)
"""
if args == 'new':
return new_puzzle(turb, body)
- return bot_reply("Unknown syntax for `/puzzle` command. " +
- "Use `/puzzle new` to create a new puzzle.")
+ if len(args):
+ return bot_reply("Unknown syntax for `/puzzle` command. " +
+ "Use `/puzzle new` to create a new puzzle.")
+
+ # For no arguments we print the current puzzle as a reply
+ channel_id = body['channel_id'][0]
+ response_url = body['response_url'][0]
+
+ puzzle = puzzle_for_channel(turb, channel_id)
+
+ if not puzzle:
+ hunt = hunt_for_channel(turb, channel_id)
+ if hunt:
+ return bot_reply(
+ "This is not a puzzle channel, but is a hunt channel. "
+ + "If you want to create a new puzzle for this hunt, use "
+ + "`/puzzle new`.")
+ else:
+ return bot_reply(
+ "Sorry, this channel doesn't appear to be a hunt or a puzzle "
+ + "channel, so the `/puzzle` command cannot work here.")
+
+ blocks = puzzle_blocks(puzzle)
+
+ requests.post(response_url,
+ json = {'blocks': blocks},
+ headers = {'Content-type': 'application/json'}
+ )
+
+ return lambda_ok
commands["/puzzle"] = puzzle