一、项目回顾总结
1. 项目目标
实现一个完全本地化的微信自动回复机器人,功能需求:
微信登录后监控群聊消息
当检测到@所有人或@机器人时自动回复"1"
不依赖任何第三方API(如OpenAI)
2. 技术栈选择
运行时: Node.js
核心库: Wechaty + wechaty-puppet-wechat
协议: 微信网页版协议
3. 安装的依赖包
# 核心依赖
npm install wechaty wechaty-puppet-wechat
# 二维码显示相关(后续安装)
npm install qrcode-terminal qrcode
4. 创建的文件
D:\wechat bot\
├── bot.js # 主机器人文件(多个版本)
├── test.js # 测试文件
├── package.json # 项目配置
├── package-lock.json # 依赖锁文件
└── node_modules/ # 依赖包目录
二、遇到的问题及解决方案
问题1: npm安装网络问题
现象: 安装依赖时网络超时、下载缓慢
解决方案:
# 设置国内镜像
npm config set registry https://registry.npmmirror.com
npm config set puppeteer_download_host https://npmmirror.com/mirrors
问题2: 代理冲突
现象: 系统代理设置导致网络连接失败
解决方案: 关闭Windows系统代理或调整Clash设置
问题3: 二维码显示问题
现象: 控制台二维码显示异常或快速跳过
解决方案:
// 安装二维码显示包
npm install qrcode-terminal qrcode
// 代码中增强显示
bot.on('scan', (qrcode, status) => {
const qrcodeUrl = `https://api.qrserver.com/v1/create-qr-code/?data=${encodeURIComponent(qrcode)}`
console.log('请打开链接扫描:', qrcodeUrl)
})
问题4: 网络连接超时
现象: 登录后出现ETIMEDOUT错误
原因: 微信服务器连接不稳定
解决方案: 添加错误处理和重试机制
三、核心实现原理
1. 技术架构
微信网页版协议 ←→ Wechaty库 ←→ 你的Node.js代码
↑
手机微信扫码登录
2. 消息处理流程
// 核心处理逻辑
bot.on('message', async msg => {
// 1. 检查是否是群消息
const room = msg.room()
if (!room) return
// 2. 获取消息内容
const text = msg.text()
// 3. 检测触发条件
const isAtAll = text.includes('@所有人') // 文本匹配
const isMentionSelf = await msg.mentionSelf() // @机器人检测
// 4. 满足条件时回复
if (isAtAll || isMentionSelf) {
await msg.say('1') // 发送回复
}
})
3. 登录机制
二维码生成: 通过微信网页版协议生成登录二维码
扫码认证: 用户手机微信扫码确认登录
会话保持: 登录状态保存在本地,支持断线重连
四、最终可用的完整代码
// bot.js - 最终稳定版本
const { WechatyBuilder } = require('wechaty')
const bot = WechatyBuilder.build({
name: 'auto-reply-bot',
puppet: 'wechaty-puppet-wechat'
})
// 处理二维码显示
bot.on('scan', (qrcode, status) => {
if (status === 2) {
console.log('✅ 已扫描,请在手机上确认登录')
} else {
const qrcodeUrl = `https://api.qrserver.com/v1/create-qr-code/?data=${encodeURIComponent(qrcode)}&size=200x200`
console.log('🔗 请用微信扫描二维码:')
console.log(qrcodeUrl)
}
})
// 登录成功
bot.on('login', user => {
console.log(`🎉 登录成功: ${user.name()}`)
})
// 消息处理
bot.on('message', async msg => {
if (msg.self()) return // 忽略自己发送的消息
const room = msg.room()
if (room) {
const text = msg.text() || ''
const roomName = await room.topic()
console.log(`💬 [${roomName}]: ${text}`)
// 触发条件检测
const isAtAll = text.includes('@所有人')
const isMentionSelf = await msg.mentionSelf()
if (isAtAll || isMentionSelf) {
console.log('🔔 检测到@消息,回复: 1')
try {
await msg.say('1')
console.log('✅ 回复成功')
} catch (error) {
console.log('⚠️ 回复失败,但机器人仍在运行')
}
}
}
})
// 错误处理
bot.on('error', error => {
console.log('⚠️ 网络波动:', error.message)
})
// 启动机器人
bot.start()
.then(() => console.log('🤖 机器人启动成功'))
.catch(e => console.error('启动失败:', e))
五、项目成果
✅ 已实现的功能
微信扫码登录 - 成功实现二维码登录
群消息监控 - 实时监控所有群聊消息
@所有人检测 - 准确识别@所有人消息
@机器人检测 - 识别直接@机器人的消息
自动回复"1" - 满足条件时自动回复
错误容错 - 网络波动时保持运行
⚠️ 注意事项
微信风控: 使用网页版协议有一定风险,建议用小号测试
网络稳定性: 需要相对稳定的网络环境
长期运行: 建议在服务器上24小时运行
🚀 扩展可能性
添加更多关键词回复规则
集成本地AI模型实现智能回复
添加定时任务功能
实现消息转发和存档
这个项目成功实现了完全本地化的微信自动回复功能,不依赖任何外部API,具有很好的隐私性和可控性。