]> git.cworth.org Git - turbot/commitdiff
Add a listener for the Slack "channel_created" event
authorCarl Worth <cworth@cworth.org>
Tue, 29 Sep 2020 18:15:54 +0000 (11:15 -0700)
committerCarl Worth <cworth@cworth.org>
Tue, 29 Sep 2020 19:59:03 +0000 (12:59 -0700)
Currently this just posts a simple message when a channel is
created. Eventually, we'll want to do something different such as
creating a puzzle sheet and linking/pinning it to the channel.

turbot/slack.py
turbot/turbot.py

index 998282286efdde6e81de8c0669c0d4bedcd0ed34..62181005bc301aafe458cdb6ce560af19b9d877c 100644 (file)
@@ -53,7 +53,21 @@ def slack_send_reply(request, text):
         if (resp.status_code != 200):
             app.logger.error("Error posting request to Slack: " + resp.text)
     else:
-        try:
-            slack_client.chat_postMessage(channel=channel, text=text)
-        except SlackApiError as e:
-            app.logger.error("Slack API error: " + e.response["error"])
+        slack_send_message(channel, text)
+
+def slack_send_message(channel, text):
+    """Send a Slack message to a specified channel.
+
+    Note: If flask is in debug mode, this function will just print the
+    text to stdout."""
+
+    app = current_app
+
+    if (app.debug):
+        print("Sending message to channel '{}': {}".format(channel, text))
+        return
+
+    try:
+        slack_client.chat_postMessage(channel=channel, text=text)
+    except SlackApiError as e:
+        app.logger.error("Slack API error: " + e.response["error"])
index fa37804503a11268fcba930223044577972e46c0..e7fc87eca585d3ac7fbf9c37fd2dc2efee34e47a 100755 (executable)
@@ -4,6 +4,7 @@ from flask import Flask
 from slackeventsapi import SlackEventAdapter
 import os
 from turbot.rot import rot_route
+from turbot.slack import slack_send_message
 
 app = Flask(__name__)
 app.register_blueprint(rot_route)
@@ -11,6 +12,14 @@ app.register_blueprint(rot_route)
 slack_signing_secret = os.environ['SLACK_SIGNING_SECRET']
 slack_events = SlackEventAdapter(slack_signing_secret, "/slack/events", app)
 
+@slack_events.on("channel_created")
+def handle_channel_created(event_data):
+    event = event_data["event"]
+    channel = event["channel"]
+    slack_send_message(channel["id"],
+                       "Cool. You made a channel named {}"
+                       .format(channel["name"]))
+
 @slack_events.on("error")
 def handle_error(error):
     app.logger.error("Error from Slack: " + str(error))