From 90479620b61386f63e6f9dc94aab4b72be33dc33 Mon Sep 17 00:00:00 2001 From: amaoo Date: Tue, 14 Mar 2023 21:34:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=20socket=20=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E6=9D=A5=E7=9B=91=E5=90=AC=20slack=20=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- channel/slack/slack_channel.py | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/channel/slack/slack_channel.py b/channel/slack/slack_channel.py index 7f0861e..606aef2 100644 --- a/channel/slack/slack_channel.py +++ b/channel/slack/slack_channel.py @@ -1,23 +1,17 @@ -import json import re -from flask import Flask, request, Response from slack_bolt import App -from slack_bolt.adapter.flask import SlackRequestHandler +from slack_bolt.adapter.socket_mode import SocketModeHandler from common import const from common.log import logger from channel.channel import Channel from config import channel_conf -# 创建 Flask 实例 -flask_app = Flask(__name__) - # 创建 Slack Bolt 实例 -app = App(token=channel_conf(const.SLACK).get('slack_bot_token'), - signing_secret=channel_conf(const.SLACK).get('slack_signing_secret')) - -# 创建 SlackRequestHandler 实例 -handler = SlackRequestHandler(app) +app = App(token=channel_conf(const.SLACK).get('slack_bot_token')) +# 创建 SocketModeHandler 实例 +handler = SocketModeHandler(app=app, + app_token=channel_conf(const.SLACK).get('slack_app_token')) # 监听 Slack app_mention 事件 @app.event("app_mention") @@ -29,20 +23,9 @@ def handle_mention(event, say): reply_text = SlackChannel().handle(event) say(text=f"{reply_text}", thread_ts=ts) - -# 监听所有来自 Slack 的事件,并将它们转发到 Slack 应用处理 -@flask_app.route("/slack/events", methods=["POST"]) -def slack_events(): - data = json.loads(request.data) - if data['type'] == 'url_verification': - return f"{data['challenge']}", 200 - handler.handle(request) - return "ok", 200 - - class SlackChannel(Channel): def startup(self): - flask_app.run(host='0.0.0.0', port=80) + handler.start() def handle(self, event): context = dict()