“ wechaty | 微信社群管理 - 机器人”
Hello,大家好。我是公众号“八点半技术站”的小编-Bruce.D。
今天是周三(2020-04-27),分享一句谚语 “积累知识、胜过积蓄金银” 。分享给大家的是 「工具 模块」- wechaty 微信机器人。
这里也是机器人源码完结版,我会具体拆分源码模块以及代码行对应的注释。如果你也想让自己微信社群有机器人辅助管理,那岂不美哉。那么请务必仔细阅读。
01
—
iPad 协议
上一部分我们讲解了 web 协议,你们期待的 iPad 协议,它来了。
首先在这里再次提醒大家,iPad 的协议是 需要 token(官方申请),如何申请这种问题,自己去看我的上篇文章,谢谢。
这里呢,我会提供给大家一个官方一个基于iPad 协议的padplus项目地址。
地址:https://github.com/wechaty/wechaty-puppet-padplus
官方提供一系列步骤,一个基础demo。新手可以先了解一下,然后开始使用我为大家提供的源码,这样效果更佳。
目前实现功能:
① 自动通过好友验证
② 私聊关键字回复
③ 自动聊天
④ 加入群聊自动欢迎
-
-
当有人添加机器人时,判断验证消息关键字后通过或直接通过
-
通过验证后自动回复并介绍机器人功能
-
例如回复
加群
推送群聊邀请 -
例如回复
作者微信
推送作者微信名片
-
群聊中通过
@[机器人]xxx
可以和机器人聊天 -
私聊发送消息即可聊天
-
当新的小伙伴加入群聊后自动
@[新的小伙伴]
发一个文字欢迎
-
02
—
源码 讲解
在这里,我会将源码每一块详细拆分+注释,希望能做到小白看了都有所感悟的那种效果。例如下面武庚终于开始牛逼+超神 那种效果。
第一 :代码结构
第二 :初期准备事项
1. 新建文件夹,初始化
npm init -y
2. 继续安装比较重要的核心包
// Wechaty核心包
npm install --save wechaty
// padplus协议包
npm install --save wechaty-puppet-padplus
3. 安装 qrcode-terminal 包,作用将二维码输出终端(我们可以扫码登录)
npm install --save qrcode-terminal
第三 :配置文件
配置文件 config.js ,这里主要配置 token、机器人名字、群组id、加入群里回复、好友加群验证。
第四 :入口文件
入口文件,也就是我们 src
目录下的 index.js
文件
这里做的很简单,没有逻辑
首先引入我们包
接着初始化我们的bot
接下来一段链式调用,监听,启动,完事
上面代码都有注释,scan, room-join, message, friendship 这些都是我们各个阶段的事件监听
-
scan 机器人需要扫描二维码时监听
-
room-join 加入房间监听
-
message 消息监听
-
friendship 好友添加监听
这些事件监听我只做简单解释,因为没啥说的,api文档都有,请仔细阅读我们的文档!!!
这些个监听后面的回调,我这里只不过把他们单独拿出去了,也就是上文目录结构中的那几个文件
这里的onMessage是做了一个方法调用,其实还是返回一个回调函数,只不过我们在消息监听中用到了bot实例,所以用这种方式传值而已。
第五 :解释各文件具体操作
onScan,onScan 文件是我们在机器人需要扫描二维码时的监听回调
这里面的代码超级简单
首先引入 qrcode-terminal 包
这个回调中其实做的很简单,回调接收了两个参数
-
qrcode qr码
-
status 状态
我们借助Qrterminal.generate这个API将 qr 码输出到终端而已,后面那个small参数是因为qrcode-terminal 这个包默认输出的二维码太大了,给它变小一些。
onFriendShip
onFriendShip是friendship事件监听的回调,好友添加监听
如上所示,我们想加好友时,验证消息填写我们指定的文字可以自动通过
So,我们从配置文件中拿到这个参数,在新的好友请求过来时做一个判断即可
onRoomJoin
onRoomJoin,也就是进入房间监听回调
需求是在我们需要管理的群聊中,只要有新人加入,我们就发一个欢迎词并@他下
当然这些东西还是在config中配置好的,在这里拿到就可以
此回调接收三个参数
-
room 群聊实例
-
inviteeList 受邀者名单
-
inviter 邀请者
有了房间,受邀者,邀请者,那么这里也就非常easy了,做一下判断就可以了,这里的room.id就是我们配置的管理群组列表对象的value值。
为什么要有管理群组列表对象呢?因为我们在登录了一个微信号时,群组进入监听是针对微信号中所有群组的,我的需求是要管理我的群组,所以事先跑了下程序,输出了room,然后群里发个消息,就拿到了我想管理的群组所有信息,id自然也在里面,然后写到了配置里。
接下来就是,监听到新加入,把受邀者列表遍历一下,使用room.say方法发送群消息即可,受邀者列表里存的就是加入的微信号实例,say 方法第一个参数就是要发送的消息,第二个参数就是为了@此人一下。。。感觉我的叙述毫无营养,还是那句话,这里只是说它是什么意思,具体API阅读文档吧,文档都有,也很简单。
message
最后就是message回调了,这个是代码最多的一个地方了,消息监听回调嘛
这也是代码中稍微有些逻辑的地方,因为要有各种判断。
先不说程序逻辑,机器人总得能聊天不是,所以网上找了个免费的机器人聊天接口对接了一下。
该接口详细请看
-
https://drea.cc/mm.php
其实就是一个API,我们做一下封装,调用传入消息,返回消息,仅此而已
因为有请求,所以这块用了一个请求包,一个参数解码包,所以还要安装并引入下
npm install --save request
npm install --save urlencode
把接口封装下,因为是免费机器人,所以肯定不是太好,不过个人用足够了,如下:
接着就可以写消息监听回调的逻辑了,这里就不文字叙述了,太费劲了,注释都是按行写的,大家可以直接去拉取源码,简单方便。
然后就可以本地启动试试了
就到这了,也希望对你能有些帮助。
看着文件和代码都不少,其实就只是一些逻辑判断而已
看一眼API文档,怎么发挥就看你自己了,消息监听这里的判断也只做了文本消息的判断而已。
你如果想用我这些东西,拉下代码 config.js 里换下token和一些配置信息就可以,当然我在不停更新,功能会越来越多,所以仓库中代码和文中会有些不一样,使用时简单看下代码,都写了详细注释,也很简单。
项目源码地址:
https://github.com/isboyjc/wechaty-Robot
恭喜你,又看完了一篇文章。
在这里,也希望你看完的每篇文章都能对自己有所提升(哪怕是帮助你再次巩固记忆)。
欢迎在wechat技术群一起交流成长(xzzs730)。