用 wxext 工具快速生成一个微信复读机功能
npm i wxext -g
wxext init
可复读文字、图片、动态表情、文章链接、小程序,群成员变化通知等
采用 e 小天 的 nodejs 插件
几行代码就可以实现复读机功能
还可以进群群聊管理
module.exports = {
OnReq: function (obj, callback) {
//30 秒内执行 callback 返回是(传入数据)否(传入空)拦截,否则请求返回超时
//避免超时先回调 callback(),再继续处理
//OnReq 事件需要在 package.json 中定义 OnReq 字段才会生效
//如不需要拦截请求消息,需删除 package.json 中的 OnReq 字段
console.log('收到请求事件', obj)
if (obj.isLocal) return callback()//如果是本地请求,不拦截
callback({ msg: '不允许外网访问' })//外网访问拦截
}
, OnRes: async function (obj) {
console.log('收到响应事件', obj)
if (!obj.data) return console.log('不是消息')
if (obj.data.fromid == obj.myid) return console.log('收到自己的消息')
//如果是群聊---只复读这个群的
if (obj.data.memid && obj.data.fromid != '24218554582@chatroom')
return console.log('避免打扰其他群的不复读')
//探索人类的本质---复读机的实现
let result = await FuDuJi(obj)
console.log('复读结果', result)
}
, OnStart: function () {
//插件启动
}
}
async function FuDuJi(obj) {
//如果是文本消息,则回复文本
if (obj.type == 1)
return await Send({ method: 'sendText', wxid: obj.data.fromid, msg: obj.data.msg })
//如果是图片消息,则回复图片
//图片 type=3,但是这里没有图片路径,用 xml 资源事件来实现
if (obj.type == 708)
return await Send({ method: 'sendImage', wxid: obj.data.fromid, img: obj.data.path, imgType: 'file' })
//如果是动态表情,则回复动态表情
if (obj.type == 47)
return await Send({ method: 'sendEmojiForward', wxid: obj.data.fromid, xml: obj.data.msg })
//如果是小程序、文章链接,则回复小程序、文章链接
if (obj.type == 49)
return await Send({ method: 'sendAppmsgForward', wxid: obj.data.fromid, xml: obj.data.msg })
//有人加群,加群 type=702 但是没有邀请人 id,用群成员信息更新来实现
if (obj.type == 701) {
for (let user of obj.data.member) {
if (user.new) {
//这是新用户
return await Send({ method: 'sendText', wxid: obj.data.fromid, msg: '又增加了新伙伴' })
}
}
}
//有人退群
if (obj.type == 703)
return await Send({ method: 'sendText', wxid: obj.data.fromid, msg: '小伙伴离开了我们' })
}
详细流程可以查看 开发文档
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.