微信机器人开发神器WeChat Bot:API调用示例
2026-02-04 04:18:11作者:郦嵘贵Just
引言:告别重复劳动,5分钟搭建智能微信机器人
你是否还在手动回复微信群消息?还在为管理多个微信账号而烦恼?WeChat Bot 作为一款基于 WeChaty 框架的开源微信机器人解决方案,支持 DeepSeek、ChatGPT、Kimi 等 11 种 AI 服务,可快速实现消息自动回复、群管理、好友维护等功能。本文将通过 8 个实战案例,带你掌握从环境配置到高级 API 调用的全流程,让你彻底解放双手。
读完本文你将获得:
- 3 种环境部署方案(本地开发/服务器部署/Docker 容器)
- 5 大核心 API 调用模板(消息收发/群管理/好友操作/AI 集成/事件监听)
- 7 种 AI 服务接入指南(含免费额度申请渠道)
- 10+ 生产环境避坑指南(含微信风控规避策略)
技术架构全景图
graph TD
A[用户微信] <--> B[WeChaty Puppet]
B <--> C[WeChat Bot 核心模块]
C --> D{服务选择器}
D --> E[DeepSeek]
D --> F[ChatGPT]
D --> G[Kimi]
D --> H[讯飞星火]
D --> I[其他AI服务]
C --> J[消息处理模块]
C --> K[群管理模块]
C --> L[好友管理模块]
J --> M[自动回复]
J --> N[关键词监控]
K --> O[入群验证]
K --> P[关键词踢人]
L --> Q[异常账号检测]
L --> R[好友标签管理]
环境准备:3步完成开发环境搭建
1. 基础环境要求
| 环境依赖 | 版本要求 | 安装命令 |
|---|---|---|
| Node.js | ≥18.0.0 | nvm install 18 |
| npm/yarn | ≥8.0.0 | npm install -g yarn |
| Git | 任意版本 | sudo apt install git |
2. 项目初始化
# 克隆仓库
git clone https://gitcode.com/GitHub_Trending/we/wechat-bot.git
cd wechat-bot
# 安装依赖(国内用户建议切换镜像)
npm config set registry https://registry.npmmirror.com
npm install
# 复制环境变量模板
cp .env.example .env
3. 核心配置文件(.env)详解
# 机器人基础配置
BOT_NAME=@你的机器人微信名 # 群聊@触发前缀
AUTO_REPLY_PREFIX=ai: # 私聊触发前缀(可选)
# AI服务配置(任选其一)
DEEPSEEK_FREE_TOKEN=sk-xxx # DeepSeek免费API密钥
OPENAI_API_KEY=sk-xxx # OpenAI密钥
KIMI_API_KEY=sk-xxx # Kimi密钥
# 白名单配置
ALIAS_WHITELIST=张三,李四 # 私聊自动回复白名单
ROOM_WHITELIST=技术交流群,产品讨论群 # 群聊自动回复白名单
核心API调用示例:从Hello World到智能交互
1. 机器人初始化与登录
// src/index.js 核心代码
import { WechatyBuilder } from 'wechaty'
// 构建机器人实例
const bot = WechatyBuilder.build({
name: 'WeChatBot',
puppet: 'wechaty-puppet-wechat4u', // 免费Web协议
puppetOptions: { uos: true } // 开启UOS协议规避检测
})
// 扫码登录事件
bot.on('scan', (qrcode, status) => {
if (status === ScanStatus.Waiting) {
// 在终端显示二维码
qrcodeTerminal.generate(qrcode, { small: true })
}
})
// 启动机器人
bot.start()
.then(() => console.log('机器人启动成功,等待扫码登录...'))
.catch(e => console.error('启动失败:', e))
2. 消息接收与自动回复
// src/wechaty/sendMessage.js 核心逻辑
export async function defaultMessage(msg, bot, serviceType) {
const contact = msg.talker() // 发信人
const content = msg.text() // 消息内容
const room = msg.room() // 是否群聊
const isText = msg.type() === bot.Message.Type.Text
// 群聊消息处理(需@机器人且在白名单内)
if (room && await isRoomWhiteListed(room) && content.includes(botName)) {
const question = content.replace(botName, '').trim()
const reply = await getAIServiceReply(serviceType, question)
await room.say(reply)
}
// 私聊消息处理(需在联系人白名单内)
if (!room && await isContactWhiteListed(contact)) {
const reply = await getAIServiceReply(serviceType, content)
await contact.say(reply)
}
}
3. 不同AI服务调用对比
DeepSeek API调用
// src/deepseek/index.js
import OpenAI from 'openai'
const openai = new OpenAI({
apiKey: process.env.DEEPSEEK_FREE_TOKEN,
baseURL: 'https://api.deepseek.com/v1'
})
export async function getDeepseekReply(prompt) {
const response = await openai.chat.completions.create({
model: 'deepseek-chat', // 免费模型
messages: [{ role: 'user', content: prompt }],
max_tokens: 2048
})
return response.choices[0].message.content
}
Kimi API调用
// src/kimi/index.js
import axios from 'axios'
export async function getKimiReply(prompt) {
const response = await axios.post('https://api.moonshot.cn/v1/chat/completions', {
model: 'moonshot-v1-8k', // 支持超长上下文
messages: [{ role: 'user', content: prompt }],
temperature: 0.3
}, {
headers: {
'Authorization': `Bearer ${process.env.KIMI_API_KEY}`,
'Content-Type': 'application/json'
}
})
return response.data.choices[0].message.content
}
各AI服务对比表
| 服务名称 | 免费额度 | 上下文长度 | 国内访问 | 特色功能 |
|---|---|---|---|---|
| DeepSeek | 100万tokens/月 | 8k | 支持 | 代码理解强 |
| Kimi | 50万tokens/月 | 128k | 支持 | 长文档处理 |
| 讯飞星火 | 200万tokens/月 | 4k | 支持 | 中文优化好 |
| ChatGPT | 需付费 | 128k | 需代理 | 通用能力强 |
| 通义千问 | 100万tokens/月 | 8k | 支持 | 阿里云生态 |
4. 群管理高级API
// 监听群聊邀请事件
bot.on('room-invite', async (invitation) => {
const inviter = invitation.inviter()
const roomTopic = await invitation.topic()
// 验证邀请者是否在白名单
if (WHITELIST.includes(await inviter.name())) {
await invitation.accept()
const room = await bot.Room.find({ topic: roomTopic })
// 发送入群欢迎消息
await room.say(`欢迎加入${roomTopic}!请先阅读群公告`)
}
})
// 关键词监控与自动踢人
async function monitorRoomMessages(room, message) {
const forbiddenWords = ['广告', '二维码', '加微信']
if (forbiddenWords.some(word => message.includes(word))) {
const talker = message.talker()
await room.say(`@${await talker.name()} 请勿发送违规内容`)
await room.del(talker) // 移出群聊
}
}
生产环境部署指南
Docker容器化部署
# 构建镜像
docker build -t wechat-bot .
# 运行容器(挂载配置文件)
docker run -d --name wechat-bot \
-v $(pwd)/.env:/app/.env \
--restart always \
wechat-bot
服务器持久化运行
# 使用PM2进程管理
npm install -g pm2
pm2 start cli.js --name "wechat-bot"
# 保存进程状态
pm2 save
pm2 startup
常见问题与解决方案
1. 微信登录失败
| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
| 扫码后无反应 | Web协议被限制 | 切换为wechaty-puppet-xp协议 |
| 登录后秒退 | 账号风控 | 使用小号测试,减少操作频率 |
| 二维码无法生成 | 依赖缺失 | 安装puppeteer: npm install puppeteer |
2. AI服务调用失败
// 错误处理最佳实践
export async function getAIServiceReply(serviceType, prompt) {
try {
const serviceMap = {
'DeepSeek': getDeepseekReply,
'Kimi': getKimiReply,
'ChatGPT': getGptReply
}
return await serviceMap[serviceType](prompt)
} catch (error) {
console.error(`API调用失败: ${error.message}`)
// 降级处理:返回预设回复
return '当前AI服务暂时不可用,请稍后再试'
}
}
高级功能扩展
1. 消息分片发送(解决长文本限制)
// src/wechaty/sendMessage.js
const MAX_MESSAGE_LENGTH = 500
async function splitAndSend(target, message) {
if (message.length <= MAX_MESSAGE_LENGTH) {
return await target.say(message)
}
// 分片发送
const chunks = []
for (let i = 0; i < message.length; i += MAX_MESSAGE_LENGTH) {
chunks.push(message.slice(i, i + MAX_MESSAGE_LENGTH))
}
for (const chunk of chunks) {
await target.say(chunk)
await new Promise(resolve => setTimeout(resolve, 1000)) // 避免频率限制
}
}
2. 异常账号检测功能
// 检测逻辑:发送特殊消息,监控是否被拒收
async function detectInvalidFriends() {
const contacts = await bot.Contact.findAll()
const invalidAccounts = []
for (const contact of contacts) {
if (contact.self() || contact.name() === '微信团队') continue
try {
// 发送空格消息(对方无感知)
await contact.say(' ')
} catch (error) {
if (error.message.includes('rejected')) {
invalidAccounts.push(await contact.name())
}
}
}
console.log('异常账号列表:', invalidAccounts)
return invalidAccounts
}
总结与展望
WeChat Bot 提供了从消息处理到 AI 集成的完整解决方案,通过本文介绍的 API 调用示例,你可以快速构建个性化微信机器人。目前项目已支持 11 种 AI 服务,后续将计划添加:
- 多模态消息处理(图片/语音识别)
- 知识库对接(接入企业内部文档)
- 插件系统(支持第三方功能扩展)
如果你在使用过程中遇到问题,欢迎提交 Issue 或参与项目贡献。记得收藏本文,关注项目更新,让你的微信机器人能力持续进化!
资源获取
- 项目仓库:https://gitcode.com/GitHub_Trending/we/wechat-bot
- API文档:项目内docs目录
- 交流群:添加微信机器人后发送"加群"获取邀请
- 免费API密钥申请地址:
- DeepSeek: https://platform.deepseek.com
- 讯飞星火: https://console.xfyun.cn
- Kimi: https://platform.moonshot.cn
登录后查看全文
热门项目推荐
相关项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0379
openPangu-2.0-Flash昇腾原生的openPangu-2.0-Flash语言模型Python00
GLM-5.2智谱开源 GLM-5.2,这是针对长文本任务的最新旗舰模型。相较于前代产品 GLM-5.1,它在长文本任务处理能力上实现了显著飞跃,并且首次在稳定的 100 万 token 上下文中提供这一能力。Jinja00
BuildingAI⚡️⚡️⚡️BuildingAI 是一款面向AI开发者、AI创业者和先进组织打造的企业级开源智能体搭建平台。通过可视化配置界面(Do It Yourself)零代码搭建具备智能体、MCP、RAG管道、知识库、大模型聚合、上下文工程等原生AI能力,以及用户注册、会员订阅、算力计费等商业闭环能力的原生企业智能体应用。TypeScript00
awesome-LLM-resources🧑🚀 全世界最好的LLM资料总结(语音视频生成、Agent、辅助编程、数据处理、模型训练、模型推理、o1 模型、MCP、小语言模型、视觉语言模型) | Summary of the world's best LLM resources.05
banana-slides一个基于nano banana pro🍌的原生AI PPT生成应用,迈向真正的"Vibe PPT"; 支持上传任意模板图片;上传任意素材&智能解析;一句话/大纲/页面描述自动生成PPT;口头修改指定区域、一键导出 - An AI-native PPT generator based on nano banana pro🍌Python04
项目优选
收起
deepin linux kernel
C
32
16
Ascend Extension for PyTorch
Python
779
1.04 K
TorchAir 支持用户基于PyTorch框架和torch_npu插件在昇腾NPU上使用图模式进行推理。
Python
839
360
openYuanrong runtime:openYuanrong 多语言运行时提供函数分布式编程,支持 Python、Java、C++ 语言,实现类单机编程高性能分布式运行。
Go
565
111
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed.
Get Started
Rust
2.82 K
379
暂无描述
Markdown
813
5.35 K
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
926
2.18 K
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
748
1.49 K
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
C
469
5.97 K
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
563
209