Bubbles-WechatAI
我叫 泡泡(Bubbles) - 一个个人微信助手
🔗 写在前面
我一直在尝试做一个全面的的生态助手(个人助理),能够连接我使用的任何工具、日程表、数据库、资料库。并基于数据资料,实时地和我交流,以及帮我安排日程、提醒、规划时间和出行,安排我的任务计划。
之前做了 LifeSync-AI,基于Github Action、Notion、Zapier进行app互联,帮我进行每天的任务规划。但定时任务是被动的,而且缺少一个统一的数据处理中心,能够通过与用户交流进行实时的任务调度。
这就是这个项目的初衷。
📝 项目简介
Bubbles 是一个功能丰富的微信机器人框架,基于 wcferry 和 WechatRobot 开发,支持接入多种大型语言模型(LLM),提供丰富的交互功能和定时任务。该项目旨在将微信客户端转变为一个智能的个人助手,可以执行多种实用功能,带来便捷的用户体验。
✨ 核心特性
🤖 灵活的模型配置
- 支持为不同的群聊和私聊设置不同的 AI 模型和 system prompt
- OpenAI (ChatGPT)
- Google Gemini
- 智谱 AI (ChatGLM)
- 科大讯飞星火大模型
- 阿里云通义千问
- TigerBot
- DeepSeek
- Perplexity
- Ollama (本地部署的模型)
🛠️ 丰富的命令系统
- 强大的命令路由系统,让功能新增无比简单
- 支持自定义命令及参数
- 预设 多种实用和娱乐命令
🎨 AI 图像生成
- 支持调用多种 AI 绘图模型生成图片
⏰ 定时任务与提醒功能
- 每日天气预报推送
- 每日新闻资讯推送
- 工作日报/周报/月报提醒
- 个人自定义提醒系统(通过自然语言设置定时提醒)
📊 对话管理
- 智能消息总结功能
- 处理各类微信消息(文本、图片、小程序、链接等)
🔧 实用工具
- 自动接受好友请求并打招呼
- 自动响应群聊和私聊消息
🛠️ 安装指南
系统要求
- Python 3.8 或更高版本
- Windows 操作系统(wcferry 要求)
- 微信 PC 版客户端
- 云配置要求(如需):2vCPU 2GiB (经济型)
安装步骤
-
克隆仓库
git clone https://github.com/zippland/Bubbles-WechatAI.git cd Bubbles-WechatAI -
创建并激活虚拟环境(可选但推荐)
python -m venv .venv .venv\Scripts\activate -
安装依赖
pip install -r requirements.txt -
配置项目
# 复制配置模板 cp config.yaml.template config.yaml # 编辑配置文件,填入您的 API 密钥等信息 notepad config.yaml
⚙️ 配置说明
配置文件 config.yaml 包含以下主要部分:
AI 模型配置
每个 AI 模型都有自己的配置部分,例如:
# ChatGPT 配置
CHATGPT:
key: "your-openai-api-key"
base_url: "https://api.openai.com/v1"
model: "gpt-4o-mini" # 可选:gpt-4, gpt-3.5-turbo 等
temperature: 0.7
max_tokens: 2000
system_prompt: "你是一个有用的助手。"
proxy: "http://127.0.0.1:7890" # 可选:如需代理请填写
群组/私聊模型映射
您可以为不同的群聊或私聊指定不同的 AI 模型:
# 群组模型配置
GROUP_MODELS:
# 默认模型 ID
default: 21 # 2 代表 CHATGPT
# 群聊模型映射
mapping:
- room_id: "12345678@chatroom" # 群聊 ID
model: 2 # 2 代表 CHATGPT
# 私聊模型映射
private_mapping:
- wxid: "wxid_abc123" # 用户 wxid
model: 8 # 8 代表 Deepseek
功能开关
您可以启用或禁用各种功能:
# 功能开关
news_report # 每日新闻推送
weather_report # 每日天气推送
report_reminder # 日报周报月报提醒
image_generation # AI生图
goblin_gift # 古灵阁妖精的馈赠
perplexity # perplexity
🚀 使用方法
启动机器人
python main.py
可用命令
机器人支持多种命令,按功能分类如下:
提醒功能
提醒xxxxx- 用自然语言设置一个提醒查看提醒、我的提醒、提醒列表- 查看您设置的所有提醒删除提醒 ID:xxxx、取消提醒 all- 删除指定的(或所有)提醒
基础系统命令
info、帮助、指令- 显示机器人的帮助信息骂一下 @用户名- 让机器人骂指定用户(仅群聊)reset、重置- 重置机器人缓存的上下文历史
Perplexity AI 命令
ask 问题内容- 使用 Perplexity AI 进行深度查询(需@机器人)
消息管理命令
summary、/总结- 总结群聊最近的消息(仅群聊)clearmessages、/清除历史- 从数据库中清除群聊的历史消息记录(仅群聊)
天气和新闻工具
天气预报 城市名、预报 城市名- 查询指定城市未来几天的天气预报天气 城市名、温度 城市名- 查询指定城市的当前天气新闻- 获取最新新闻
决斗系统命令
决斗 @用户名- 发起决斗(仅群聊)偷袭 @用户名、偷分 @用户名- 偷袭其他玩家(仅群聊)决斗排行、决斗排名、排行榜- 查看决斗排行榜(仅群聊)决斗战绩、我的战绩、战绩查询- 查看决斗战绩(仅群聊)我的装备、查看装备- 查看自己的装备(仅群聊)改名 旧名称 新名称- 更改昵称(仅群聊)
🎮 游戏功能详解
决斗系统
Bubbles 内置了一个有趣的决斗游戏系统,用户可以在群聊中挑战其他成员:
- 开始决斗:使用
决斗 @用户开始一场决斗 - 偷袭玩家:使用
偷袭 @用户偷袭其他玩家 - 查看排名:使用
决斗排行查看全服决斗排行榜 - 个人统计:使用
决斗战绩查看个人决斗数据 - 查看装备:使用
我的装备查看自己当前的装备 - 更改名称:使用
改名 旧名称 新名称更改自己在决斗系统中的显示名称
古灵阁妖精馈赠
这是一个随机事件系统,机器人会在聊天中随机触发"古灵阁妖精馈赠"事件,为用户提供惊喜奖励。
📋 项目结构
Bubbles-WechatAI/
├── ai_providers/ # AI 模型接口实现
├── commands/ # 命令系统实现
├── data/ # 数据文件
├── function/ # 功能模块
│ ├── func_duel.py # 决斗功能
│ ├── func_news.py # 新闻功能
│ ├── func_weather.py # 天气功能
│ └── ...
├── image/ # 图像生成相关
├── logs/ # 日志目录
├── config.yaml # 配置文件
├── config.yaml.template # 配置模板
├── constants.py # 常量定义
├── main.py # 入口文件
├── robot.py # 机器人核心实现
└── requirements.txt # 项目依赖
🤝 贡献指南
欢迎对本项目做出贡献!您可以通过以下方式参与:
- 报告问题:提交 issue 报告 bug 或提出功能建议
- 提交代码:通过 Pull Request 提交您的改进
- 完善文档:帮助改进项目文档
📄 许可证
本项目采用 Apache 2.0 许可证,详情请参阅 LICENSE 文件。
🙏 致谢
- wcferry - 提供微信机器人底层支持
- 所有贡献者和用户
❓ 常见问题
Q: 如何获取群聊 ID? A: 在群聊中发送一条消息,机器人日志会显示该消息的来源群聊 ID。
Q: 如何添加新的 AI 模型?
A: 在 ai_providers 目录下创建新的模型接口实现,然后在 robot.py 中注册该模型。
Q: 出现 "AI 模型未响应" 错误怎么办? A: 检查相应 AI 模型的 API 密钥配置和网络连接,确保 API 可访问。
Q: 机器人不回复消息怎么办? A: 检查 wcferry 服务是否正常运行,查看日志文件了解详细错误信息。
📞 联系方式
如有任何问题或建议,请通过以下方式联系我们:
- GitHub Issues: 提交问题
- Email: zylanjian@example.com
注意:本项目仅供学习和个人使用,请遵守微信使用条款,不要用于任何违反法律法规的活动。