一个基于 Python + FastAPI 开发的飞书机器人,用于管理"Build In Public - 独立开发者21天线上活动"。该机器人支持活动报名管理、打卡统计、AI 反馈等功能。
- 自动生成活动期数(YYYY-MM 格式)
- 活动状态流转(报名中 -> 进行中 -> 已结束)
- 接龙数据同步(支持飞书多维表格)
- 防重复创建机制
- 支持每日打卡记录
- AI 智能反馈
- 打卡统计和进度追踪
- 自动去重和验证
- 自动定时排名公布(活动第3、7、14、21天)
- 基于 DeepSeek API 的智能反馈
- 考虑历史打卡记录
- 个性化鼓励和建议
- 活泼友好的互动风格
- 在活动第3、7、14、21天晚上9点自动发布
- 展示打卡次数前10名用户排名
- 为前5名用户提供项目进度简报
- 基于实际打卡记录自动统计
- 后端框架:Python + FastAPI
- 数据库:MySQL
- ORM:SQLAlchemy
- AI 服务:DeepSeek API
- 消息平台:飞书开放平台
- 后台任务:自定义线程调度系统
- Python 3.x
- MySQL 5.7+
- 飞书开放平台账号
- DeepSeek API 密钥
pip install -r requirements.txt
# 创建数据库和表
mysql -u root -p < feishu_bot.sql
复制 .env.example
到 .env
并配置以下参数:
# 数据库配置
DATABASE_URL=mysql+pymysql://username:password@localhost:3306/feishu_bot
# DeepSeek API配置
DEEPSEEK_API_KEY=your_api_key
DEEPSEEK_API_ENDPOINT=https://xxxx
# 飞书配置
FEISHU_APP_ID=your_app_id
FEISHU_APP_SECRET=your_app_secret
# 聊天群配置
DEFAULT_CHAT_ID=oc_xxxxxxxx
uvicorn main:app --host 0.0.0.0 --port 8000
- 发起接龙:发送接龙卡片
#接龙结束
:结束报名,同步数据#活动结束
:结束当前活动期
#打卡 昵称 工作内容
- 限制:
- 内容长度:2-500字
- 频率:每人每天一次
- 条件:活动进行中且已报名
- 排名公布:活动第3、7、14、21天晚上9点自动发布打卡排名
-
periods(活动期数表)
- 管理活动期数和状态
- 存储接龙表格链接
-
signups(报名记录表)
- 记录用户报名信息
- 存储用户目标和专注领域
-
checkins(打卡记录表)
- 记录每日打卡内容
- 追踪打卡次数和时间
详细的数据库结构见 feishu_bot.sql
app/
├── models/ # 数据模型
│ └── database.py # 数据库模型定义
├── services/ # 业务逻辑
│ ├── message_handler.py # 消息处理
│ ├── feishu_service.py # 飞书API
│ ├── openai_service.py # AI服务
│ └── scheduler.py # 定时任务调度
└── utils/ # 工具函数
main.py
:应用入口和路由配置app/services/message_handler.py
:消息处理核心逻辑app/services/feishu_service.py
:飞书API交互app/services/openai_service.py
:AI反馈生成app/services/scheduler.py
:定时任务调度系统
-
数据库连接失败
- 检查数据库配置
- 确保MySQL服务运行中
-
API调用失败
- 验证API密钥配置
- 检查网络连接
-
消息重复处理
- 系统已包含消息去重机制
- 检查日志中的消息ID
-
排名功能异常
- 确保设置了正确的DEFAULT_CHAT_ID
- 检查该群是否添加了机器人
系统使用分级日志:
- INFO:常规操作日志
- WARNING:需要注意的异常情况
- ERROR:严重错误
-
定期检查
- 数据库连接状态
- API 调用额度
- 日志文件大小
- 调度任务运行状态
-
数据备份
- 定期备份数据库
- 保存重要日志
MIT License
如有问题或建议,请提交 Issue 或联系管理员。