]> git.cworth.org Git - turbot/blobdiff - turbot/interaction.py
Add an initial implementation of /help
[turbot] / turbot / interaction.py
index 392574d89f1d8c9405dd18fee541a8815aea720f..53f45a701a9fb9bae68d41316af01fe29f518a14 100644 (file)
@@ -17,6 +17,7 @@ from turbot.puzzle import (
     puzzle_copy
 )
 from turbot.round import round_quoted_puzzles_titles_answers
+from turbot.help import turbot_help
 import turbot.rot
 import turbot.sheets
 import turbot.slack
@@ -146,7 +147,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)
@@ -154,9 +154,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)
@@ -387,15 +384,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)
@@ -1334,3 +1327,29 @@ def round(turb, body, args):
     return lambda_ok
 
 commands["/round"] = round
+
+def help_command(turb, body, args):
+    """Implementation of the /help command
+
+    Displays help on how to use Turbot.
+    """
+
+    channel_id = body['channel_id'][0]
+    response_url = body['response_url'][0]
+
+    help_string = turbot_help(args)
+
+    # The "/help me" command is special in that it reports in the
+    # current channel, (where all other commands report privately to
+    # the invoking user).
+    if args == "me":
+        turb.slack_client.chat_postMessage(
+            channel=channel_id, text=help_string)
+    else:
+        requests.post(response_url,
+                      json = {"text": help_string},
+                      headers = {"Content-type": "application/json"})
+
+    return lambda_ok
+
+commands["/help"] = help_command