使用 socket 模式来监听 slack 事件

This commit is contained in:
amaoo
2023-03-14 21:34:48 +08:00
parent 006a5d946e
commit 90479620b6

View File

@@ -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()