node+微信+chatgpt 机器人集成

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

 node 调用chatgpt,web前端,前端,javascript,vue.js文章来源地址https://www.toymoban.com/news/detail-764726.html

const { WechatyBuilder, ScanStatus, log } = require('wechaty')
const qrTerminal = require('qrcode-terminal')

const defaultMessage = async ({ msg, bot }) => {
  const contact = msg.talker() 
  //const receiver = msg.to() 
  let content = msg.text() 
  const room = msg.room() 
  //const roomName = (await room?.topic()) || null // 
  const alias = (await contact.alias()) || (await contact.name()) 
  const remarkName = await contact.alias() 
  const name = await contact.name() 
  const isText = msg.type() === bot.Message.Type.Text
  const isRoom = true // roomWhiteList.includes(roomName) || roomName?.includes('gpt')
  // const isAlias =
  //   aliasWhiteList.includes(remarkName) ||
  //   aliasWhiteList.includes(name) ||
  //   remarkName.includes('gpt')
  const isAlias = true
  console.log('remarkName', remarkName)
  console.log('name', name)
  console.log('alias', alias)
  console.log('isAlias', isAlias)
  console.log(JSON.stringify(msg))

  if (isText) {
    content = content.trim()
    if (content.length > 4) {
      let startContent = content.slice(0, 4)
      startContent = startContent.toLowerCase()
      let message = ''
      let gptVersion = ''
      if (
        startContent === 'gpt,' ||
        startContent === 'gpt,' ||
        startContent === 'gpt ' ||
        startContent === 'gpt:' ||
        startContent === 'gpt:'
      ) {
        message = content.slice(4)
        gptVersion = '3.5'
      }

      let startContent2 = content.slice(0, 5)
      startContent = startContent.toLowerCase()
      if (
        startContent2 === 'gpt4,' ||
        startContent2 === 'gpt4,' ||
        startContent2 === 'gpt4 ' ||
        startContent2 === 'gpt4:' ||
        startContent2 === 'gpt4:'
      ) {
        message = content.slice(5)
        gptVersion = '4'
      }

      try {
        if (isRoom && room && message && gptVersion) {
          let result = await new Promise((resolve) => {
            chatAdd(
              {
                body: {
                  alias,
                  message,
                  gptVersion,
                  isRoom: true,
                  apiKeyValue: apiKey,
                },
                headers: {
                  version: 'wx',
                  platformos: 'wx',
                },
              },
              {
                send: (res) => {
                  resolve(res)
                },
              }
            )
          })
          if (result.code === 200) {
            await room.say(result.data.robotMessage)
          } else {
            await room.say(result.message)
          }
        } else if (isAlias && !room && message && gptVersion) {
          let result = await new Promise((resolve) => {
            chatAdd(
              {
                body: {
                  alias,
                  message,
                  gptVersion,
                  isRoom: false,
                  apiKeyValue: apiKey,
                },
                headers: {
                  version: 'wx',
                  platformos: 'wx',
                },
              },
              {
                send: (res) => {
                  resolve(res)
                },
              }
            )
          })
          if (result.code === 200) {
            let day = moment(Date.now()).format('YYYY-MM-DD')
            let wxUserObjKey = alias + day
            if (result.data.isBindWX) {
              await contact.say(`${result.data.robotMessage}`)
            } else if ( result.data.isBindWX === false && wxUserObj && wxUserObj[wxUserObjKey] <= 3) {
              await contact.say(`${result.data.robotMessage}`)
            } else {
              await contact.say(`${result.data.robotMessage}

### 温馨提示        
`)
            }
          } else {
            await contact.say(result.message)
          }
        } else {
          console.log('提问错误1')
        }
      } catch (e) {
        console.error(e)
      }
    } else {
      console.log('长短太短')
    }
  } else {
    console.log('不是文本')
  }
}

const chatWx = async (req, res) => {
  try {
    // 扫码
    const onScan = (qrcode, status) => {
      let qrcodeImageUrl
      if (status === ScanStatus.Waiting || status === ScanStatus.Timeout) {
        qrTerminal.generate(qrcode, { small: true })
        qrcodeImageUrl = [
          'https://api.qrserver.com/v1/create-qr-code/?data=',
          encodeURIComponent(qrcode),
        ].join('')
        console.log('onScan:', qrcodeImageUrl, ScanStatus[status], status)
      } else {
        log.info('onScan: %s(%s)', ScanStatus[status], status)
      }

      console.log(
        `Scan QR Code to login: ${status}\nhttps://wechaty.js.org/qrcode/${encodeURIComponent(
          qrcode
        )}`
      )
      console.log(qrcode)
      res.send({
        code: 200,
        data: {
          qrcode1: `https://wechaty.js.org/qrcode/${encodeURIComponent(
            qrcode
          )}`,
          qrcode,
          qrcodeImageUrl,
        },
        message: '成功',
      })
      return
    }

    // 登录
    const onLogin = (user) => {
      console.log(`${user} has logged in`)
      const date = new Date()
      console.log(`Current time:${date}`)
      console.log(`Automatic robot chat mode has been activated`)
    }

    // 登出
    const onLogout = (user) => {
      console.log(`${user} has logged out`)
    }

    // 收到好友请求
    const onFriendShip = async (friendship) => {
      const frienddShipRe = /chatgpt|chat/
      if (friendship.type() === 2) {
        if (frienddShipRe.test(friendship.hello())) {
          await friendship.accept()
        }
      }
    }
    const onMessage = async (msg) => {
      await defaultMessage({ msg, bot })
    }

    let bot
    // eslint-disable-next-line
    if (global.isLocal && false) {
      const CHROME_BIN = process.env.CHROME_BIN
        ? { endpoint: process.env.CHROME_BIN }
        : {}
      bot = WechatyBuilder.build({
        name: 'WechatEveryDay',
        puppet: 'wechaty-puppet-wechat4u', 
        //puppet: 'wechaty-puppet-wechat', 
        puppetOptions: {
          uos: true,
          ...CHROME_BIN,
        },
      })
    } else {
      bot = WechatyBuilder.build()
    }
    // 扫码
    bot.on('scan', onScan)
    // 登录
    bot.on('login', onLogin)
    // 登出
    bot.on('logout', onLogout)
    // 收到消息
    bot.on('message', onMessage)
    // 添加好友
    bot.on('friendship', onFriendShip)
    bot
      .start()
      .then(() => console.log('Start to log in wechat...'))
      .catch((e) => console.error(e))
  } catch (error) {
    console.log(error)
  }
}

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

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

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

相关文章

  • Nas搭建ai绘画 将Midjourney集成到微信机器人

    ChatGPT狂飙160天,世界已经不是之前的样子。 新建了人工智能中文站https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源  发布在https://it.weoknow.com/ 之前我们搭建过微信的chatgpt聊天机器人,也搭建过web端能实现chatgpt和mj画图的应用(Chatgpt Midjourney画图 gpts 语音识别 一个

    2024年03月13日
    浏览(34)
  • 一个开源免费功能强大的Chatgpt Web程序 搭建自己的Chatgpt机器人

    ChatGPT Web Midjourney Proxy 是我用过的几款ChatGPT Web程序当中我觉得最好用的一款,还支持midjourney的图片生成 ai换脸和很多的ChatGPT store。 ✅ 原chatgpt web 所有功能 ✅ chatgpt web 支持自定义api key、base_url ✅ midjourney 文生图 ✅ midjourney 垫图+文生图 ✅ midjourney 图变 U1到U4 、 V1到V4、重绘

    2024年03月23日
    浏览(37)
  • ChatGPT 微信机器人原理解析(一):如何接入 ChatGPT API

    本文在 3 月 29 日首发于我的“职场圈”知识星球: 本文是 ChatGPT 微信机器人的第三篇付费文章。之前的两篇付费文章为: 手把手带你搭建 ChatGPT 微信机器人! 把 ChatGPT 微信机器人一键部署到免费服务器! 后续的付费文章包括但不限于: ChatGPT 微信机器人背后的原理解析

    2024年02月11日
    浏览(43)
  • 10分钟!快速部署ChatGPT微信公众号机器人!

    在上面公众号后台就可以免费体验gpt机器人 马上五一啦,很多小伙伴都要出去玩了,出去玩没有GPT怎么行呢!有没有一个简单的,可以24小时玩的GPT的! 前面我们教过大家部署微信机器人做24小时的助理,还有chatgpt web版本! 今天我们来教大家第三招,把gpt部署到微信公众号

    2024年02月08日
    浏览(30)
  • 3分钟自定义你的chatGPT聊天微信机器人

    最近chatGPT实在太火了,不谈下都不好意思说自己在技术圈混了,刚好前段时间公司里面在举办一个企业微信机器人比赛,然后就用注册了openai的一个账号,用python写了一个玩玩,但是想想不过瘾只能公司内部体验,于是乎又花了2个小时写了一个基于微信的聊天机器人,这里

    2024年02月01日
    浏览(39)
  • 【Python微信机器人】第三篇:使用ctypes调用进程函数和读取内存结构体

    目前的系列目录(后面会根据实际情况变动): 在windows11上编译python 将python注入到其他进程并运行 注入Python并使用ctypes主动调用进程内的函数和读取内存结构体 使用汇编引擎调用进程内的任意函数 利用beaengine反汇编引擎的c接口写一个pyd库,用于实现inline hook 利用beaengine反汇编

    2024年02月06日
    浏览(33)
  • 王炸!10分钟把ChatGPT部署成24小时微信机器人!

    ChatGPT最近大家都是玩的风生水起,不亦乐乎!各种应用层出不穷,其中最接地气, 也是最受小白欢迎的就是wx机器人 ,因为它能跟微信深入融合( 详细看文末专栏 用Python+ChatGPT打造超强的微信机器人! ),直接使用!但是如果部署在自己的电脑上肯定不能做24小时的助理!怎

    2023年04月22日
    浏览(28)
  • 【ChatGPT】基于GO语言实现的微信聊天和图片生成机器人

    🎨基于GO语言实现的微信聊天和图片生成机器人🎨 个人微信接入ChatGPT,实现和GPT机器人互动聊天,同时支持基于文本生成图像。支持私聊回复和群聊艾特回复。 GitHub源代码地址 实现功能 GPT机器人模型热度可配置 提问增加上下文指令清空上下文 DreamStudio图像生成模型参数可

    2024年02月09日
    浏览(91)
  • 基于chatgpt-on-wechat的微信个人对话机器人搭建

    现在gpt很火,git中大佬们都创建了很多高星项目,我这里选用了chatgpt-on-wechat(项目地址:https://github.com/zhayujie/chatgpt-on-wechat),这个项目在扩展时也很舒服,大家可以去拉下来看看,学习源码才能方便后续的扩展 国内服务:前置条件需要走代理(这个不方便说,项目中也有对应的方案,大家

    2024年02月13日
    浏览(25)
  • 17行代码用python对接openai的api实现chatgpt微信对话机器人

    itchat python依赖下载 这里推荐这个。链接:衡天云

    2024年02月01日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包