如何用76行代码写一个AI微信机器人......

本期博客主要介绍如何使用 微信SDKAI聊天接口 ,实现 微信机器人功能

准备

  1. 电脑需要安装Go环境,这个可以直接参考菜鸟教程:Go 语言环境安装,知道CSDN的同学基本能在半小时内装好吧…
  2. (可选)一个编译器,可用VS Code或者Goland等。或者你直接用 CMD(终端) 也是可以的;
  3. 如果你不会Go,可以直接私信找我要源码包,安装好Go环境后,执行两行命令就可以运行。

代码分析

本次项目只需要写 76 行代码(含注释和空行),先上代码。

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"github.com/eatmoreapple/openwechat"
	"io"
	"net/http"
)

func main() {
    
    
	//bot := openwechat.DefaultBot()
	bot := openwechat.DefaultBot(openwechat.Desktop) // 桌面模式,上面登录不上的可以尝试切换这种模式

	// 注册消息处理函数
	bot.MessageHandler = func(msg *openwechat.Message) {
    
    
		// 这里可以加自己的回复逻辑,比如匹配到关键字回复、收到到图片回复等 -- by 豆小匠
		if msg.IsText() {
    
    
			sizhiMsg, _ := getSizhiMsg(msg.Content)
			_, _ = msg.ReplyText(sizhiMsg)
		}
	}

	// 注册登陆二维码回调
	bot.UUIDCallback = openwechat.PrintlnQrcodeUrl

	// 创建热存储容器对象
	reloadStorage := openwechat.NewFileHotReloadStorage("wechat.json")
	defer func(reloadStorage io.ReadWriteCloser) {
    
    
		_ = reloadStorage.Close()
	}(reloadStorage)

	// 执行热登录
	if err := bot.HotLogin(reloadStorage, openwechat.NewRetryLoginOption()); err != nil {
    
    
		fmt.Println(err)
		return
	}

	// 阻塞主goroutine, 直到发生异常或者用户主动退出
	_ = bot.Block()
}

type Resp struct {
    
    
	Message string `json:"message"`
	Data    struct {
    
    
		Type int `json:"type"`
		Info struct {
    
    
			Text string `json:"text"`
		} `json:"info"`
	} `json:"data"`
}

// getSizhiMsg 这个是思知AI聊天接口https://api.ownthink.com/bot
func getSizhiMsg(content string) (string, error) {
    
    
	bytesData, _ := json.Marshal(map[string]interface{
    
    }{
    
    
		"spoken": content,
	})
	resp, err := http.Post("https://api.ownthink.com/bot",
		"application/json",
		bytes.NewReader(bytesData))
	if err != nil {
    
    
		return "", err
	}

	defer resp.Body.Close()
	rspBody, err := io.ReadAll(resp.Body)
	if err != nil {
    
    
		return "", err
	}
	ret := Resp{
    
    }
	err = json.Unmarshal(rspBody, &ret)
	if err != nil {
    
    
		return "", err
	}
	return ret.Data.Info.Text, nil
}

可以看到,main函数里主要使用了微信SDK调起微信的登录和微信消息的监听getSizhiMsg函数则是一个普通的POST请求,用于AI聊天对话获取。

运行项目

请确保你安装好了Go环境,打开项目所在目录的terminal终端,在CMD、VS Code或者Goland都无所谓,然后按顺序运行下面两行命令。

# 初始化和运行:
go mod tidy
go run main.go

不出意外的话,你的浏览器现在打开了一个登录二维码界面,微信扫码登录(可能提示异地登录,正常情况),然后让好友给你发个信息,就会发现你的微信会自动回复了~

最后

本文只介绍微信机器人的实现,不建议做商业化用途(有封号风险)。
另外,如果需要本次项目源码包,可以私信我:获取AI微信机器人源码包。(不常看CSDN,回复可能比较慢,谅解下~)

Guess you like

Origin blog.csdn.net/weixin_44778151/article/details/129219768