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 }