tt/core/callapi_contact.go
2024-05-28 08:47:31 +08:00

433 lines
14 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}