package hook import ( "encoding/json" "fmt" "github.com/gorilla/websocket" "strings" ) // 获取标签信息 func (h *Hook) GetContactLabelList() (result GetContactLabelListReap, err error) { resp, err := h.Client.R().SetSuccessResult(&result).Post("http://" + h.ServerIp + ":" + h.WxPort + "/GetContactLabelList") if err != nil { return } if !resp.IsSuccessState() { err = fmt.Errorf("GetContactLabelList failed with status code %d", resp.StatusCode) return } return } // 获取好友和群信息 func (h *Hook) GetFriendAndChatRoomList(typeStr string) (result GetFriendAndChatRoomListReap, err error) { resp, err := h.Client.R().SetBody(&GetFriendAndChatRoomListReq{ Type: typeStr, }).SetSuccessResult(&result).Post("http://" + h.ServerIp + ":" + h.WxPort + "/GetFriendAndChatRoomList") if err != nil { return } if !resp.IsSuccessState() { err = fmt.Errorf("GetFriendAndChatRoomList failed with status code %d", resp.StatusCode) return } return } // 批量获取联系人简明信息(每次100个) func (h *Hook) BatchGetContactBriefInfo(wxids []string) (result BatchGetContactBriefInfoReap, err error) { wxidList := strings.Join(wxids, ",") resp, err := h.Client.R().SetBody(&BatchGetContactBriefInfoReq{ WxidList: wxidList, }).SetSuccessResult(&result).Post("http://" + h.ServerIp + ":" + h.WxPort + "/BatchGetContactBriefInfo") if err != nil { return } if !resp.IsSuccessState() { err = fmt.Errorf("BatchGetChatRoomMemberWxid failed with status code %d", resp.StatusCode) return } return } // 添加新的好友 func (h *Hook) AddNewFriend(v3_wxid string, v4 string, desc string, addType string, role string) (result AddNewFriendReap, err error) { resp, err := h.Client.R().SetBody(&AddNewFriendReq{ V3Wxid: v3_wxid, V4: v4, Desc: desc, AddType: addType, Role: role, }).SetSuccessResult(&result).Post("http://" + h.ServerIp + ":" + h.WxPort + "/AddNewFriend") if err != nil { return } if !resp.IsSuccessState() { err = fmt.Errorf("AddNewFriend failed with status code %d", resp.StatusCode) return } return } func (h *Hook) RequestChatRoomInfo(ChatRoomId, wxWxid string) error { conn, err := h.connWorkPhone() if err != nil { err = fmt.Errorf("RequestChatRoomInfo failed") return err } defer func(conn *websocket.Conn) { err = conn.Close() if err != nil { err = fmt.Errorf("RequestChatRoomInfo failed") } }(conn) message := map[string]interface{}{ "MsgType": "RequestChatRoomInfoTask", "Content": map[string]interface{}{ "WeChatId": wxWxid, "Flag": 1, "ChatRoomId": ChatRoomId, }, } transportMessageJSON, err := json.Marshal(message) if err != nil { return err } // 发送 JSON 消息 err = conn.WriteMessage(websocket.TextMessage, transportMessageJSON) if err != nil { return fmt.Errorf("failed to send message: %v", err) } return nil } func (h *Hook) TriggerChatroomPush(wxWxid string) error { conn, err := h.connWorkPhone() if err != nil { err = fmt.Errorf("TriggerChatroomPush failed") return err } defer func(conn *websocket.Conn) { err = conn.Close() if err != nil { err = fmt.Errorf("TriggerChatroomPush failed") } }(conn) message := map[string]interface{}{ "MsgType": "TriggerChatroomPushTask", "Content": map[string]interface{}{ "WeChatId": wxWxid, "Flag": 1, }, } transportMessageJSON, err := json.Marshal(message) if err != nil { return err } // 发送 JSON 消息 err = conn.WriteMessage(websocket.TextMessage, transportMessageJSON) if err != nil { return fmt.Errorf("failed to send message: %v", err) } return nil } func (h *Hook) AddFriendInChatRoom(ChatRoomId, wxWxid, friendId, desc string) error { conn, err := h.connWorkPhone() if err != nil { err = fmt.Errorf("AddFriendInChatRoom failed") return err } defer func(conn *websocket.Conn) { err = conn.Close() if err != nil { err = fmt.Errorf("AddFriendInChatRoom failed") } }(conn) message := map[string]interface{}{ "MsgType": "AddFriendInChatRoomTask", "Content": map[string]interface{}{ "WeChatId": wxWxid, "ChatroomId": ChatRoomId, "FriendId": friendId, "Message": desc, }, } transportMessageJSON, err := json.Marshal(message) if err != nil { return err } // 发送 JSON 消息 err = conn.WriteMessage(websocket.TextMessage, transportMessageJSON) if err != nil { return fmt.Errorf("failed to send message: %v", err) } return nil }