微信机器人开发神器WeChat Bot:API调用示例
引言:告别重复劳动,5分钟搭建智能微信机器人
你是否还在手动回复微信群消息?还在为管理多个微信账号而烦恼?WeChat Bot 作为一款基于 WeChaty 框架的开源微信机器人解决方案,支持 DeepSeek、ChatGPT、Kimi 等 11 种 AI 服务,可快速实现消息自动回复、群管理、好友维护等功能。本文将通过 8 个实战案例,带你掌握从环境配置到高级 API 调用的全流程,让你彻底解放双手。
读完本文你将获得:
- 3 种环境部署方案(本地开发/服务器部署/Docker 容器)
- 5 大核心 API 调用模板(消息收发/群管理/好友操作/AI 集成/事件监听)
- 7 种 AI 服务接入指南(含免费额度申请渠道)
- 10+ 生产环境避坑指南(含微信风控规避策略)
技术架构全景图
环境准备: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
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



