程序猿的进阶屋微信机器人

基于 Wachaty 开发微信机器人 & 个人微信号小助手平台

2020-11-20  本文已影响0人  WuxWeapp

wxbot

微信机器人,个人微信号小助手平台, nodejs + nuxt + wechaty 技术栈

准备

微信机器人开源库调研,GitHub 找到以下 3 个开源作品:

初识 wechaty

Wechaty 是一个开源的的对话机器人 SDK,支持 个人号 微信。它是一个使用 Typescript 构建的 Node.js 应用。支持多种微信接入方案,包括网页,ipadioswindowsandroid 等。同时支持 Linux, Windows, Darwin(OSX/Mac)Docker 多个平台。

先看一下官方文档:

只需要 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()

更多功能包括:

好了,文档齐全 & api 丰富,完全满足我的需求,就选这个库了。

首先跑一个示例看看 wechaty-getting-started。下载完之后先 npm install & npm start 一顿操作,然后运行就有了登录二维码,拿出手机扫码,然后 GG。

基于 Web 微信的限制

查找资料 基于nodejs + wachaty开发微信机器人平台,发现已经有大佬踩过坑了。

原来2017年之后注册的微信号都无法登录网页版微信,而2017年之前注册得微信账号也有很大几率登录不上,找朋友试了也都不行。

检验你的微信号是否支持网页微信登录:

http://wx.qq.com

点击链接链接,PC端进入然后手机扫码登录,若是可以登上,即可以使用上述示例

然后又去看了 vbot 和 itchat,但发现也都是是基于网页协议实现的

从网上查资料,大概有一下几种实现方式:

看了看,内部通道是不可能的,只有ipad协议个mac协议目前最好了

wechaty-puppet-padplus

使用 wechaty-puppet-padplus 一套基于 ipad 协议的包。不过天下没有免费的午餐,需要申请 token,见 Wechaty Token 申请及使用文档和常见问题

聊天机器人 API

目前网络上有许多非常好的智能聊天机器人,这里找了6个目前使用很广泛的:

搭建微信机器人平台

项目初始参考 wxbot 搭建机器人后台管理。

项目介绍

admin.png

技术构成

这里就直接介绍下机器人模块

|-- server/
|———- /lib
|------ FriendShip.js   # 友谊关系,好友添加监听
|------ Login.js        # 机器人登录退出
|------ Message.js      # 消息监听处理
|------ Room.js         # 加群,退出群聊
|------ Task            # 机器人定时任务
|———- index.js          # 入口文件

快速开始

准备条件

安装依赖

cnpm i

启动服务

首先需要修改配置文件 local/config.js 或者根目录创建 .local.config.js 配置文件(此文件已加入 .gitignore 中可以防止 token 敏感信息上传至 git)。

npm run local
npm run dev

先编译项目

npm run build

再启动服务

npm start

打开浏览器,访问 http://localhost:3000/

系统配置

根据实际情况修改 config.js 配置文件,修改后需要重启服务才能生效。
参数说明:

host

String 类型,主机名,配置为 0.0.0.0 表示监听任意主机。

port

Number 类型,端口号。

mongoUrl

String 类型,MongoDB 链接。

secret

String 类型,JWT 秘钥。

tianApiKey

String 类型,天行数据秘钥

线上部署

使用PM2

推荐使用 pm2 进行 Node.js 的进程管理和持久运行。

安装
cnpm i -g pm2
启动
pm2 start pm2.config.js

踩坑

1.Wechaty Token 申请及使用文档和常见问题

2.tianApiKey 申请及天行机器人配置

3.部署中执行 sudo pm2 报错 command not found 问题

4.部署中执行 sudo pm2 报错 permission denied 问题

感谢

上一篇 下一篇

猜你喜欢

热点阅读