背景
女朋友做微商代理卖水果,建了一个卖水果的微信群,为了维持群里的活跃度,有时候会弄一些积分送水果的活动,对于群成员的积分管理只能靠手动记分来维护,这样操作起来其实挺辛苦的。因此想做一个自动记分的群管理机器人,手动@用户就可以给用户加积分,这样就不用一个一个手动改备注积分啦,后期统计起来也很方便。
功能
- 自动处理好友请求
- 通过@成员给成员加积分
- 群管理(拉人进群、@群成员)
当用户在群里发好评时,@该用户会给用户添加自定义积分。
结构
|-- config/
|------config.js # 用于存储机器人的一些配置以及群配置。
|---service # eggJs 搭建的数据接口
|-- src/
|----- integral.js # 积分业务逻辑处理
|----- onScan.js # 机器人需要扫描二维码时监听回调
|------ onRoomJoin.js # 进入房间监听回调
|------ onMessage.js # 消息监听回调
|------ onFriendShip.js # 好友添加监听回调
|------ postServer.js # 消息回复的处理
|------ superagent.js # ajax 接口调用的封装
|---- config.js # 配置文件
|---app.js # 入口文件
|-- package.json
服务层
服务层是用eggJs 搭建 配置起来超级简单,使用mysql作为数据持久化存储。具体可参考官网配置。
依赖
wechaty:wechaty 核心库
wechaty-puppet-padplus:wechaty的ipad协议实现
代码介绍
import { Wechaty } from 'wechaty' // Wechaty核心包
import { PuppetPadplus } from 'wechaty-puppet-padplus' // padplus协议包
import config from './config/config' // 配置文件
import onScan from './src/onScan' // 机器人需要扫描二维码时监听回调
import onRoomJoin from './src/onRoomJoin' // 加入房间监听回调
import onMessage from './src/onMessage' // 消息监听回调
import onFriendShip from './src/onFriendShip' // 好友添加监听回调
// 初始化
const bot = new Wechaty({
puppet: new PuppetPadplus({
token: config.token
}),
name: config.name
})
bot
.on("scan", onScan) // 机器人需要扫描二维码时监听
.on("room-join", onRoomJoin) // 加入房间监听
.on('login', (user) => {
console.log(`user ${user} login`)
})
.on("message", onMessage(bot)) // 消息监听
.on("friendship", onFriendShip) // 好友添加监听
.start()
本地运行
- 克隆项目
git clone https://github.com/hzhuhao/wechaty-integral-robot.git
cd wechaty-integral-robot
- 安装依赖机器人所需依赖
npm install
- 安装serve服务依赖
cd service
npm install
// 启动服务
npm start
- 启动项目
npm start
使用
- 打开
config/config.js
文件 - 修改
config
配置 - 进入
service/config
修改服务配置 以及 配置mysql数据库 - 运行项目
致谢
非常感谢Wechaty团队提供微信机器人SDK,让开发者可以专注于业务代码。
感谢句子互动提供的pad协议版token。
wechaty: https://wechaty.github.io/
juzibot: https://www.juzibot.com