contact.go 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. package hook
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/gorilla/websocket"
  6. "strings"
  7. )
  8. // 获取标签信息
  9. func (h *Hook) GetContactLabelList() (result GetContactLabelListReap, err error) {
  10. resp, err := h.Client.R().SetSuccessResult(&result).Post("http://" + h.ServerIp + ":" + h.WxPort + "/GetContactLabelList")
  11. if err != nil {
  12. return
  13. }
  14. if !resp.IsSuccessState() {
  15. err = fmt.Errorf("GetContactLabelList failed with status code %d", resp.StatusCode)
  16. return
  17. }
  18. return
  19. }
  20. // 获取好友和群信息
  21. func (h *Hook) GetFriendAndChatRoomList(typeStr string) (result GetFriendAndChatRoomListReap, err error) {
  22. resp, err := h.Client.R().SetBody(&GetFriendAndChatRoomListReq{
  23. Type: typeStr,
  24. }).SetSuccessResult(&result).Post("http://" + h.ServerIp + ":" + h.WxPort + "/GetFriendAndChatRoomList")
  25. if err != nil {
  26. return
  27. }
  28. if !resp.IsSuccessState() {
  29. err = fmt.Errorf("GetFriendAndChatRoomList failed with status code %d", resp.StatusCode)
  30. return
  31. }
  32. return
  33. }
  34. // 批量获取联系人简明信息(每次100个)
  35. func (h *Hook) BatchGetContactBriefInfo(wxids []string) (result BatchGetContactBriefInfoReap, err error) {
  36. wxidList := strings.Join(wxids, ",")
  37. resp, err := h.Client.R().SetBody(&BatchGetContactBriefInfoReq{
  38. WxidList: wxidList,
  39. }).SetSuccessResult(&result).Post("http://" + h.ServerIp + ":" + h.WxPort + "/BatchGetContactBriefInfo")
  40. if err != nil {
  41. return
  42. }
  43. if !resp.IsSuccessState() {
  44. err = fmt.Errorf("BatchGetChatRoomMemberWxid failed with status code %d", resp.StatusCode)
  45. return
  46. }
  47. return
  48. }
  49. // 添加新的好友
  50. func (h *Hook) AddNewFriend(v3_wxid string, v4 string, desc string, addType string, role string) (result AddNewFriendReap, err error) {
  51. resp, err := h.Client.R().SetBody(&AddNewFriendReq{
  52. V3Wxid: v3_wxid,
  53. V4: v4,
  54. Desc: desc,
  55. AddType: addType,
  56. Role: role,
  57. }).SetSuccessResult(&result).Post("http://" + h.ServerIp + ":" + h.WxPort + "/AddNewFriend")
  58. if err != nil {
  59. return
  60. }
  61. if !resp.IsSuccessState() {
  62. err = fmt.Errorf("AddNewFriend failed with status code %d", resp.StatusCode)
  63. return
  64. }
  65. return
  66. }
  67. func (h *Hook) RequestChatRoomInfo(ChatRoomId, wxWxid string) error {
  68. conn, err := h.connWorkPhone()
  69. if err != nil {
  70. err = fmt.Errorf("RequestChatRoomInfo failed")
  71. return err
  72. }
  73. defer func(conn *websocket.Conn) {
  74. err = conn.Close()
  75. if err != nil {
  76. err = fmt.Errorf("RequestChatRoomInfo failed")
  77. }
  78. }(conn)
  79. message := map[string]interface{}{
  80. "MsgType": "RequestChatRoomInfoTask",
  81. "Content": map[string]interface{}{
  82. "WeChatId": wxWxid,
  83. "Flag": 1,
  84. "ChatRoomId": ChatRoomId,
  85. },
  86. }
  87. transportMessageJSON, err := json.Marshal(message)
  88. if err != nil {
  89. return err
  90. }
  91. // 发送 JSON 消息
  92. err = conn.WriteMessage(websocket.TextMessage, transportMessageJSON)
  93. if err != nil {
  94. return fmt.Errorf("failed to send message: %v", err)
  95. }
  96. return nil
  97. }
  98. func (h *Hook) TriggerChatroomPush(wxWxid string) error {
  99. conn, err := h.connWorkPhone()
  100. if err != nil {
  101. err = fmt.Errorf("TriggerChatroomPush failed")
  102. return err
  103. }
  104. defer func(conn *websocket.Conn) {
  105. err = conn.Close()
  106. if err != nil {
  107. err = fmt.Errorf("TriggerChatroomPush failed")
  108. }
  109. }(conn)
  110. message := map[string]interface{}{
  111. "MsgType": "TriggerChatroomPushTask",
  112. "Content": map[string]interface{}{
  113. "WeChatId": wxWxid,
  114. "Flag": 1,
  115. },
  116. }
  117. transportMessageJSON, err := json.Marshal(message)
  118. if err != nil {
  119. return err
  120. }
  121. // 发送 JSON 消息
  122. err = conn.WriteMessage(websocket.TextMessage, transportMessageJSON)
  123. if err != nil {
  124. return fmt.Errorf("failed to send message: %v", err)
  125. }
  126. return nil
  127. }
  128. func (h *Hook) AddFriendInChatRoom(ChatRoomId, wxWxid, friendId, desc string) error {
  129. conn, err := h.connWorkPhone()
  130. if err != nil {
  131. err = fmt.Errorf("AddFriendInChatRoom failed")
  132. return err
  133. }
  134. defer func(conn *websocket.Conn) {
  135. err = conn.Close()
  136. if err != nil {
  137. err = fmt.Errorf("AddFriendInChatRoom failed")
  138. }
  139. }(conn)
  140. message := map[string]interface{}{
  141. "MsgType": "AddFriendInChatRoomTask",
  142. "Content": map[string]interface{}{
  143. "WeChatId": wxWxid,
  144. "ChatroomId": ChatRoomId,
  145. "FriendId": friendId,
  146. "Message": desc,
  147. },
  148. }
  149. transportMessageJSON, err := json.Marshal(message)
  150. if err != nil {
  151. return err
  152. }
  153. // 发送 JSON 消息
  154. err = conn.WriteMessage(websocket.TextMessage, transportMessageJSON)
  155. if err != nil {
  156. return fmt.Errorf("failed to send message: %v", err)
  157. }
  158. return nil
  159. }