前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(下部) wechaty 微信机器人源码教程

(下部) wechaty 微信机器人源码教程

作者头像
八点半的Bruce、D
发布2020-06-09 12:28:18
2.7K0
发布2020-06-09 12:28:18
举报
文章被收录于专栏:八点半技术站八点半技术站

今天是周三(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 requestnpm install --save urlencode

把接口封装下,因为是免费机器人,所以肯定不是太好,不过个人用足够了,如下:

接着就可以写消息监听回调的逻辑了,这里就不文字叙述了,太费劲了,注释都是按行写的,大家可以直接去拉取源码,简单方便。

然后就可以本地启动试试了

就到这了,也希望对你能有些帮助。

看着文件和代码都不少,其实就只是一些逻辑判断而已

看一眼API文档,怎么发挥就看你自己了,消息监听这里的判断也只做了文本消息的判断而已。

你如果想用我这些东西,拉下代码 config.js 里换下token和一些配置信息就可以,当然我在不停更新,功能会越来越多,所以仓库中代码和文中会有些不一样,使用时简单看下代码,都写了详细注释,也很简单。

项目源码地址

https://github.com/isboyjc/wechaty-Robot

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 八点半技术站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • onScan,onScan 文件是我们在机器人需要扫描二维码时的监听回调
  • onFriendShip
  • onRoomJoin
  • message
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档