
关于
使用 Bolt 框架构建 Slack 应用,支持 Python、JavaScript 和 Java。
name: slack-bot-builder description: 使用 Bolt 框架构建 Slack 应用,支持 Python、JavaScript 和 Java。涵盖 Block Kit 富 UI、交互组件、斜杠命令、事件处理、OAuth 安装流程和 Workflow Builder 集成。 risk: unknown source: vibeship-spawner-skills (Apache 2.0) date_added: 2026-02-27
Slack Bot 构建器
使用 Bolt 框架构建 Slack 应用,支持 Python、JavaScript 和 Java。 涵盖 Block Kit 富 UI、交互组件、斜杠命令、事件处理、OAuth 安装流程和 Workflow Builder 集成。 专注于生产就绪 Slack 应用的最佳实践。
模式
Bolt 应用基础模式
Bolt 框架是 Slack 推荐的应用构建方式。 它处理认证、事件路由、请求验证和 HTTP 请求处理,让你专注于应用逻辑。
主要优势:
- 几行代码即可处理事件
- 内置安全检查和载荷验证
- 组织有序、一致的模式
- 适用于实验和生产
可用语言:Python、JavaScript (Node.js)、Java
何时使用: 启动任何新 Slack 应用、从旧版 Slack API 迁移、构建生产级 Slack 集成
# Python Bolt 应用
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
import os
# 使用环境变量中的令牌初始化
app = App(
token=os.environ["SLACK_BOT_TOKEN"],
signing_secret=os.environ["SLACK_SIGNING_SECRET"]
)
# 处理包含 "hello" 的消息
@app.message("hello")
def handle_hello(message, say):
"""响应包含 'hello' 的消息。"""
user = message["user"]
say(f"Hey there <@{user}>!")
# 处理斜杠命令
@app.command("/ticket")
def handle_ticket_command(ack, body, client):
"""处理 /ticket 斜杠命令。"""
# 立即确认(3 秒内)
ack()
# 打开工单创建模态框
client.views_open(
trigger_id=body["trigger_id"],
view={
"type": "modal",
"callback_id": "ticket_modal",
"title": {"type": "plain_text", "text": "Create Ticket"},
"submit": {"type": "plain_text", "text": "Submit"},
"blocks": [
{
"type": "input",
"block_id": "title_block",
"element": {
"type": "plain_text_input",
"action_id": "title_input"
},
"label": {"type": "plain_text", "text": "Title"}
},
{
"type": "input",
"block_id": "desc_block",
"element": {
"type": "plain_text_input",
"multiline": True,
"action_id": "desc_input"
},
"label": {"type": "plain_text", "text": "Description"}
},
{
"type": "input",
"block_id": "priority_block",
"element": {
"type": "static_select",
"action_id": "priority_select",
"options": [
{"text": {"type": "plain_text", "text": "Low"}, "value": "low"},
{"text": {"type": "plain_text", "text": "Medium"}, "value": "medium"},
{"text": {"type": "plain_text", "text": "High"}, "value": "high"}
]
},
"label": {"type": "plain_text", "text": "Priority"}
}
]
}
)
# 处理模态框提交
@app.view("ticket_modal")
def handle_ticket_submission(ack, body, client, view):
"""处理工单模态框提交。"""
ack()
# 从视图中提取值
values = view["state"]["values"]
title = values["title_blo
兼容工具
Claude CodeCursor
标签
后端开发
