手把手教你搭建微信聊天机器人系列(二):eggjs+wechaty搭建一个简单的微信聊天机器人

2024-02-18 10:40

本文主要是介绍手把手教你搭建微信聊天机器人系列(二):eggjs+wechaty搭建一个简单的微信聊天机器人,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        上一章介绍了文心一言(百度千帆ERNIE-Bot大模型)API测试,这一章介绍微信聊天机器人的开发。

wechaty的介绍

        微信聊天机器人,就是一个通过特殊方式登录的微信号,你给他发信息,他可以自动回复。本人比较熟悉nodejs开发,所以找了nodejs能使用微信机器人组件wechaty。

        wechaty的github链接在此,从介绍可以看到,他只要简单的6行代码就可以实现一个微信机器人的基本功能。

核心代码是三个事件监听:

1、scan

扫码回调,当执行wechaty.start()会触发。会返回一个字符串,实际使用中我们需要用一个二维码生成组件qrcode-terminal来生成二维码,然后使用一个微信小号来扫码登录。

2、login

登录成功回调,当扫码登录成功时会触发。

3、message

接收消息回调,当机器人收到消息时会触发。

eggjs的介绍

        eggjs是nodejs的一个企业级框架,使用起来非常简单,关键是其功能非常强大。上一章,我们了解到ERNIE-Bot的会话接口需要一个access_token,这个access_token目前有效期是1个月。后续章节,我们将介绍如何通过eggjs的定时任务来检查access_token有效期,并执行更新操作。我们还了解到上下文语境的请求方式,需要传入历史对话数据,这些最好能使用数据持久化的方式进行存储。eggjs可以使用Sequelize(ORM框架)对数据库进行操作,方便我们存储聊天记录。

项目构建

        这一章,我们先简单介绍一下eggjs和wechaty的用法,实现一个小目标:微信机器人登录,接收消息,回复消息。

        eggjs项目的初始化,可以参考官方文档。

mkdir wechat-demo && cd wechat-demo
npm init egg? Please select a boilerplate type (Use arrow keys)──────────────
> simple - Simple egg app boilerplate? project name #按回车
? project description #按回车
? project author #按回车npm i

我们还要安装一下机器人wechaty和二维码生成qrcode-terminal组件

npm i -s wechaty
npm i -s qrcode-terminal

 创建好的项目结构是这样的

在app目录下面依次创建service目录和wechat.js

wechat.js中的代码

const {Service
} = require('egg');const {WechatyBuilder,ScanStatus
} = require("wechaty");
const qrcode = require("qrcode-terminal");const onMessage = async (message) => {console.log(`收到消息: ${message}`);
};const onLogout = (user) => {console.log(`用户 ${user} 退出成功`);
};
const onLogin = async (user) => {console.log(`用户 ${user} 登录成功`);
};
const onError = console.error;
const onScan = (code, status) => {// status: 2代表链接等待调用,3代表链接已打开,这个链接实际上是提供一个登录的二维码供扫描if (status === ScanStatus.Waiting) {// status: 2代表等待,3代表扫码完成qrcode.generate(code, {small: true}, console.log)}
};const wechaty = WechatyBuilder.build();
wechaty.on("scan", onScan).on("login", onLogin).on("logout", onLogout).on("error", onError).on("message", onMessage);wechaty.start();

我们执行一下命令

npm run dev

 我们用微信小号来扫一扫,登录后控制台会打印出【登录成功】

微信登录二维码问题处理

这里稍微扩展一下,CMD命令窗口输出的二维码,可能会有错乱的情况,请参照这篇文章进行调整

还有一种是控制台高度不够,生成的二维码不完整,如下图,两个正方形方框显示不全。这时候需要把控制台高度拉高,再重启服务。

        登录成功后会立即收到消息,这种消息类型是未知类型,估计是微信内部定义的一些消息类型,不用理会。我们用其他微信号向这个微信发消息,控制台会打印出来文字。

现在这个机器人只能收信息,不能发信息。我们对代码进行局部修改。

const onMessage = async (message) => {console.log(`收到消息: ${message}`);if (message.type() === wechaty.Message.Type.Text) {const userMsg = await message.text();message.say(`收到用户消息: ${userMsg}`);}
};

        从上面可以知道,我们使用message.say()可以给用户回消息。更多API文档,请参考官网链接。

        至此,一个简单的微信机器人服务已经搭建完毕。目前它仅仅进行了简单的回复,下一章我们将对接ERNIE-Bot接口,实现智能化的回复。

        本章项目代码可以去这里下载https://download.csdn.net/download/sfsgtc/88412427

这篇关于手把手教你搭建微信聊天机器人系列(二):eggjs+wechaty搭建一个简单的微信聊天机器人的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/720895

相关文章

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i