简介:微信自动回复机器人资源,专为零基础或编程经验较少的小白用户准备,核心目标是用最少的代码实现微信自动回复功能,并保证后续可灵活扩展。资源包一共包含四千零七十五个文件,压缩后大小约三十九兆,其中三千八百多个网页文档提供了详细的操作说明和界面展示,另有电子手册、编译后的程序包与类文件、源码和配置文件,分别覆盖教程查阅、程序运行和二次开发需求。目前已有一千五百四十六人下载学习,受到不少新手关注。整套资源按说明文档操作,登录免费API平台申请接口后即可接入,省去从零开发;包内还附有完整的目录结构、配置模板、示例代码和常见问题排错思路,帮助读者从环境检查到接口调用逐步落地。对于不想深入代码、希望快速上线自动回复机器人的用户,这份资源提供了门槛低、可扩展的实用方案。
1. 微信自动回复机器人:扫码即用,把消息交给免费 API 的本地服务
你有没有过这种时刻:微信上消息一条接一条,人在开会,手机又不能不看。这个资源包就是干这个的——一个基于 Java 的微信自动回复机器人,扫码登录微信网页版后,把收到的消息交给免费 API 生成回复,再自动发回去。它不依赖安卓或 iOS,跑在电脑上就行,包里十个 class 文件就是全部程序,按 readMe.txt 指引注册免费 API、填上 key,启动后扫二维码,剩下交给它。消息进来先匹配本地话术,没命中再走 API,API 挂了还有备用服务兜底。适合对代码零基础、只想让微信自己回话的人;想改源码做二次开发的大神可以绕道——给的是编译好的字节码,改不动逻辑。
2. 资源包拆解:十个 class 文件的分工与调用链
拿到压缩包后,不要急着双击运行。先花十分钟把包里每个文件是什么搞清楚。这个包没有源码,全靠 class 文件名推断用途,搞清楚了再动手,后面能少踩一半的坑。
2.1 从类名反推架构:WechatApp 到 SelectService 各自管什么
没有源码的 Java 包里,类名就是文档。十个 class 文件的分工,用一张表就能摆开:
| 文件 | 推断职责 |
|---|---|
| WechatApp.class | 主入口:消息循环与整体调度 |
| StartWechatApp.class | 启动器:拉起微信进程与初始化 |
| QRCodeFrame.class | 二维码登录窗口 |
| RobotRequestGet.class | 发起 HTTP 请求,从 API 获取回复 |
| HttpResponse.class | 封装 HTTP 响应与 JSON 解析 |
| SelectService.class | 按配置选择使用哪个回复服务源 |
| ExcelReader.class | 读取 Excel 话术表 |
| PersonInfo.class | 联系人信息实体 |
| AddressBook.class | 通讯录:控制自动回复范围 |
| WechatApp$2.class | WechatApp 的匿名内部类 |
把这些类按职责分一下组:入口与界面是 WechatApp、StartWechatApp、QRCodeFrame 三个;HTTP 通信是 RobotRequestGet、HttpResponse 两个;业务控制是 SelectService、AddressBook、PersonInfo 三个;数据读取是 ExcelReader 一个。WechatApp$2 是匿名内部类,源码里和 WechatApp 在同一个文件里,只是编译后拆成两个 class,通常承担回调或异步线程的角色。
调用链看下来是这样的:启动后 QRCodeFrame 弹出二维码,手机扫码确认登录;登录态就绪后,WechatApp 进入消息循环,通过网页版微信的长轮询接口持续收消息;收到消息先判断发件人是否在 AddressBook 白名单里,在的话交给 SelectService 决定走哪个服务源;文本交给 RobotRequestGet 发 HTTP 请求,HttpResponse 把 JSON 解析成可读文本,主程序再把文本回发给微信好友。
有一点要特别说清:这个包标榜"可扩展",扩展的入口不在代码里,而在外部文件。ExcelReader 意味着话术能放到 Excel 表里改,SelectService 意味着服务源能配多个,AddressBook 意味着自动回复的人群范围由你圈。class 文件一行不用动,但机器人的行为可以完全换一套。这也是标题写"小白使用,大神勿扰"的直接原因——源码被编译成字节码了,想在内部加逻辑的大神会很不爽,而小白只管填配置,反而顺手。
2.2 readMe.txt 是唯一入口:先注册 API、拿到 key 再动手
解压后第一个要打开的文件是 readMe.txt,它不啰嗦,就讲一个问题:去哪注册 API、key 填在哪。按它的指引做完注册操作,剩下的配置才是可控的。常见做法是三步:
- 到免费 API 平台注册账号,创建一个机器人应用,拿到 apiKey。
- 把 apiKey 粘贴到项目对应的配置文件里。
- 启动程序,扫码登录。
API 平台的字段名五花八门,有的叫 key,有的叫 apiKey,有的叫 token。readMe.txt 写的是哪家平台,就去哪家注册。我把图灵的 key 填到青云客的字段里,整整一下午都在报 401,最后才发现是平台搞错了,直接浪费半天。注册时注意看免费额度说明,有的平台每日限 100 次,有的限 1000 次,个人自用足够,但要挂好几个号就得精算额度。
配置文件通常长这样,常见是 properties 格式:
api.url=https://api.example.com/robot api.key=换成你注册拿到的key timeout.ms=3000 charset=UTF-8每个键值的含义:api.url 是平台给的接口地址,readMe.txt 会直接给全;api.key 换成注册获得的 key,不要带空格和引号;timeout.ms 是单次 HTTP 请求超时毫秒数,免费接口响应慢,可以调到 5000;charset 固定 UTF-8,中文场景不设这个基本必乱码。
key 填好之后,先用浏览器把 api.url 完整地址跑一次,确认能返回 JSON,再启动机器人。这一步能把"机器人不回复"的排查范围缩小一半:浏览器能返回,说明 key 没问题,问题只会在机器人配置侧;浏览器都不能返回,直接去平台控制台查,别动机器人。
2.3 运行前置条件:JDK 8 与网页版可用性先确认
class 文件是编译产物,不需要 IDE,但必须有 Java 运行环境。这个包大概率按 JDK 8 编译,装 JDK 8 最稳。装太高版本(JDK 17 以上)可能因为模块化改造,启动时报找不到主类或模块访问限制,很搞心态。
java -version正常输出长这样:
java version "1.8.0_202" Java(TM) SE Runtime Environment (build 1.8.0_202-b08) Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)如果输出 openjdk version "17" 之类的高版本,我建议直接再装一个 JDK 8 专门给这个项目用,两个版本共存不冲突,启动脚本里指定 JDK 8 的路径即可。安装路径别带中文和空格,Windows 上 Java 对中文路径的兼容性一言难尽,class 文件加载可能静默失败。
另一个前置是微信网页版的可用性。这类机器人走网页版微信接口,微信官方这几年对网页版登录的限制收得非常紧:老账号、平时在电脑上常用微信的号通常能正常出码;新注册的号、长期不登录的小号,扫码基本无效。建议在正式部署前,先拿要挂机的号去微信网页版官网扫一次码,能登上再继续。
3. 部署与首次运行:二维码登录、消息轮询与回复回写
前置条件确认完,这一章走一遍从启动到跑通全链路的过程。
3.1 启动流程:StartWechatApp 拉起进程,QRCodeFrame 出码
进入资源包解压目录,打开终端,执行启动命令。启动类在 WechatApp 和 StartWechatApp 之间,常见做法先试 StartWechatApp,因为类名上它就是负责初始化的:
java StartWechatApp启动成功的标志是终端开始翻滚日志,同时屏幕弹出一个二维码窗口。如果日志在走但二维码窗口没出现,多半是安全软件把窗口拦了,常见是杀软或 Windows 智能应用控制拦截了 Java 进程的 GUI 组件,放行一次就好。
拿起手机微信扫码,在手机上确认登录。这里有个关键点:扫码登录成功、机器人进入消息循环之后,终端窗口不能关,二维码窗口也别手动关。整个机器人活在当前进程里,登录态是内存级的,进程一停就得重新扫码。我见过有人扫完码顺手把终端关了,然后来问为什么不回复——因为进程都结束了。
登录成功后日志一般会刷出账号昵称、联系人数量之类信息。别急着关,做一次性验证:拿另一个微信号往这个号发一句"你好",看终端有没有刷出消息事件。有日志就说明消息接收链路是通的,下一步只需要确认回复链路。
3.2 消息链路:RobotRequestGet 发请求,HttpResponse 收响应
消息链路是这类机器人最核心的一段,拆开看就是收消息、调 API、发回复三步。
第一步,WechatApp 主循环通过网页版微信的长轮询接口实时拉取消息,长轮询比定时轮询的实时性好,消息延迟通常在 1 秒内。第二步,RobotRequestGet 按配置的 API 地址发起 HTTP 请求,把消息文本、用户标识、API key 一起带过去。第三步,API 返回 JSON 字符串,HttpResponse 负责解析,取出回复文本字段,交回主程序,主程序调用网页版微信的发送接口回给对方。
整个过程里,HttpResponse 的价值是把"发送消息"和"解析响应"两件事隔离。没有这层封装,所有调用方都要重复写 JSON 解析逻辑,一旦平台改了字段名,改起来满世界找。有它兜着,只改一个类就行。
这里有两个参数需要手动确认:超时时间和编码。超时建议 3000 到 5000 毫秒,太短 API 稍慢就丢回复,太长消息积压会明显延迟;编码统一 UTF-8,不然中文回复到好友那边就是乱码。Windows 终端下,还要把终端代码页切到 UTF-8:
chcp 65001不加这一步,日志里中文会变成问号,排查问题的时候看不清消息内容,全是黑匣子。
3.3 首次跑通的最小验证清单
第一次跑通不要追求复杂功能,就做最小验证:
- 手机扫码登录,确认日志出现账号昵称;
- 用另一个微信号发一条文本消息"你好";
- 观察机器人终端,确认出现消息事件日志;
- 观察发消息的号,确认收到自动回复;
- 没收到回复时按顺序排查:API key 是否有效、消息日志有没有出现、请求日志有没有发出。
如果日志显示消息已收到但 API 没返回,把 RobotRequestGet 里配的 URL 复制到浏览器打开,能返回 JSON 就说明 URL 没问题,问题在 key 或请求格式;不能返回就去平台控制台看,多数是免费额度用完或应用还没上线。第一次跑通之后,再去折腾多服务、Excel 话术这些扩展功能,不然配置一多,出错时根本不知道是哪个环节的问题。
4. 对接免费 API:服务选型、请求格式与降级策略
自动回复的质量完全取决于 API 选得好不好。这一章把平台选型、请求格式和降级策略一次说清。
4.1 免费 API 平台怎么选:额度、稳定性和关键词规则缺一不可
资源包点名了"到免费 API 平台获取接口",那么平台怎么选是有讲究的。常见做法是按稳定性优先,其次看免费额度,再看支持哪种触发规则。
图灵机器人算老牌,注册送每日额度,支持关键词白名单,文档全,适合大多数场景。青云客对中文场景友好,接口简单,回复质量稳定,部分地区会附加来源信息尾巴,看着有点多余。还有一些更轻量的接口,只回固定话术,适合做业务问答,不适合闲聊。
| 平台 | 免费额度 | 特点 |
|---|---|---|
| 图灵 | 每日限量 | 老牌,文档全,支持关键词配置 |
| 青云客 | 免费接口 | 中文稳定,响应快,偶有广告尾巴 |
| 极简型 API | 按次 | 适合固定话术,无法闲聊 |
额度用完的现象很典型:昨天还能正常回复,今天调 API 就返回 429 或错误码。这不是机器人的问题,是平台把请求拦了。两种选择:换平台,或者切到 Excel 话术库模式——后者正好是资源包预留的扩展路径,后面第 6 章细说。
4.2 请求格式与参数含义:消息文本、用户标识和 key 一个都不能少
免费 API 的请求格式各家大同小异,核心三要素是消息文本、用户标识和 API key。图灵机器人这类接口的请求体常见格式是这样:
{ "reqType": 0, "perception": { "inputText": { "text": "你好" } }, "userInfo": { "apiKey": "你的key", "userId": "对方微信名或随机ID" } }reqType 0 表示文本消息;perception.inputText.text 是要发送给机器人的原文;userInfo.apiKey 是注册拿到的 key;userId 是会话标识,用微信 ID 而不是随机数,能让同一会话保持上下文,连续聊几句不串台。
青云客之类的接口更简单,GET 请求带 text 和 key 两个参数就够,返回 JSON 里取 content 字段作为回复文本。项目里的 HttpResponse 类做的就是这个 JSON 解析,你要确认的只是配置里的 URL 和字段名与平台文档一一对应。
这里有个翻车点:有些免费接口要求 GET 和 POST 两种方式之一,配置里把方法选错,返回的一直是"405 Method Not Allowed"。看 readMe.txt 写的是哪种,别自己脑补。
4.3 SelectService 多服务切换:给每个 API 配一个备胎
SelectService 这个类的职责从名字看就是"选择"。我的血泪经验是:免费 API 说挂就挂,今天注册的 key 明天可能就被限流,所以一个服务源绝对不够,至少配两个。
SelectService 的典型行为是:优先尝试配置的第一个服务,超时或返回错误码就自动切到第二个,再失败切到第三个,全部失败才放弃回复。这个降级链路意味着,即使外层 API 全挂了,还有 Excel 话术库兜底,不会出现收到消息不回话的尴尬。
配置上把优先级按"质量高到质量低"排。语义理解强的放第一位,固定话术库放最后兜底。超时设置建议单次 2~3 秒,最多重试一次。免费接口本来就慢,如果每次等 10 秒还重试三次,对方半天没收到回复,体验还不如直接不回。
5. 常见问题排查:登录失败、消息丢失、掉线与乱码
做这类机器人踩过的坑都集中在几个方向。这一章把最值得记录的现象、原因和解决方案逐条写出来。
5.1 扫码登录失败,手机上提示"无法登录"
现象:二维码窗口正常弹出,手机扫码后,微信提示"登录失败"或"当前环境不可用",反复扫码都一样。
原因:最常见的是微信官方限制网页版登录。网页版微信并非全量开放,新注册的号、长期没有电脑端登录行为的号,都会被拦。另一个原因是二维码过期,QRCodeFrame 生成的二维码有效期很短,停留时间长了再扫,自然失败。
解决:先换一个历史较长的老号扫码,排除账号限制。确认要扫就专注扫一次,别截图转手机再扫——截图再扫基本会过期。如果账号确实受限,只能换号,机器人本身支持扫码换号,不需要改任何配置。顺带提醒,别想着在同一台机器上挂多个机器人同时多开,微信多开场景极易触发风控,号没了得不偿失。
5.2 消息收到了,但好友收不到回复
现象:终端日志能看到消息事件,消息确实进来了,但发消息的号一直等不到自动回复,API 请求日志也没有输出。
原因:大概率是 API 超时。免费平台高峰期响应经常超过 5 秒,配置的超时时间是 3 秒,请求超时后既没有回复,也没有错误日志,看起来就像消息凭空消失。另一个可能是 SelectService 配置里没写兜底服务,主服务一挂,整个链路静默。
解决:把超时时间调到 5 秒,给 SelectService 配上至少两个服务源,主服务失败自动切备用。加日志是个好习惯,每收到一条消息、每发出一次 API 请求、每回写一条消息,都打一行时间戳日志,排查的时候一目了然。
5.3 运行一两个小时后自动掉线
现象:机器人开始正常,运行一两个小时后收不到任何消息,终端日志停在某个时间点不再刷新,进程还活着但已经废了。
原因:微信网页版消息通道本质是长轮询,长时间无操作会被服务端主动断开,且这个断开不会有提示。断网、Windows 休眠、代理变更也会悄悄杀掉这条链路。
解决:加一层守护机制。Windows 上用计划任务定时检查 java 进程和日志时间戳,日志超过 5 分钟没更新就杀掉进程,重启服务并重新扫码。扫码这一步没法完全自动化,微信不开放登录态持久化,我一般会放一台常开的机器专门挂机器人,扫码登录后就不去动它。
5.4 key 填对了但 API 一直报 401/403
现象:严格按照 readMe.txt 填了 key,启动后调 API 还是返回 401 或 403,浏览器直接访问 URL 也进不去。
原因:要么是 key 填错了位置,把 A 平台的 key 填到了 B 平台的字段里;要么是平台侧应用没上线。免费 API 平台注册后的应用默认是"测试中"状态,这会限制请求范围甚至直接拦截。还有平台开通权限需要实名或手机绑定,没完成就一律拒绝。
解决:先在浏览器里直接访问 API 地址,把 key 放到请求里测一次。浏览器返回正常说明 key 和 URL 匹配,问题在机器人配置;浏览器都报错就去平台控制台确认应用状态、实名绑定和权限开关,全部改成在线状态再重启机器人。
5.5 终端日志中文全是问号
现象:终端日志里中文全部显示成问号,看不出消息内容,排查时跟猜谜一样。
原因:Windows 终端默认代码页是 GBK,Java 输出的是 UTF-8 字符,两边对不上就成了问号。
解决:在启动脚本里加一行:
chcp 65001把终端切成 UTF-8 代码页再启动机器人。日志里中文正常显示,很多隐蔽问题一眼就能看出来。别小看这个小参数,它能省掉你至少一小时的排查时间。
6. 扩展与验证:Excel 话术库、通讯录白名单和日志三查
6.1 Excel 话术库与通讯录白名单:把自动回复的边界圈起来
资源包里的 ExcelReader 和 AddressBook 两个类,是扩展价值最集中的位置。ExcelReader 从表格里读话术,AddressBook 控制谁能触发自动回复,两者配合,能把机器人从"对所有人胡说八道"变成"只对特定人群按特定话术回复"。
常见做法是准备一张两列的 Excel:第一列是关键词,第二列是回复文案。机器人收到消息后,先在 Excel 里查关键词,命中直接回表里的文案,没命中才走 API。这样省额度,也能保证固定场景(比如被问到价格、地址)的回答永远准确。AddressBook 就是一个白名单,只有名单里的微信号发来的消息才走自动回复,其他消息直接忽略。对小白来说这个功能是后悔药——万一机器人说错话,白名单把影响范围圈到最小。
6.2 验证技巧:日志三查与响应耗时观察
改完配置后,我养成一个习惯,就是强制走三查:先看日志里有没有消息事件,再看有没有 API 请求发出,最后看有没有回复成功。三步都打了勾,这次改动才算通过。
另外一个值得盯的指标是 API 响应耗时。连续跑几天后,翻一下日志里的时间戳,算出从消息进入、到回复发出的间隔,正常应该在 2~5 秒。如果经常超过 5 秒,说明当前平台的免费额度已经被限流,该换平台了。这个观察不用额外加任何工具,日志自带时间戳,肉眼就能统计。
如果想再拉细一个维度,可以在 Excel 话术表里加一条健康检查用的话术,比如关键词写"ping",回复写"pong",然后定时从另一个设备给机器人发一条 ping,能收到 pong 就说明链路活着。这是最轻量的健康检查方式,配合守护脚本用很稳。从那以后我每次部署都掐着这三处日志盯一遍,再配合周期性的 ping 检查,省掉了很多"以为改了配置但其实没生效"的返工,希望帮到你。
本文还有配套的精品资源,点击获取