wechat4u.duapp.com ,具有自动回复(文本,表情),监控和群发等功能
扫描二维码,开启激情果撩,验证消息: 我爱wechat4u
wechat4u@0.6.x 更新了大量API,增强了稳定性
npm install --save wechat4u@latest
const Wechat = require('wechat4u') let bot = new Wechat() bot.start() // 或使用核心API // const WechatCore = require('wechat4u/lib/core')
git clone https://github.com/nodeWechat/wechat4u.git cd wechat4u npm install npm run example // web服务器模式 npm run core // 命令行模式 npm run compile // babel编译
node run-core.js
逻辑见代码,简明完整
所有属性均只读
保持登录状态的必要信息
配置信息,包括当前服务器地址,API路径和一些常量
程序中需要使用CONF中的常量来判断当前状态的新消息类型
bot.state == bot.CONF.STATE.init // 初始化状态 bot.state == bot.CONF.STATE.uuid // 已获取 UUID bot.state == bot.CONF.STATE.login // 已登录 bot.state == bot.CONF.STATE.logout // 已退出登录 msg.MsgType == bot.CONF.MSGTYPE_TEXT // 文本消息 msg.MsgType == bot.CONF.MSGTYPE_IMAGE // 图片消息 msg.MsgType == bot.CONF.MSGTYPE_VOICE // 语音消息 msg.MsgType == bot.CONF.MSGTYPE_EMOTICON // 自定义表情消息 msg.MsgType == bot.CONF.MSGTYPE_MICROVIDEO // 小视频消息 msg.MsgType == bot.CONF.MSGTYPE_VIDEO // 视频消息
当前状态
当前登录用户信息
所有联系人,包括通讯录联系人,近期联系群,公众号
key为联系人UserName,UserName是本次登录时每个联系人的UUID,不过下次登录会改变
value为 Contact
对象,具体属性方法见 src/interface/contact.js
登录后接受到的所有消息
msg为 Message
对象,具体属性方法见 src/interface/message.js
启动实例,登录和保持同步
调用该方法后,通过监听事件来处理消息
停止实例,退出登录
调用该方法后,通过监听 logout
事件来登出
发送文本消息,可以包含emoji(
上传媒体文件,返回:
{ name: name, size: size, ext: ext, mediatype: mediatype, mediaId: mediaId }
发送图片,mediaId为uploadMedia返回的mediaId
bot.uploadMedia(fs.createReadStream('test.png')) .then(res => { return bot.sendPic(res.mediaId, ToUserName) }) .catch(err => { console.log(err) })
发送表情,可是是表情的MD5或者uploadMedia返回的mediaId
表情的MD5,可以自己计算但是可能不存在在微信服务器中,也可以从微信返回的表情消息中获得
发送视频
以应用卡片的形式发送文件,可以通过这个API发送语音
获取联系人头像
bot.getHeadImg(bot.contacts[UserName].HeadImgUrl).then(res => { fs.writeFileSync(`${UserName}.jpg`, res.data) }).catch(err => { console.log(err) })
获取图片或表情
bot.getMsgImg(msg.MsgId).then(res => { fs.writeFileSync(`${msg.MsgId}.jpg`, res.data) }).catch(err => { console.log(err) })
获取语音
获取小视频或视频
通过好友添加请求
置顶或取消置顶联系人
OP == 0 取消置顶 OP == 1 置顶
得到uuid,之后可以构造二维码或从微信服务器取得二维码
bot.on('uuid', uuid => { qrcode.generate('https://login.weixin.qq.com/l/' + uuid, { small: true }) console.log('二维码链接:', 'https://login.weixin.qq.com/qrcode/' + uuid) })
手机扫描后可以得到登录用户头像的Data URL
手机确认登录
成功登出
联系人更新,可得到已更新的联系人列表
所有通过同步得到的消息,通过 msg.MsgType
判断消息类型
bot.on('message', msg => { switch (msg.MsgType) { case bot.CONF.MSGTYPE_STATUSNOTIFY: break case bot.CONF.MSGTYPE_TEXT: break case bot.CONF.MSGTYPE_RECALLED: break } })
每个contact,继承自 interface/contact,除原本 json 外,扩展以下属性:
contact.AvatarUrl // 处理过的头像地址 contact.isSelf // 是否是登录用户本人 contact.getDisplayName() contact.canSearch(keyword)
此外,wechat4u 在实例上提供 Contact 作为联系人的通用接口,扩展以下属性:
wechat.contact.isRoomContact() wechat.contact.isSpContact() wechat.contact.isPublicContact() wechat.Contact.getUserByUserName() wechat.Contact.getSearchUser(keyword)
每个msg 对象继承自 interface/message,出原本 json 外,具有以下属性:
message.isSendBySelf // 是否是本人发送 message.isSendBy(contact) message.getPeerUserName() // 获取所属对话的联系人 UserName message.getDisplayTime() // 获取形如 12:00 的时间戳信息
关于微信网页端机器人的实现,已经有大量的轮子了。感谢各位大神!(排名不分先后。。收录的肯定也不齐。。)
关于微信网页端的接口说明,也有好几篇分析的很厉害的文章。
好了,差不多就这些资料了。如果想要开发个自己的,那就开工吧!