如何实现微信机器人并提取群聊信息

微信群中常常有大量信息,尤其是学术群,技术群,会有很多有用信息,那么如何做一个微信机器人,并提取有效信息然后保存呢?

本文就微信机器人的创建和信息提取,做一个简单介绍

 

 

  

 

微信机器人实现方式

 

微信机器人可以通过微信官方接口获取也可以通过第三方包来实现,有一个开源的包叫Wechaty,官方网址是 https://wechaty.js.org/zh/docs/

我们可以借助这个包,实现微信的通讯,具体思路如下:

1. 引入wechaty,启动机器人

2. 微信扫描登录,qrcode-terminal生成二维码

3. 监听消息,提取有用信息

4. 保存消息到本地,积累到一定数目,通过ajax发送服务器存储

具体的代码如下:

const { WechatyBuilder} = require("wechaty");
class Bot { // 机器人类
  bot = null;
  constructor() {
    this.bot = WechatyBuilder.build(); // 新建机器人对象
    this.bot.on("scan", (code) => { // 生成登陆二维码
      qrcode.generate(code, { small: true });
    });
    this.bot.on("message", this.onMessage.bind(this)); // 绑定监听微信消息事件
    this.bot.start(); // 开启该机器人
  }
  async onMessage(message) { // 监听消息回调函数
    const talker = message.talker(); // 发送消息的联系人
    const room = message.room(); // 发送消息的群组
    if (talker.payload.type != 1) return; // 对话用户类型限制
    if (message.payload.type != 7) return; // 消息内容非文本
    ...
    const text = await message.mentionText(); // 消息内容
    ...
    await talker.say(text); // 在私聊中发送消息
    ...
    const topic = await room.topic(); // 群名
    await room.say(image); // 在群组中发送消息
    ...
  }
}
(async () => {
  dotenv.config();
  try {
    new Bot(); // 启用一个机器人
  } catch (e) {
    console.error(e);
  }
})();

 

通过以上代码,就可以实现一个微信机器人,然后把这个微信机器人加入群聊,就能提取群里的信息,保存到对应后台数据库。

当然,代码是NodeJS的,所以最好用pm2来启动和管理。微信机器人本质是要一个用户的,比如自己的微信账号作为机器人,可以加好友,发朋友圈等等,所以,登录也是一样,要用一个微信扫描登录,下面就是登录的截图,扫描登录,该账号就是微信机器人账号了,参考下图:

 

 

结论