使用Node+Wechaty做一个机器人

这篇具有很好参考价值的文章主要介绍了使用Node+Wechaty做一个机器人。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

准备工作

起步

实践

写在最后


使用Node+Wechaty做一个机器人

前言

这篇文章将结合Wechaty去实现一个机器人

在开始编码之前,我们先了解一下wechaty

Wechaty是一个聊天机器人,只需6行代码即可实现一个机器人,其跨平台性,多编程语言支持,使其在众多开源的bot项目中大放光彩。

关于它的使用,官方给的文档已经非常详细了,这里就不做描述

准备工作

  • node环境(v16+)
  • wechaty
  • qrcode-terminal(在控制台显示二维码)

起步

首先使用pnpm/npm/yarn安装以上依赖

创建一个wechaty server

const { WechatyBuilder } = require("wechaty");

const wechaty = WechatyBuilder.build();
wechaty
  .on("scan", (c, status) => {
    // status: 2代表链接等待调用,3代表链接已打开,这个链接实际上是提供一个登录的二维码供扫描
    if (status===2) {
      console.log(c)
    }
  })
  .on("login", (user) => console.log(`用户 ${user} 登录成功`))
  .on("message", (message) => console.log(`收到消息: ${message}`));
wechaty.start();

注意:在使用wechaty时一定要在node v16+环境下运行,我的电脑是win7,不支node13+的,所以我使用强制使用高版本node的方式在win7中运行了node18,这样做的话会导致下面这个报错使用Node+Wechaty做一个机器人

这是由于高版本(14.6版本后才增加这个函数)的node取os.hostname()时找不到当前计算机的用户名使用Node+Wechaty做一个机器人

使用Node+Wechaty做一个机器人

突然给电脑换系统又不太现实,所以我的快速的解决方式是增加以下代码(有其他补充,还请大佬指教)

Object.defineProperty(require("os"), "hostname", {
  value: () => {
    // 防止win7环境下,高版本node取不到os模块的hostname函数结果
    return "my-pc-host-name";
  },
});

const os = require("os");
console.log(os.hostname());

到这一步,我们还需要一个二维码的工具qrcode-terminal,将url转换为二维码,提供给手机扫描,代码如下:

Object.defineProperty(require("os"), "hostname", {
  value: () => {
    // 防止win7环境下,高版本node取不到os模块的hostname函数结果
    return "my-pc-host-name";
  },
});
const qrcode = require("qrcode-terminal");
const { WechatyBuilder } = require("wechaty");

const wechaty = WechatyBuilder.build();
wechaty
  .on("scan", (c, status) => {
    // status: 2代表等待,3代表扫码完成
    status === 2 && qrcode.generate(c, { small: true }, console.log);
  })
  .on("login", (user) => console.log(`用户 ${user} 登录成功`))
  .on("message", (message) => console.log(`收到消息: ${message}`));
wechaty.start();

效果:

确认登录

使用Node+Wechaty做一个机器人 使用Node+Wechaty做一个机器人

发送消息

使用Node+Wechaty做一个机器人

接收消息

 使用Node+Wechaty做一个机器人

实践

大家如果使用过socket的话,应该比较容易理解,这个模块消息的传递是基于发布订阅的

接下来,我们把这个机器人完善一下,配合这篇文章实现的接口,将机器人完整的功能实现一下

Object.defineProperty(require("os"), "hostname", {
  value: () => {
    // 防止win7环境下,高版本node取不到os模块的hostname函数结果
    return "my-pc-host-name";
  },
});

const qrcode = require("qrcode-terminal");
const { WechatyBuilder, ScanStatus } = require("wechaty");
const { sessionToken } = require("./session");
const request = require("request");
const wechaty = WechatyBuilder.build();
const url = "http://127.0.0.1:1024/sendMsg";
const sendChatGPT = (msg) => {
  const { promise, reject, resolve } = defer();
  request.post(
    url,
    {
      json: {
        msg,
        sessionToken,
      },
    },
    (error, res, body) => {
      if (error) return reject(error);
      console.log(body.msg);
      resolve(body.msg);
    }
  );
  return promise;
};
/**
 * @name:
 * @description: promise扁平处理
 * @return {*}
 */
const defer = () => {
  let resolve, reject;
  return {
    promise: new Promise((_resolve, _reject) => {
      resolve = _resolve;
      reject = _reject;
    }),
    resolve,
    reject,
  };
};

const onMessage = async (msg) => {
  // console.log(`收到消息: ${msg.toString()}`);
  const msgText = await msg.text();
  if (msgText) {
    try {
      const gptMsg = await sendChatGPT(msgText);
      msg.say(gptMsg);
    } catch (error) {
      msg.say(error);
    }
  }
};
const onLogout = (user) => {
  console.log(`用户 ${user} 退出成功`);
};
const onLogin = (user) => {
  console.log(`用户 ${user} 登录成功`);
};
const onError = console.error;
const onScan = (code, status) => {
  // status: 2代表等待,3代表扫码完成
  status === ScanStatus.Waiting &&
    qrcode.generate(code, { small: true }, console.log);
};

wechaty
  .on("scan", onScan)
  .on("login", onLogin)
  .on("logout", onLogout)
  .on("error", onError)
  .on("message", onMessage);
wechaty.start();

效果:使用Node+Wechaty做一个机器人

这里由于选择的是text而不是富文本的方式,所以中间的代码块没有显示出来,但是简单的问答还是能够实现的

写在最后

本文介绍了如何使用wechaty接入node,实现机器人的功能

感谢你看到了最后,如果文章对你有帮助的话,还请点赞支持一下博主,非常感谢文章来源地址https://www.toymoban.com/news/detail-515023.html

到了这里,关于使用Node+Wechaty做一个机器人的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Streamlit 实现一个聊天机器人界面

    效果如下: 只需要效果generate_llama2_response 为你的 llm的输出即可。

    2024年03月09日
    浏览(83)
  • 使用Python做一个微信机器人

    实现代码和pip安装: https://blog.csdn.net/Qwertyuiop2016/article/details/135076957 简介 该程序将微信的内部功能提取出来,然后在程序里加载Python,接着将这些功能导出成库函数,就可以在Python里使用这些函数 程序启动的时候会执行py_code目录下的main.py,类似于你在命令行使用 python main

    2024年02月07日
    浏览(36)
  • 使用Arduino Uno构建一个巡线机器人

    原文 MX 巡线机器人 (LFR: line follower robot)是一种简单的自主引导机器人,它遵循在地面上绘制的线来检测白色表面上的暗线或黑暗表面上的白线。在本教程中,使用 Arduino Uno 和一些易于访问的组件构建黑线跟随机器人。 巡线机器人的原理 如前所述,巡线机器人(LFR)跟随

    2024年02月10日
    浏览(40)
  • 使用Koishi搭建一个你的AI画图机器人

    作者本人对于Koishi是什么做出了这种的定义:Koishi.js - QQ 机器人的新选择 - 知乎 (zhihu.com) 最新的介绍中直接给出了 此文章旨在引导不了解Node.js,但对建立自己的机器人、AI画图有兴趣的各位同学给出一个引导作用 文章中不会涉及专业的编程、网络知识,也不会介绍AI画图的

    2023年04月09日
    浏览(39)
  • 搭建一个AI对话机器人——前端ChatUI使用纪录

    最近在使用 OpenAI 的 gpt api 搞着玩玩,然后就遇上了前端对话交互实现的需求场景,如何快速实现 CUI(Chat User Interface)成了问题。最后选择了来自阿里达摩院的ChatUI,本人便用于整理其使用经验。 服务于对话领域的设计和开发体系,助力智能对话机器人的搭建。——ChatUI 聊

    2024年02月07日
    浏览(44)
  • 使用ChatGPT构建一个AIML聊天机器人是什么体验

    ​ 使用ChatGPT构建一个AIML聊天机器人是什么体验,使用ChatGPT将C#代码转换为Swift代码以实现Swift版的Aiml聊天机器人,AIML(全名为Artificial Intelligence Markup Language)是一种基于XML模式匹配的人工智能标记语言,最早是一个名为\\\"A.L.I.C.E.\\\" (“Artificial Linguistic Internet Computer Entity”)的高

    2024年02月11日
    浏览(46)
  • LangChain入门(九)-使用Memory实现一个带记忆的对话机器人

    目录 一、说明 二、案例 一、说明 在第五章中我们使用的是通过自定义一个列表来存储对话的方式来保存历史的。 当然,你也可以使用自带的 memory 对象来实现这一点。 二、案例 结尾、扫一扫下方微信名片即可+博主徽信哦  ↓↓ ↓↓ ↓↓ ↓↓ ↓↓ ↓↓ ↓↓ ↓↓  ↓↓

    2024年02月16日
    浏览(38)
  • node+微信+chatgpt 机器人集成

     

    2024年02月04日
    浏览(48)
  • 发现一个可以免费使用Midjourney机器人的方法,手机电脑都可以用!亲测有效!...

    菜鸟学Python 第 627 篇原创 AI绘画目前Midjourney算是江湖兵器排行榜翘楚,说是屠龙刀不为过!画质非常细腻,漂亮,而且功能非常强大。只要你会合适的prompt语言,可以堪比顶级插画师。但是目前Midjourney是收费的,免费的额度已经没有了,一张都没有了。大家打开官网可以看

    2024年02月11日
    浏览(41)
  • 提供一个小工具:微信小程序自动转码机器人!供大家24小时免费使用!

    弄个微信小程序自动转码机器人就可以完成,今天把我的机器人安排给大家,外面很多都是收费的,2毛钱转一次,这个钱真没必要花,我的机器人供大家24小时免费用,下面简单介绍一下机器人的功能。 目前我的机器人,供大家常用的有三个功能,不常用的我就不多说了,后

    2024年02月09日
    浏览(93)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包