tt/core/callapi_contact.go

433 lines
14 KiB
Go
Raw Normal View History

2024-05-28 08:47:31 +08:00
package core
import (
"github.com/goWxHook/goWxHook/utils/json"
)
type GetFriendListResponse struct {
Data []GetFriendListResponseDateItem `json:"data"`
Type int `json:"type"`
}
type GetFriendListResponseDateItem struct {
Account string `json:"account"` // 微信账号,友情的直接连线
Avatar string `json:"avatar"` // 头像的风景画,好友的形象代言
City string `json:"city"` // 都市的温馨角落,好友的日常坐标
Country string `json:"country"` // 国界的另一端,好友的远方故事
LabelidList string `json:"labelid_list"` // 标签的彩虹桥,连接不同朋友圈的密码
Nickname string `json:"nickname"` // 昵称的诗篇,好友的个性签名
Province string `json:"province"` // 省份的风土人情,好友的地域色彩
Remark string `json:"remark"` // 备注的小秘密,只有你知道的代号
Sex int `json:"sex"` // 性别的罗盘1为蓝海2为红颜
Wxid string `json:"wxid"` // 微信ID好友的唯一坐标
}
// GetFriendList 获取好友列表
func (w *WxApi) GetFriendList() ([]GetFriendListResponseDateItem, error) {
resp, err := w.internalCall(MtDataFriendsMsg, 10, MtDataFriendsMsg, map[string]interface{}{}, nil)
if err != nil {
return nil, err
}
var rdata GetFriendListResponse
err = json.Unmarshal([]byte(resp), &rdata)
if err != nil {
return nil, WxError{-1, err.Error()}
}
return rdata.Data, nil
}
type GetFriendInfoResponse struct {
Data GetFriendListResponseDateItem `json:"data"`
Type int `json:"type"`
}
// GetFriendInfo 获取单个好友信息
func (w *WxApi) GetFriendInfo(wxid string) (*GetFriendListResponseDateItem, error) {
resp, err := w.internalCall(MtDataWxidMsg, 10, MtDataWxidMsg, map[string]interface{}{"wxid": wxid}, nil)
if err != nil {
return nil, err
}
var rdata GetFriendInfoResponse
err = json.Unmarshal([]byte(resp), &rdata)
if err != nil {
return nil, WxError{-1, err.Error()}
}
return &rdata.Data, nil
}
type GetFriendBriefInfoByProtocolResponseData struct {
Account string `json:"account"`
Avatar string `json:"avatar"`
City string `json:"city"`
Country string `json:"country"`
Nickname string `json:"nickname"`
Province string `json:"province"`
Remark string `json:"remark"`
Sex int `json:"sex"`
Signature string `json:"signature"`
SmallAvatar string `json:"small_avatar"`
SnsPic string `json:"sns_pic"`
SourceType int `json:"source_type"`
Status int `json:"status"`
V1 string `json:"v1"`
V2 string `json:"v2"`
Wxid string `json:"wxid"`
}
type GetFriendBriefInfoByProtocolResponse struct {
Data GetFriendBriefInfoByProtocolResponseData `json:"data"`
Type int `json:"type"`
}
// GetFriendBriefInfoByProtocol 获取好友简要信息(协议)
func (w *WxApi) GetFriendBriefInfoByProtocol(wxid string) (*GetFriendBriefInfoByProtocolResponseData, error) {
resp, err := w.internalCall(MtUpdateWxidMsg, 20, MtUpdateWxidMsg, map[string]interface{}{"wxid": wxid}, nil)
if err != nil {
return nil, err
}
var rdata GetFriendBriefInfoByProtocolResponse
err = json.Unmarshal([]byte(resp), &rdata)
if err != nil {
return nil, WxError{-1, err.Error()}
}
return &rdata.Data, nil
}
type GetFriendDetailInfoByProtocolResponseData struct {
BaseResponse struct {
ErrMsg struct {
} `json:"errMsg"`
Ret int `json:"ret"`
} `json:"baseResponse"`
ContactCount int `json:"contactCount"`
ContactList []GetFriendDetailInfoByProtocolResponseDataContactListItem `json:"contactList"`
RetList []struct {
RetList int `json:"retList"`
} `json:"retList"`
VerifyUserValidTicketList []interface{} `json:"verifyUserValidTicketList"`
}
type GetFriendDetailInfoByProtocolResponseDataContactListItem struct {
AddContactScene int `json:"addContactScene"`
AdditionalContactList struct {
LinkedinContactItem struct {
} `json:"linkedinContactItem"`
} `json:"additionalContactList"`
AlbumBgImgId string `json:"albumBgImgId"`
AlbumFlag int `json:"albumFlag"`
AlbumStyle int `json:"albumStyle"`
Alias string `json:"alias"`
BigHeadImgUrl string `json:"bigHeadImgUrl"`
BitMask int64 `json:"bitMask"`
BitVal int `json:"bitVal"`
CardImgUrl string `json:"cardImgUrl"`
ChatRoomData string `json:"chatRoomData"`
ChatRoomNotify int `json:"chatRoomNotify"`
ChatRoomOwner string `json:"chatRoomOwner"`
ChatroomInfoVersion int `json:"chatroomInfoVersion"`
ChatroomMaxCount int `json:"chatroomMaxCount"`
ChatroomType int `json:"chatroomType"`
ChatroomVersion int `json:"chatroomVersion"`
City string `json:"city"`
ContactType int `json:"contactType"`
Country string `json:"country"`
CustomizedInfo struct {
BrandFlag int `json:"brandFlag"`
BrandIconURL string `json:"brandIconURL"`
BrandInfo string `json:"brandInfo"`
ExternalInfo string `json:"externalInfo"`
} `json:"customizedInfo"`
DeleteFlag int `json:"deleteFlag"`
Description string `json:"description"`
DomainList struct {
} `json:"domainList"`
EncryptUserName string `json:"encryptUserName"`
ExtInfo string `json:"extInfo"`
HasWeiXinHdHeadImg int `json:"hasWeiXinHdHeadImg"`
HeadImgMd5 string `json:"headImgMd5"`
IdcardNum string `json:"idcardNum"`
ImgBuf struct {
Buffer string `json:"buffer"`
ILen int `json:"iLen"`
} `json:"imgBuf"`
ImgFlag int `json:"imgFlag"`
LabelIdList string `json:"labelIdList"`
Level int `json:"level"`
MobileFullHash string `json:"mobileFullHash"`
MobileHash string `json:"mobileHash"`
MyBrandList string `json:"myBrandList"`
NewChatroomData struct {
ChatRoomMemberList []interface{} `json:"chatRoomMemberList"`
InfoMask int `json:"infoMask"`
MemberCount int `json:"memberCount"`
} `json:"newChatroomData"`
NickName struct {
String string `json:"string"`
} `json:"nickName"`
PersonalCard int `json:"personalCard"`
PhoneNumListInfo struct {
Count int `json:"count"`
PhoneNumList []interface{} `json:"phoneNumList"`
} `json:"phoneNumListInfo"`
Province string `json:"province"`
PyInitial struct {
String string `json:"string"`
} `json:"pyInitial"`
QuanPin struct {
String string `json:"string"`
} `json:"quanPin"`
RealName string `json:"realName"`
Remark struct {
} `json:"remark"`
RemarkPYInitial struct {
} `json:"remarkPYInitial"`
RemarkQuanPin struct {
} `json:"remarkQuanPin"`
RoomInfoCount int `json:"roomInfoCount"`
RoomInfoList []interface{} `json:"roomInfoList"`
Sex int `json:"sex"`
Signature string `json:"signature"`
SmallHeadImgUrl string `json:"smallHeadImgUrl"`
SnsUserInfo struct {
SnsBgImgId string `json:"snsBgImgId"`
SnsBgObjectId string `json:"snsBgObjectId"`
SnsFlag int `json:"snsFlag"`
SnsFlagEx int `json:"snsFlagEx"`
} `json:"snsUserInfo"`
Source int `json:"source"`
UserName struct {
String string `json:"string"`
} `json:"userName"`
VerifyContent string `json:"verifyContent"`
VerifyFlag int `json:"verifyFlag"`
VerifyInfo string `json:"verifyInfo"`
WeiDianInfo string `json:"weiDianInfo"`
Weibo string `json:"weibo"`
WeiboFlag int `json:"weiboFlag"`
WeiboNickname string `json:"weiboNickname"`
}
type GetFriendDetailInfoByProtocolResponse struct {
Data GetFriendDetailInfoByProtocolResponseData `json:"data"`
Type int `json:"type"`
}
// GetFriendDetailInfoByProtocol 获取好友详细信息(协议)
func (w *WxApi) GetFriendDetailInfoByProtocol(wxid string) ([]GetFriendDetailInfoByProtocolResponseDataContactListItem, error) {
resp, err := w.internalCall(MtGetFriendDetailMsg, 20, MtGetFriendDetailMsg, map[string]interface{}{"wxid": wxid}, nil)
if err != nil {
return nil, err
}
var rdata GetFriendDetailInfoByProtocolResponse
err = json.Unmarshal([]byte(resp), &rdata)
if err != nil {
return nil, WxError{-1, err.Error()}
}
return rdata.Data.ContactList, nil
}
// GetFriendDetailInfoListByProtocol 批量获取好友详细信息(协议)
func (w *WxApi) GetFriendDetailInfoListByProtocol(wxids []string) ([]GetFriendDetailInfoByProtocolResponseDataContactListItem, error) {
resp, err := w.internalCall(MtGetFriendDetailMsg, 20, MtGetFriendDetailMsg, map[string]interface{}{"username_list": wxids}, nil)
if err != nil {
return nil, err
}
var rdata GetFriendDetailInfoByProtocolResponse
err = json.Unmarshal([]byte(resp), &rdata)
if err != nil {
return nil, WxError{-1, err.Error()}
}
return rdata.Data.ContactList, nil
}
type EditFriendRemarkRequest struct {
Wxid string `json:"wxid"`
Remark string `json:"remark"`
}
// EditFriendRemark 编辑好友备注
func (w *WxApi) EditFriendRemark(request EditFriendRemarkRequest) (err error) {
_, err = w.internalCall(0, -1, MtModFriendRemarkMsg, request, nil)
return err
}
type AddFriendRequest struct {
Wxid string `json:"wxid"`
Remark string `json:"remark"`
RoomWxid string `json:"room_wxid"`
SourceType int `json:"source_type"`
}
// AddFriend 发送好友申请
// 参数:
// clientId: 客户端ID用于标识发起请求的客户端
// wxid: 待添加好友的微信ID
// remark: 对好友的备注信息
// roomWxid: 若是在某个群聊中发起的好友申请此参数为群聊的微信ID
// sourceType: 好友申请的来源类型群聊14
func (w *WxApi) AddFriend(request AddFriendRequest) (err error) {
_, err = w.internalCall(0, -1, MtAddFriendMsg, request, nil)
return err
}
type AcceptFriendRequest struct {
Encryptusername string `json:"encryptusername"`
Ticket string `json:"ticket"`
Scene int `json:"scene"`
}
type AcceptFriendResponse struct {
Data WxCommonData `json:"data"`
Type int `json:"type"`
}
// AcceptFriend 同意加好友申请
func (w *WxApi) AcceptFriend(request AcceptFriendRequest) *WxCommonData {
resp, err := w.internalCall(MtAcceptFriendMsg, 30, MtAcceptFriendMsg, request, nil)
if err != nil {
return &WxCommonData{Errcode: -1, Errmsg: err.Error()}
}
var rdata AcceptFriendResponse
err = json.Unmarshal([]byte(resp), rdata)
if err != nil {
return &WxCommonData{Errcode: -1, Errmsg: err.Error()}
}
return &rdata.Data
}
// DelFriend 删除好友
func (w *WxApi) DelFriend(wxid string) (err error) {
_, err = w.internalCall(0, -1, MtDelFriendMsg, map[string]interface{}{
"wxid": wxid,
}, nil)
return err
}
type SearchWxUserResponseData struct {
Account string `json:"account"`
Avatar string `json:"avatar"`
City string `json:"city"`
Country string `json:"country"`
Keyword string `json:"keyword"`
Nickname string `json:"nickname"`
Provice string `json:"provice"`
Search string `json:"search"`
Sex int `json:"sex"`
Signature string `json:"signature"`
SmallAvatar string `json:"small_avatar"`
Status int `json:"status"`
V1 string `json:"v1"`
V2 string `json:"v2"`
Wxid string `json:"wxid"`
}
type SearchWxUserResponse struct {
Data SearchWxUserResponseData `json:"data"`
Type int `json:"type"`
}
// SearchWxUser 搜索微信用户
func (w *WxApi) SearchWxUser(keyword string) (*SearchWxUserResponseData, error) {
resp, err := w.internalCall(MtSearchWxUserMsg, 20, MtSearchWxUserMsg, map[string]interface{}{"search": keyword}, nil)
if err != nil {
return nil, err
}
var rdata SearchWxUserResponse
err = json.Unmarshal([]byte(resp), &rdata)
if err != nil {
return nil, WxError{-1, err.Error()}
}
return &rdata.Data, nil
}
type AddSearchWxUserRequest struct {
V1 string `json:"v1"`
V2 string `json:"v2"`
Remark string `json:"remark"`
}
type AddSearchWxUserResponse struct {
Data WxCommonData `json:"data"`
Type int `json:"type"`
}
// AddSearchWxUser 添加搜索用户
func (w *WxApi) AddSearchWxUser(request AddSearchWxUserRequest) *WxCommonData {
resp, err := w.internalCall(MtAddSearchUserMsg, 30, MtAddSearchUserMsg, request, nil)
if err != nil {
return &WxCommonData{Errcode: -1, Errmsg: err.Error()}
}
var rdata AddSearchWxUserResponse
err = json.Unmarshal([]byte(resp), &rdata)
if err != nil {
return &WxCommonData{Errcode: -1, Errmsg: err.Error()}
}
return &rdata.Data
}
// CheckFriendStatus 检测好友状态(发送无痕清粉消息)
func (w *WxApi) CheckFriendStatus(wxid string) *WxCommonData {
resp, err := w.internalCall(MtZombieCheckMsg, 10, MtZombieCheckMsg, map[string]interface{}{"wxid": wxid}, nil)
if err != nil {
return &WxCommonData{Errcode: -1, Errmsg: err.Error()}
}
var rdata WxCommonResponse
err = json.Unmarshal([]byte(resp), &rdata)
if err != nil {
return &WxCommonData{Errcode: -1, Errmsg: err.Error()}
}
return &rdata.Data
}
type AutoAcceptAddFriendRequest struct {
Auto int `json:"auto"` // 1自动同意 0取消自动同意
}
// AutoAcceptAddFriend 自动同意好友申请
func (w *WxApi) AutoAcceptAddFriend(request AutoAcceptAddFriendRequest) (err error) {
_, err = w.internalCall(0, -1, MtAutoAcceptFriendMsg, request, nil)
return err
}
type AutoAcceptCardRequest struct {
Auto int `json:"auto"` // 1自动接收 0取消自动接收
}
// AutoAcceptCard 自动接收名片
func (w *WxApi) AutoAcceptCard(request AutoAcceptCardRequest) error {
_, err := w.internalCall(0, -1, MtAutoAcceptCardMsg, request, nil)
return err
}
type AutoAcceptWCPayRequest struct {
Auto int `json:"auto"` // 1自动接收 0取消自动接收
}
// AutoAcceptWCPay 自动接收好友转账
func (w *WxApi) AutoAcceptWCPay(request AutoAcceptWCPayRequest) error {
_, err := w.internalCall(0, -1, MtAutoAcceptWcpayMsg, request, nil)
return err
}
type GetPublicUserListResponse struct {
Data []GetPublicUserListResponseData `json:"data"`
Type int `json:"type"`
}
type GetPublicUserListResponseData struct {
Avatar string `json:"avatar"`
Nickname string `json:"nickname"`
Wxid string `json:"wxid"`
}
func (w *WxApi) GetPublicUserList() ([]GetPublicUserListResponseData, error) {
resp, err := w.internalCall(MtDataPublicsMsg, 30, MtDataPublicsMsg, nil, map[string]interface{}{})
if err != nil {
return nil, err
}
var rdata GetPublicUserListResponse
err = json.Unmarshal([]byte(resp), &rdata)
if err != nil {
return nil, WxError{-1, err.Error()}
}
return rdata.Data, nil
}