Python开发Slack Bot教程:从零搭建到接入GPT-4o完整指南

用Python从零构建接入GPT-4o的智能Slack Bot全流程教程
本文完整演示了用Python构建Slack Bot的开发流程:从创建Slack应用、启用Socket Mode、配置权限与事件订阅,到用slack-bolt库实现消息响应、斜杠命令处理,最后接入OpenAI GPT-4o实现智能对话。核心代码不超过50行,即可构建一个功能完整的智能Bot雏形,并可扩展至运维自动化、数据查询、AI Agent等场景。
Slack是企业团队协作的核心工具,而通过Python构建自定义Slack Bot,能把自动化能力直接嵌入日常工作流。本文基于一个快速上手教程,带你从环境配置到接入大语言模型,完整走通Slack Bot的开发流程。
为什么要开发Slack Bot
日常工作中,大量重复性任务都可以通过Bot自动化完成——从简单的消息响应、命令执行,到接入AI实现智能问答。Slack Bot的核心价值在于:它把自动化能力放在了团队沟通的中心位置,无需切换工具就能触发各种工作流。
本文聚焦于构建一个最小可行产品(MVP),包含三个核心能力:
- 响应特定消息
- 执行斜杠命令
- 接入OpenAI的GPT-4o模型实现智能对话
环境准备与Slack应用配置
创建Slack应用
首先你需要一个Slack账号和一个有管理权限的工作区。访问 api.slack.com/apps,点击「Create New App」,选择「From scratch」从零开始创建。给应用起个名字(如Tutorial Bot),选择目标工作区,点击创建即可。
创建完成后,页面会显示Client ID、App ID等凭证,不过本文的场景暂时用不到这些。
启用Socket Mode
在左侧导航栏找到「Socket Mode」,开启它。这是Bot运行的基础模式。系统会要求你添加 connections:write 权限范围,然后生成一个Socket Token——务必保存好这个Token。

配置Bot权限与事件订阅
进入「OAuth & Permissions」页面,在Bot Token Scopes中添加 chat:write 权限,赋予Bot发送消息的能力。
然后进入「Event Subscriptions」,启用事件订阅,在Bot Events中添加 message.channels 事件。这样Bot就能监听频道中的消息并做出响应。
添加斜杠命令
在「Slash Commands」中创建一个新命令 /add,描述为"add two numbers",示例参数填 1 2。

最后回到「OAuth & Permissions」,将应用安装到工作区,获取Bot User OAuth Token。将两个Token保存到项目目录的 .env 文件中:
SLACK_SOCKET_TOKEN=xapp-...
SLACK_BOT_TOKEN=xoxb-...
编写Bot核心代码
项目初始化与依赖安装
安装所需的Python依赖包:
pip install slack-bolt python-dotenv
创建 main.py,写入基础框架:
import os
from dotenv import load_dotenv
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
load_dotenv()
app = App(token=os.getenv("SLACK_BOT_TOKEN"))
响应特定消息
先实现最基础的功能——当用户发送"hello"时,Bot回复问候:
@app.message("hello")
def hello(message, say):
say(f"Hello <@{message['user']}>")
@app.message() 装饰器的工作方式类似Flask的路由机制,匹配特定字符串后触发对应函数。say 函数用于发送回复,message 对象包含发送者等上下文信息。

实现斜杠命令功能
为之前配置的 /add 命令添加实际逻辑:
@app.command("/add")
def add(ack, respond, command):
ack()
try:
a, b = map(float, command["text"].split())
respond(str(a + b))
except:
respond("Usage: /add 1 2")
这段代码有几个关键点需要注意:
ack()必须首先调用:Slack要求3秒内确认收到命令,否则会提示超时command["text"]:获取命令后面的参数文本respond:用于向用户返回执行结果
处理通用消息事件
对于非"hello"且非斜杠命令的消息,可以通过事件监听来兜底处理:
@app.event("message")
def handle_message_events(body, say):
say("What?")
启动Bot服务
在文件末尾添加启动代码:
SocketModeHandler(app, os.getenv("SLACK_SOCKET_TOKEN")).start()

运行 python main.py 后,终端会显示"Bolt app is running"。别忘了在Slack频道中邀请Bot(输入 /invite @Tutorial Bot),然后就可以开始测试了:发送"hello"会收到问候回复,使用 /add 20 30 会返回50。
接入OpenAI大语言模型
基础功能跑通之后,接下来是最有意思的部分——将Bot连接到GPT-4o,让它具备智能对话能力。
配置OpenAI API与代码改造
首先在 .env 文件中添加OpenAI API Key:
OPENAI_API_KEY=sk-...
安装OpenAI包并修改代码:
from openai import OpenAI
load_dotenv()
client = OpenAI() # 自动读取OPENAI_API_KEY环境变量
@app.event("app_mention")
def mention_gpt_response(event, say):
text = event.get("text", "")
response = client.responses.create(
model="gpt-4o",
input=text
)
say(response.output_text)
这里用 app_mention 事件替代了通用的 message 事件,也就是说只有在@提及Bot时才会触发AI响应。这个设计很重要,可以避免对所有消息都调用API,减少不必要的开销。
别忘了关键步骤:需要回到Slack API配置页面,在Event Subscriptions中添加 app_mention 事件,保存后重新安装应用到工作区,并更新 .env 中的Bot Token。
实际效果展示
在Slack中@Tutorial Bot并提问,比如"How are you?",Bot会通过GPT-4o生成自然语言回复。你甚至可以让它生成代码,比如"write a simple recursive Fibonacci function in Python",生成的代码会直接显示在聊天窗口中。
进阶思路与应用场景
有了这个基础框架,可以扩展出许多实用场景:
- 运维自动化:通过Slack命令触发部署、查看服务状态
- 数据查询:连接数据库,用自然语言查询业务数据
- AI Agent交互入口:将Bot作为AI Agent的控制界面,在Slack中管理复杂工作流
- 代码审查助手:接入代码仓库,自动分析PR并在Slack中反馈
- 服务器监控:在服务器上运行的程序通过Slack消息来控制和监控
核心思路是将Slack Bot作为团队协作与自动化之间的桥梁,把各种能力统一到一个沟通界面中。
总结
本文完整演示了用Python构建Slack Bot的全流程:从Slack API配置、Socket Mode启用、权限设置,到消息响应、斜杠命令、事件监听的代码实现,最后接入OpenAI GPT-4o实现智能对话。
整个项目只依赖 slack-bolt、python-dotenv 和 openai 三个包,核心代码不超过50行,但已经具备了一个功能完整的智能Bot雏形。理解了Slack的事件驱动模型和装饰器路由机制之后,在此基础上扩展更复杂的功能就顺理成章了。
相关推荐
教程攻略Cursor+Codex双IDE协同:开源项目二开实战方法论
基于实战经验总结的开源项目二次开发完整方法论,详解Cursor+Codex双IDE协同工作流,涵盖二开七环节、MVP验证、AI读源码技巧,帮助开发者三天跑通项目、两周完成业务集成。
教程攻略Cursor多Agent实战:50分钟搭建Next.js全栈博客
使用Cursor IDE多Agent协作模式,50分钟内从零搭建全栈博客。涵盖Next.js、Clerk认证、Supabase数据库集成,详解4个AI Agent分阶段开发流程与关键避坑经验。
教程攻略从零搭建AI软件工厂:Cursor工程师的多Agent协作实战经验
Cursor工程师Eric分享AI软件工厂构建实战:从自动化六层级、护栏设计、并行Agent管理到规模化扩展,详解如何用多Agent协作实现7×24小时高效软件开发。