+ if args == "puzzle":
+ return edit_puzzle_command(turb, body)
+
+ # Any other argument string is an error
+ if args:
+ return bot_reply("Error: Unexpected argument: {}\n".format(args) +
+ "Usage: `/edit puzzle`, `/edit hunt`, or " +
+ "`/edit` (to choose based on channel)"
+ )
+
+ # No explicit argument, so select what to edit based on the current channel
+ channel_id = body['channel_id'][0]
+ trigger_id = body['trigger_id'][0]
+
+ puzzle = puzzle_for_channel(turb, channel_id)
+ if puzzle:
+ return edit_puzzle(turb, puzzle, trigger_id)
+
+ hunt = hunt_for_channel(turb, channel_id)
+ if hunt:
+ return edit_hunt(turb, hunt, trigger_id)
+
+ return bot_reply("Sorry, `/edit` only works in a hunt or puzzle channel.")