Categorygithub.com/timerzz/itchatgo
repositorypackage
0.0.9
Repository: https://github.com/timerzz/itchatgo.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# README

itchatgo

itchatgo受到itchat 项目的启发,可以通过golang处理微信信息。

itchatgo参考UOS版本微信,绕过了微信的登录限制。

itchatgo提供了更为易扩展的接口,通过这些接口,可以极大程度的开发出极具个性化的程序。

使用

在golang项目中使用itchatgo

import(
    "github.com/timerzz/itchatgo"
)

入门Demo

如果只使用api部分可以只引入api

import(
    "github.com/timerzz/itchatgo/api"
)
var api = api.NewApi()

TODO

  • 登录、登出
  • 接收消息
  • 发送文字,图片
  • 获取联系人
  • 获取群成员详情
  • 获取头像
  • 登录回调,退出登录回调,停止监听回调
  • 发送文件
  • 发送视频
  • 群、好友变更
  • 创建群聊
  • 邀请入群
  • 撤回消息

接口

登录

import(
"github.com/timerzz/itchatgo"
)

func func main() {
    clientSet := itchatgo.NewClientSet()
	uuidInfo, err := cs.LoginCtl().SetTimeout(3 * time.Minute).Login()
	if err != nil{
	    fmt.Println(err)
	    return
	}
	//设置登录成功和退出登录的回调函数
	cs.LoginCtl().SetLoggedCall(func() {
	    fmt.Println("登录成功")
	})
	cs.LoginCtl().SetLogoutCall(func() {
	    fmt.Println("退出登录")
	})
}

登录是LoginCtlLogin函数,函数返回uuidInfo和error。其中uuidInfo包含uuid、二维码图片 的[]byte以及二维码url。可以通过类似github.com/qianlnk/qrcode的库直接通过uuidInfo中的QrUrl生成二维码。

除此之外,还可以通过SetLoggedCall和SetLogoutCall用来设置登录成功和退出登录的回调函数。

登录有默认的超时时间是10min,超过10min就不再轮询。这个超时时间可以通过SetTimeout设置

更新二维码

	cs.LoginCtl().ReLoadUUid()

停止登录

	cs.LoginCtl().StopLogin()

在登录成功前,如果不停止登录,会一直轮询有没有登录成功

退出登录

clientSet.LoginCtl().Logout()

接收消息

var msgHandler = func(msg *model.WxRecvMsg) {
    if strings.Contains(msg.Content, "exit"){
        cs.LoginCtl().Logout()
    }else{
        fmt.Println(msg.Content)
    }
}

//错误处理函数
var errHandler = func(err error) {
    fmt.Println(err)
}

//开始监听
cs.MsgCtl().Receive(msgHandler, errHandler)

Receive需要传入消息的处理函数和错误处理函数

如果你不需要一直进行消息的接收,也可以使用MsgCtl().WebWxSync()来接收消息(可以参考Receive的实现)。

也可以通过SetExitCall设置退出监听时的回调函数

发送消息

clientSet.Api().SendMsg(msg, toUserName)  //发送文字消息
clientSet.Api().SendImage(filePath, toUserName, MediaId)  //发送图片

如果toUserName是"",默认会发给文件传输助手。

获取联系人

clientSet.ContactCtl().GetAllContact()
clientSet.ContactCtl().GetUserByNickName()

GetAllContact会获取所有联系人,好友和群会混在一起。

获取头像

clientSet.Api().GetHeadImg(userName, chatRoomName,filePath) 
clientSet.Api().GetHeadImgByUser(User,filePath)

获取头像提供了两个方法。
GetHeadImg接收三个参数:userName, chatRoomUserName, filePath。

如果没有username而有chatRoomUname, 就是获取群的头像   
如果两个都有,就是获取群中某个用户的头像   
如果有picPath, 还会把头像保存到filePath路径
返回值是头像的[]byte和error

另一个方法是GetHeadImgByUser(User,filePath), 可以直接传入model.User对象,这个方法 会使用User中的HedImgUrl字段去获取头像。
需要注意的是,这样个方法获取的头像大小不一样,GetHeadImg获取的图大,GetHeadImgByUser获取的图小

获取群详情

clientSet.ContactCtl().GetContactDetail()

特别鸣谢

itchat4go
ItChat

参考

微信网页版接口分析

捐赠

如果觉得这个项目有所帮助, 可以请我喝杯奶茶
图片名称 图片名称