所在位置:
首页 >
营销资讯 >
网站运营 > 基于 Wachaty 开发微信机器人 & 个人微信号小助手平台
基于 Wachaty 开发微信机器人 & 个人微信号小助手平台
时间:2023-05-20 09:44:01 | 来源:网站运营
时间:2023-05-20 09:44:01 来源:网站运营
基于 Wachaty 开发微信机器人 & 个人微信号小助手平台:
wxbot
微信机器人,个人微信号小助手平台, nodejs + nuxt + wechaty 技术栈
准备
微信机器人开源库调研,GitHub 找到以下 3 个开源作品:
- itchat
itchat
是一个开源的微信个人号接口,使用 python
调用微信- 使用不到
30
行的代码,你就可以完成一个能够处理所有信息的微信机器人
- wechaty
wechaty
是适用于微信个人的 Bot SDK
,可以使用 6
行 js
创建一个机器人- 具有包括
linux
,Windows
,MacOS
和 Docker
在内的跨平台支持,基于 Node.js
- vbot
vbot
是基于微信 web
版的接口,使用 http 协议
以及轮询方式实现- 亮点在于通过匿名函数,能够实现多种有趣的玩法
- 通过
API
,更方便的打造属于自己的网页版微信,基于 PHP
初识 wechaty
Wechaty
是一个开源的的对话机器人
SDK
,支持
个人号
微信。它是一个使用
Typescript
构建的
Node.js
应用。支持多种微信接入方案,包括网页,
ipad
,
ios
,
windows
,
android
等。同时支持
Linux
,
Windows
,
Darwin(OSX/Mac)
和
Docker
多个平台。
先看一下官方文档:
- wechaty-github
- wechaty中文文档
只需要 6 行代码,你就可以 通过个人号 搭建一个 微信机器人功能 ,用来自动管理微信消息。
import { Wechaty } from 'wechaty'Wechaty.instance().on('scan', qrcode => console.log('扫码登录:' + qrcode)).on('login', user => console.log('登录成功:' + user)).on('message', message => console.log('收到消息:' + message)).on('friendship', friendship => console.log('收到好友请求:' + friendship)).on('room-invite', invitation => console.log('收到入群邀请:' + invitation)).start()
更多功能包括:
- 消息处理:关键词回复
- 群管理:自动入群,拉人,踢人
- 自动处理好友请求
- 智能对话:通过简单配置,即可加入智能对话系统,完成指定任务
- ... 请自行开脑洞
好了,文档齐全 & api 丰富,完全满足我的需求,就选这个库了。
首先跑一个示例看看 wechaty-getting-started。下载完之后先
npm install & npm start
一顿操作,然后运行就有了登录二维码,拿出手机扫码,然后 GG。
基于 Web 微信的限制
查找资料 基于nodejs + wachaty开发微信机器人平台,发现已经有大佬踩过坑了。
原来2017年之后注册的微信号都无法登录网页版微信,而2017年之前注册得微信账号也有很大几率登录不上,找朋友试了也都不行。
检验你的微信号是否支持网页微信登录:
http://wx.qq.com
点击链接链接,PC端进入然后手机扫码登录,若是可以登上,即可以使用上述示例
然后又去看了 vbot 和 itchat,但发现也都是是基于网页协议实现的
从网上查资料,大概有一下几种实现方式:
- Web网页端:2017年后不再支持新号登录,仅支持老号,并且掉线严重,功能缺失严重
- Xposed技术:在2019年6月份,微信官方在行业重点打击Xposed,自此行业内一片哀嚎遍野,陆续向iPad/MAC协议转型。具体案例请点击
- PC Hook:代码注入型,也就是逆向开发。封号情况偏多,使用容易出现追封,公司大规模封号等情况,且目前在营销行业使用率较少,比较偏小团队使用
- 模拟机:延迟高、消息实时到达率低、模拟人为操作效率慢、功能偏少,承担不了商业化功能
- ipad协议:安全性较好,功能满足,行业占有率高,但具有能力研发人员偏少,基本两三个团队研发,且目前已有团队解散,部分微信号段登录失败、且通过grpc,mmtls研发,被检测几率存在
- MAC协议:安全性相比iPad协议更好,功能性相比ipad协议少些,行业内具有研发能力更少,安全性、稳定性比较优秀,不会出现追封、批量封的情况
- 混合通道:微信内部通道,最高权限,基于MAC与Ipad协议,非grpc,mmtls,功能合适,微信正版通道,不会出现技术封号问题
看了看,内部通道是不可能的,只有ipad协议个mac协议目前最好了
wechaty-puppet-padplus
使用 wechaty-puppet-padplus 一套基于 ipad 协议的包。不过天下没有免费的午餐,需要申请
token
,见 Wechaty Token 申请及使用文档和常见问题。
聊天机器人 API
目前网络上有许多非常好的智能聊天机器人,这里找了6个目前使用很广泛的:
- 海知智能 功能很强大,不仅仅用于聊天。需申请 key,免费
- 思知对话机器人 注册很简单,调用也很简单,而且完全免费
- 图灵机器人 需要注册账号,可以申请 5 个机器人,未认证账户每个机器人只能回 3 条/天,认证账户每个机器人能用 100 条/天
- 青云客智能机器人 无须申请,无数量限制,但有点智障,分手神器,慎用
- 腾讯闲聊 需要注册和申请,还需要加密处理
- 天行机器人 白嫖用户绑定微信后有 10000 次永久额度,之后 1 元 10000 次
搭建微信机器人平台
项目初始参考
wxbot
搭建机器人后台管理。
项目介绍
- 控制台
- 绑定机器人
- 登录
- 自动通过好友验证关键词设置,当有人添加机器人时,关键词匹配后直接通过
- 好友验证通过自动回复
- 退出
- 我的群聊
- 群聊列表,管理所有群聊
- 设置群聊名称,发布公告,发送群消息
- 设置群聊基本信息,入群欢迎语,成员违规次数上限,是否受机器人控制
- 定时任务
- 针对好友/某个群聊/所有群聊设置定时任务,机器人在指定时间会触发消息推送
技术构成
- 服务端 Node.js
- SSR框架 NuxtJS
- 前端框架 Vue
- UI组件 Ant Design of Vue
- 持久化 MongoDB
- ipad协议 wechaty-puppet-padplus
这里就直接介绍下机器人模块
|-- server/|———- /lib|------ FriendShip.js # 友谊关系,好友添加监听|------ Login.js # 机器人登录退出|------ Message.js # 消息监听处理|------ Room.js # 加群,退出群聊|------ Task # 机器人定时任务|———- index.js # 入口文件
快速开始
准备条件
- 安装 Node.js (v10 以上版本)、MongoDB。
- 推荐安装 cnpm
安装依赖
cnpm i
启动服务
首先需要修改配置文件
local/config.js
或者根目录创建
.local.config.js
配置文件(此文件已加入
.gitignore
中可以防止
token
敏感信息上传至
git
)。
npm run local
npm run dev
先编译项目
npm run build
再启动服务
npm start
打开浏览器,访问
http://localhost:3000/系统配置
根据实际情况修改
config.js
配置文件,修改后需要重启服务才能生效。
参数说明:
host
String
类型,主机名,配置为
0.0.0.0
表示监听任意主机。
port
Number
类型,端口号。
mongoUrl
String
类型,MongoDB 链接。
secret
String
类型,JWT 秘钥。
tianApiKey
String
类型,天行数据秘钥
线上部署
使用PM2
推荐使用 pm2 进行
Node.js
的进程管理和持久运行。
安装
cnpm i -g pm2
启动
pm2 start pm2.config.js
踩坑
1.
Wechaty Token
申请及使用文档和常见问题
- Wechaty 开源激励计划2.0 申请表
- 填写项目信息
- Wechaty Token 申请及使用文档和常见问题
2.
tianApiKey
申请及天行机器人配置
- 首先,去 天行数据 注册账号,申请
APIKEY
- 其次,申请 天行机器人 接口,用于机器人自动回复
- 最后,别忘记配置 机器人身份设置,否则在机器人回复中会有奇怪的代码串,如
{robotname}
3.部署中执行
sudo pm2
报错
command not found
问题
- 原因是没有将
pm2
加至环境变量中,先找到 node
的目录 可以用 whereis node
来查找,然后查找 whereis pm2
,再使用 ln
建立软连接 - 参考文章 Linux下使用pm2部署node以及安装后command not found解决
4.部署中执行
sudo pm2
报错
permission denied
问题
- 原因是项目会动态生成中
logs
目录中的文件,报错权限不足,即 permission denied
- 参考文章 解决 pm2 中的 permission denied 问题
感谢
- 感谢 beclass 的开源项目
wxbot
,这是一套优秀的微信机器人平台。 - 感谢 Wechaty 团队提供微信机器人
SDK
,让开发者可以专注于业务代码。 - 感谢 句子互动 提供的
pad
协议版 token
。