X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=turbot%2Finteraction.py;h=546e59a70a25728b1dcdee92d60f6d5730687fda;hb=4a390d5c89977ae8ff8baae26001d6f047e50903;hp=53f45a701a9fb9bae68d41316af01fe29f518a14;hpb=5e7ee7c20f71996cedd04586d7139250c6704c0d;p=turbot diff --git a/turbot/interaction.py b/turbot/interaction.py index 53f45a7..546e59a 100644 --- a/turbot/interaction.py +++ b/turbot/interaction.py @@ -18,6 +18,7 @@ from turbot.puzzle import ( ) from turbot.round import round_quoted_puzzles_titles_answers from turbot.help import turbot_help +from turbot.have_you_tried import have_you_tried import turbot.rot import turbot.sheets import turbot.slack @@ -1336,19 +1337,37 @@ def help_command(turb, body, args): channel_id = body['channel_id'][0] response_url = body['response_url'][0] + user_id = body['user_id'][0] + + # Process "/help me" first. It calls out to have_you_tried rather + # than going through our help system. + # + # Also, it reports in the current channel, (where all other help + # output is reported privately to the invoking user). + if args == "me": + to_try = "In response to <@{}> asking `/help me`:\n\n{}\n".format( + user_id, have_you_tried()) + + # We'll try first to reply directly to the channel (for the benefit + # of anyone else in the same channel that might be stuck too. + # + # But if this doesn't work, (direct message or private channel), + # then we can instead reply with an ephemeral message by using + # the response_url. + try: + turb.slack_client.chat_postMessage( + channel=channel_id, text=to_try) + except SlackApiError: + requests.post(response_url, + json = {"text": to_try}, + headers = {"Content-type": "application/json"}) + return lambda_ok 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"}) + requests.post(response_url, + json = {"text": help_string}, + headers = {"Content-type": "application/json"}) return lambda_ok