X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=turbot%2Finteraction.py;h=69d4f2505d52a1fd1905b3c36298bfc8b068c466;hb=0bab5b46f6a9d98b2e7f1c8b14eda73569d8e4b9;hp=34aa31305427661b83825ec8849b8a8859507b8e;hpb=59f80efe50f26c1f2e288cc85be2b24a9590a930;p=turbot diff --git a/turbot/interaction.py b/turbot/interaction.py index 34aa313..69d4f25 100644 --- a/turbot/interaction.py +++ b/turbot/interaction.py @@ -86,12 +86,42 @@ def edit(turb, body, args): """Implementation of the `/edit` command - To edit the puzzle for the current channel. + 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. - This is simply a shortcut for `/puzzle edit`. + In any case, the operation is identical to `/hunt edit` or + `/puzzle edit`. """ - return edit_puzzle_command(turb, body) + # If we have an explicit argument, do what it says to do + if args == "hunt": + return edit_hunt_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 @@ -116,7 +146,6 @@ def edit_puzzle_button(turb, payload): """Handler for the action of user pressing an edit_puzzle button""" action_id = payload['actions'][0]['action_id'] - response_url = payload['response_url'] trigger_id = payload['trigger_id'] (hunt_id, sort_key) = action_id.split('-', 1) @@ -124,9 +153,6 @@ def edit_puzzle_button(turb, payload): puzzle = find_puzzle_for_sort_key(turb, hunt_id, sort_key) if not puzzle: - requests.post(response_url, - json = {"text": "Error: Puzzle not found!"}, - headers = {"Content-type": "application/json"}) return bot_reply("Error: Puzzle not found.") return edit_puzzle(turb, puzzle, trigger_id) @@ -357,15 +383,11 @@ def edit_hunt_button(turb, payload): """Handler for the action of user pressing an edit_hunt button""" hunt_id = payload['actions'][0]['action_id'] - response_url = payload['response_url'] trigger_id = payload['trigger_id'] - hunt = find_hunt_for_hunt_id(hunt_id) + hunt = find_hunt_for_hunt_id(turb, hunt_id) if not hunt: - requests.post(response_url, - json = {"text": "Error: Hunt not found!"}, - headers = {"Content-type": "application/json"}) return bot_reply("Error: Hunt not found.") return edit_hunt(turb, hunt, trigger_id)