微信接入chatgpt,使用node+chatgpt+wechaty做一个微信机器人(代码片段)

DieHunter1024 DieHunter1024     2022-12-21     131

关键词:

目录

前言

准备工作

起步

实践

写在最后


前言

接上篇文章:站在巨人的肩膀上,用Node+ChatGPT模块实现一个接口_DieHunter1024的博客-CSDN博客

我将ChatGPT模块的使用介绍了一下,使用自己的session发送请求达到调用ChatGPT进行聊天的目的,这篇文章会结合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,这样做的话会导致下面这个报错

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

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

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();

效果:

确认登录

 

发送消息

接收消息

 

实践

大家如果使用过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();

效果:

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

写在最后

感谢你看到了最后,如果文章对你有帮助的话,还请点赞支持一下博主,非常感谢

源码:ChatGPT-Wechaty-Bot: 使用ChatGPT+Wechaty实现的一个对话机器人

我的个人微信也迅速接入了chatgpt(代码片段)

本文主要来聊聊如何快速使用个人微信接入ChatGPT,欢迎xdm尝试起来,仅供学习参考,切莫用于做不正当的事情关于ChatGPT我们每个人都可以简单的使用上,不需要你有很强的技术背景,不需要你有公众号,... 查看详情

chatgpt接入微信公众号的步骤教程以及解决5秒限制的方案

下面给的是chatgpt接入微信公众号的步骤教程:在微信公众平台中注册一个订阅号或服务号。在微信公众平台中创建一个机器人。在chatgpt的网站中注册一个账号。在chatgpt的网站中进入机器人设置页面,并点击“新建机器人”按... 查看详情

chatgpt能接入微信了!

整理自|量子位/Github这些天,ChatGPT可以说火爆全网,各种玩法层出不穷。前两天还看到不少人讨论,要是ChatGPT接入微信是啥感觉?这不,Github开源项目都已经来了,GithubTrending上就有推荐~来看效果,Cha... 查看详情

chatgpt能接入微信了!

整理自|量子位/Github这些天,ChatGPT可以说火爆全网,各种玩法层出不穷。前两天还看到不少人讨论,要是ChatGPT接入微信是啥感觉?这不,Github开源项目都已经来了,GithubTrending上就有推荐~来看效果,Cha... 查看详情

chatgpt能接入微信了!

...寺量子位|公众号QbitAI前两天还看到不少人讨论,要是ChatGPT接入微信是啥感觉?这不,想你所想,项目已经来了~来看效果,ChatGPT就出现在普通的微信对话框里,有问必答:△图源@我是小马甲(... 查看详情

chatgpt能接入微信了

...寺量子位|公众号QbitAI前两天还看到不少人讨论,要是ChatGPT接入微信是啥感觉?这不,想你所想,项目已经来了~来看效果,ChatGPT就出现在普通的微信对话框里,有问必答:△图源@我是小马甲(... 查看详情

chatgpt能接入微信了

...寺量子位|公众号QbitAI前两天还看到不少人讨论,要是ChatGPT接入微信是啥感觉?这不,想你所想,项目已经来了~来看效果,ChatGPT就出现在普通的微信对话框里,有问必答:△图源@我是小马甲(... 查看详情

chatgpt能接入微信了!

...寺量子位|公众号QbitAI前两天还看到不少人讨论,要是ChatGPT接入微信是啥感觉?这不,想你所想,项目已经来了~来看效果,ChatGPT就出现在普通的微信对话框里,有问必答:△图源@我是小马甲(... 查看详情

赞!chatgpt能接入微信了

...的个人服务器?前两天还看到不少人讨论,要是ChatGPT接入微信是啥感觉?这不,想你所想,项目已经来了~扩展:从技术原理上看,ChatGPT会取代搜索引擎吗?来看效果,ChatGPT就出现在普通的微... 查看详情

好玩多了,chatgpt接入微信公众号方法总结(绝对可行)(代码片段)

chatGPT挺好用的。但是想用时就得打开网页或者其他工具插件才行?太不方便了。记得有次要给媳妇演示下它的强大,竟没带电脑竟啥事干不成。索性把chatGPT接入微信公众号,这样在公众号聊天窗口里发消息,chatG... 查看详情

牛逼啊,chatgpt能接入微信了!

...自:量子位/Github前两天还看到不少人讨论,要是ChatGPT接入微信是啥感觉?这不,Github热榜都有推荐~这不࿰ 查看详情

搭建一个自己的chatgpt网页使用chatgpt使用方法全汇总(代码片段)

...I生成网页二、接入微信小程序三、接入qq机器人四、搭建chatgpt网页五、分享几个在线使用的方法七、正确使用chatgpt提问方式八、chatgpt能帮你做什么,大大提高工作效率九、开发者模式一、调用gpt-3.5-turboAPI生成网页1.需要有... 查看详情

微信中如何接入chatgpt机器人才比较安全(不会收到警告或者f号)之第一步登录微信(代码片段)

...有这个话题?大家都知道最近有个AI机器人很火,那就是chatgpt,关于它的介绍,大家可以自行百度去,我这边就不多介绍了。好多人嫌网页版玩的不过瘾,就把这个机器人接入到了QQ上,接入到了钉钉上,TG上、飞书上等等,还... 查看详情

我把chatgpt接入微信群后,信息真的大爆炸了

前两天,我把ChatGPT接入了微信群:会帮你写SQL的机器人 <- (戳我直达)使用三天后,我终于见识到了,什么是信息大爆炸。从早上睁眼开始,@樱木(对话机器人)就在群里一直忙个不停... 查看详情

我把chatgpt接入微信群后,3天炸2号

在1月最后一天,我把ChatGPT接入了微信群本着给大家贡献点乐子,捎带提高些效率的目的,有了这篇文章:会帮你写SQL的机器人 <-戳我直达在群里观察近1周,我发现大部分人,对于使用ChatGPT提高效率... 查看详情

微信中如何接入chatgpt机器人才比较安全(不会收到警告或者f号)之第二步注入dll文件(代码片段)

...的小课堂。前言上一篇文章我们提到过,微信中如何接入chatgpt机器人才比较安全(不会收到警告或者f号)之第一步登录微信,需要的大家可以点进去看。文接上篇,本文主要介绍如果将机器人接入到微信中的方法之一,别的方... 查看详情

把chatgpt接入我的个人网站(代码片段)

效果图详细内容和使用说明可以查看我的个人网站文章把ChatGPT接入我的个人网站献给有外网服务器的小伙伴如果你本人已经有一台外网的服务器,并且页拥有一个OpenAIAPIKey,那么下面就可以参照我的教程来搭建一个自己... 查看详情

微信中如何接入机器人才比较安全(不会收到警告或者f号)之第三步正式接入(代码片段)

...公众号:雄雄的小课堂。前言前面两篇文章分别介绍了下chatgpt接入方式:微信中如何接入chatgpt机器人才比较安全(不会收到警告或者f号)之第一步登录微信微信中如何接入chatgpt机器人才比较安全(不会收到警告或者f号)之第... 查看详情