本期博客主要介绍如何使用 微信SDK 和 AI聊天接口 ,实现
微信机器人功能
。
准备
- 电脑需要安装Go环境,这个可以直接参考菜鸟教程:Go 语言环境安装,知道CSDN的同学基本能在半小时内装好吧…
- (可选)一个编译器,可用VS Code或者Goland等。或者你直接用 CMD(终端) 也是可以的;
- 如果你不会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,回复可能比较慢,谅解下~)