Spaces:
Paused
Paused
| import os | |
| from slack_sdk import WebClient | |
| from slack_sdk.errors import SlackApiError | |
| from flask import Flask, request, Response | |
| app = Flask(__name__) | |
| SLACK_TOKEN = os.getenv('SLACK_TOKEN') | |
| SLACK_SIGNING_SECRET = os.getenv('SIGNING_SECRET') | |
| TARGET_CHANNEL_ID = os.getenv('CHANNEL_ID') | |
| TRIGGERS = { | |
| "urgent": "<@U061W3NRFFA>", | |
| "help": "<@U061W3NRFFA>", | |
| } | |
| slack_client = WebClient(token=SLACK_TOKEN) | |
| def slack_events(): | |
| if not verify_slack_request(request): | |
| return Response(status=403) | |
| data = request.json | |
| if "event" in data: | |
| event = data["event"] | |
| if event.get("type") == "message" and not "subtype" in event: | |
| handle_message_event(event) | |
| return Response(status=200) | |
| def verify_slack_request(request): | |
| return True | |
| def handle_message_event(event): | |
| user = event.get("user") | |
| text = event.get("text").lower() | |
| channel = event.get("channel") | |
| for trigger, slack_mention in TRIGGERS.items(): | |
| if trigger in text: | |
| post_to_slack(channel, slack_mention, text) | |
| break | |
| def post_to_slack(channel, slack_mention, text): | |
| try: | |
| response = slack_client.chat_postMessage( | |
| channel=TARGET_CHANNEL_ID, | |
| text=f"{slack_mention} New message in <#{channel}>: {text}" | |
| ) | |
| except SlackApiError as e: | |
| print(f"Error posting to Slack: {e.response['error']}") | |
| if __name__ == "__main__": | |
| app.run(port=3000) | |