diff --git a/client/http_api.go b/client/http_api.go index 98a18afb..cc2ec183 100644 --- a/client/http_api.go +++ b/client/http_api.go @@ -119,17 +119,22 @@ func (c *QQClient) GetTts(text string) ([]byte, error) { /* -------- GroupNotice -------- */ type groupNoticeRsp struct { - Feeds []*struct { - SenderId uint32 `json:"u"` - PublishTime uint64 `json:"pubt"` - Message struct { - Text string `json:"text"` - Images []noticeImage `json:"pics"` - } `json:"msg"` - } `json:"feeds"` + Feeds []*GroupNoticeFeed `json:"feeds"` + Inst []*GroupNoticeFeed `json:"inst"` +} + +type GroupNoticeFeed struct { + NoticeId string `json:"fid"` + SenderId uint32 `json:"u"` + PublishTime uint64 `json:"pubt"` + Message struct { + Text string `json:"text"` + Images []noticeImage `json:"pics"` + } `json:"msg"` } type GroupNoticeMessage struct { + NoticeId string `json:"notice_id"` SenderId uint32 `json:"sender_id"` PublishTime uint64 `json:"publish_time"` Message struct { @@ -187,9 +192,8 @@ func (c *QQClient) GetGroupNotice(groupCode int64) (l []*GroupNoticeMessage, err } func (c *QQClient) parseGroupNoticeJson(s *groupNoticeRsp) []*GroupNoticeMessage { - o := make([]*GroupNoticeMessage, 0, len(s.Feeds)) - for _, v := range s.Feeds { - + o := make([]*GroupNoticeMessage, 0, len(s.Feeds)+len(s.Inst)) + parse := func(v *GroupNoticeFeed) { ims := make([]GroupNoticeImage, 0, len(v.Message.Images)) for i := 0; i < len(v.Message.Images); i++ { ims = append(ims, GroupNoticeImage{ @@ -200,6 +204,7 @@ func (c *QQClient) parseGroupNoticeJson(s *groupNoticeRsp) []*GroupNoticeMessage } o = append(o, &GroupNoticeMessage{ + NoticeId: v.NoticeId, SenderId: v.SenderId, PublishTime: v.PublishTime, Message: struct { @@ -211,7 +216,12 @@ func (c *QQClient) parseGroupNoticeJson(s *groupNoticeRsp) []*GroupNoticeMessage }, }) } - + for _, v := range s.Feeds { + parse(v) + } + for _, v := range s.Inst { + parse(v) + } return o } @@ -277,3 +287,12 @@ func (c *QQClient) AddGroupNoticeWithPic(groupCode int64, text string, pic []byt } return nil } + +func (c *QQClient) DelGroupNotice(groupCode int64, fid string) error { + body := fmt.Sprintf(`fid=%s&qid=%v&bkn=%v&ft=23&op=1`, fid, groupCode, c.getCSRFToken()) + _, err := utils.HttpPostBytesWithCookie("https://web.qun.qq.com/cgi-bin/announce/del_feed", []byte(body), c.getCookiesWithDomain("qun.qq.com")) + if err != nil { + return errors.Wrap(err, "request error") + } + return nil +}