From 9a0a686586122ccb3c44c1cf61ee2addfe58cf08 Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Mon, 11 Jan 2021 08:25:20 -0800 Subject: [PATCH] Make /edit command smart to auto-edit either puzzle or hunt Depending on which kind of channel it is run in. It's still possible to explicitly run `/edit puzzle` or `/edit hunt` instead. --- turbot/interaction.py | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/turbot/interaction.py b/turbot/interaction.py index 05bbbb8..392574d 100644 --- a/turbot/interaction.py +++ b/turbot/interaction.py @@ -86,16 +86,42 @@ def edit(turb, body, args): """Implementation of the `/edit` command - This can be used as `/edit hunt` or `/edit puzzle`, (and if issued as - just `/edit` will default to editing the current puzzle. + This can be used as `/edit` (with no arguments) in either a hunt + or a puzzle channel to edit that hunt or puzzle. It can also be + called explicitly as `/edit hunt` to edit a hunt even from a + puzzle channel. - These are simply shortcuts for `/hunt edit` and `/puzzle edit`. + In any case, the operation is identical to `/hunt edit` or + `/puzzle edit`. """ + # If we have an explicit argument, do what it says to do if args == "hunt": return edit_hunt_command(turb, body) - return edit_puzzle_command(turb, body) + 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.") commands["/edit"] = edit -- 2.43.0