mirror of
https://github.com/zhayujie/bot-on-anything.git
synced 2026-02-15 08:15:47 +08:00
使用 socket 模式来监听 slack 事件
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user