介绍
微信个人号功能非常强大和灵活,是一个非常适合用来做ChatBot的载体。它可以灵活不受限制的发送语音短信、视频、图片和文字,支持多人群聊。但是使用微信个人微信号作为ChatBot,需要通过非官方的第三方库接入微信。因为截至2018年底,微信尚无任何官方的ChatBot API发布。
Wechaty 是一个开源的的对话机器人 SDK,支持 个人号 微信。它是一个使用Typescript 构建的Node.js 应用。支持多种微信接入方案,包括网页,ipad,ios,windows, android 等。同时支 持Linux, Windows, Darwin(OSX/Mac) 和 Docker 多个平台。
在GitHub上可以找到很多支持微信个人号接入的第三方类库,其中大多都是基于Web Wechat的API来实现的,如基于Python的WeixinBot,基于Node.js的Wechaty等。少数支持非Web协议的库,大多是商业私有闭源的,Wechaty是少有的开源项目支持非Web协议的类库。
只需要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()
更多功能包括:
- 消息处理:关键词回复
- 群管理:自动入群,拉人,踢人
- 自动处理好友请求
- 智能对话:通过简单配置,即可加入智能对话系统,完成指定任务
- ... 请自行开脑洞
每次微信收到消息,我们都可以得到一个消息变量,代表了我们收到的消息。消息类型可以为文字、图片、视频、链接分享、联系人等。
wechaty.on('message', msg => console.log(msg))
消息方法 | 功能 |
发送者 | |
接收者 | |
消息所在的群 | |
消息文本内容 | |
消息附件(图片、音频、视频等) |
可以将文本、图片、视频、链接卡片、联系人卡片等信息,发送给其他微信用户,或是发到某一个微信群中。
方法 | 功能 |
发送文本消息给contact | |
发送图片test.jpg给contact | |
发送test.mp4给contact | |
发送联系人卡片contact2给contact |
如果希望在微信群中发消息,只需要将contact替换为room即可。
const filehelper = await wechaty.Contact.find({ name: '文件传输助手' })
filehelper.alias('文件中转站')
wechaty.Friendship.add(stranger)
或者接受好友请求:
wechaty.on('friendship', async friendship => {
if (friendship.type() === Friendship.Type.Receive) {
await friendship.accept()
}
})
const newRoom = await wechaty.Room.create([contact1, contact2], '新群主题')
const oldRoom = await wechaty.Room.find({ name: '已经存在的群主题' })
得到了room之后,我们就可以基于这个room进行加人、减人和标题操作,如:
方法 | 功能 |
添加contact到room群 | |
在room群中删除contact | |
修改room的群名称 |
- 第一阶段:早期是基于网页版的微信客户端实现,详情查看 Wechaty 101: from v0.0 to v0.7 这篇博客通过一个近2个小时的视频教程和ppt 来详细解释了实现原理。所有基于网页版本的实现均是完全开源且免费的。
- 1.从2017年6月下旬开始,使用基于web版微信接入方案存在大概率的被限制登陆的可能性。 主要表现为:无法登陆Web 微信,但不影响手机等其他平台。 验证是否被限制登陆: https://wx.qq.com 上扫码查看是否能登陆。
- 2.从2018年开始,web api 无法创建群聊和自动拉人入群。
更多内容详见:
所有的实现方式都以
PuppetXXX
来命名的,比如PuppetPuppeteer 是通过谷歌浏览器,通过 google puppeteer来控制网页微信API。PuppetPadchat 是通过WebSocket 连接一个协议服务器来控制iPad 微信,两个重要的信息参考:如果你希望深入了解Puppet是如何在Wechaty 运行的,你可以在https://github.com/Chatie/wechaty-puppet/blob/master/src/puppet.ts 查看源代码。
.png?generation=1575307810603537&alt=media)
Puppet Structure
扫描下方二维码,回复 'wechaty' 加入 Wechaty Developers Home
群内均为wechaty 的开发者,群内发言之前请先阅读文档。

Wechaty Developers' Home
Last modified 3yr ago