FetchEssenceMessage 获取精华消息
(groupUin uint32)
| 1015 | |
| 1016 | // FetchEssenceMessage 获取精华消息 |
| 1017 | func (c *QQClient) FetchEssenceMessage(groupUin uint32) ([]*message2.GroupEssenceMessage, error) { |
| 1018 | var essenceMsg []*message2.GroupEssenceMessage |
| 1019 | page := 0 |
| 1020 | bkn, err := c.GetCsrfToken() |
| 1021 | if err != nil { |
| 1022 | return essenceMsg, err |
| 1023 | } |
| 1024 | grpInfo := c.GetCachedGroupInfo(groupUin) |
| 1025 | for { |
| 1026 | reqURL := fmt.Sprintf("https://qun.qq.com/cgi-bin/group_digest/digest_list?random=7800&X-CROSS-ORIGIN=fetch&group_code=%d&page_start=%d&page_limit=20&bkn=%d", groupUin, page, bkn) |
| 1027 | req, err := http.NewRequest(http.MethodGet, reqURL, nil) |
| 1028 | if err != nil { |
| 1029 | return essenceMsg, err |
| 1030 | } |
| 1031 | resp, err := c.SendRequestWithCookie(req) |
| 1032 | if err != nil { |
| 1033 | return essenceMsg, err |
| 1034 | } |
| 1035 | respData, err := io.ReadAll(resp.Body) |
| 1036 | if err != nil { |
| 1037 | return nil, err |
| 1038 | } |
| 1039 | _ = resp.Body.Close() |
| 1040 | if resp.StatusCode != http.StatusOK { |
| 1041 | return essenceMsg, fmt.Errorf("error resp code %d", resp.StatusCode) |
| 1042 | } |
| 1043 | respJSON := gjson.ParseBytes(respData) |
| 1044 | if respJSON.Get("retcode").Int() != 0 { |
| 1045 | return essenceMsg, fmt.Errorf("error code %d, %s", respJSON.Get("retcode").Int(), respJSON.Get("retmsg").String()) |
| 1046 | } |
| 1047 | for _, v := range respJSON.Get("data").Get("msg_list").Array() { |
| 1048 | var elements []message2.IMessageElement |
| 1049 | for _, e := range v.Get("msg_content").Array() { |
| 1050 | switch e.Get("msg_type").Int() { |
| 1051 | case 1: |
| 1052 | elements = append(elements, &message2.TextElement{Content: e.Get("text").String()}) |
| 1053 | case 2: |
| 1054 | elements = append(elements, &message2.FaceElement{FaceID: uint32(e.Get("face_index").Int())}) |
| 1055 | case 3: |
| 1056 | elements = append(elements, &message2.ImageElement{URL: e.Get("image_url").String()}) |
| 1057 | case 4: |
| 1058 | elements = append(elements, &message2.FileElement{ |
| 1059 | FileID: e.Get("file_id").String(), |
| 1060 | FileURL: e.Get("file_thumbnail_url").String(), |
| 1061 | }) |
| 1062 | } |
| 1063 | } |
| 1064 | senderUin := uint32(v.Get("sender_uin").Int()) |
| 1065 | senderInfo := c.GetCachedMemberInfo(senderUin, groupUin) |
| 1066 | essenceMsg = append(essenceMsg, &message2.GroupEssenceMessage{ |
| 1067 | OperatorUin: uint32(v.Get("add_digest_uin").Int()), |
| 1068 | OperatorUID: c.GetUID(uint32(v.Get("add_digest_uin").Int())), |
| 1069 | OperatorTime: uint64(v.Get("add_digest_time").Int()), |
| 1070 | CanRemove: v.Get("can_be_removed").Bool(), |
| 1071 | Message: &message2.GroupMessage{ |
| 1072 | ID: uint32(v.Get("msg_seq").Int()), |
| 1073 | InternalID: uint32(v.Get("msg_random").Int()), |
| 1074 | GroupUin: grpInfo.GroupUin, |
nothing calls this directly
no test coverage detected