From 4e339ff6b385aafa9ea9f54a888d7cf08c2fa7fb Mon Sep 17 00:00:00 2001 From: Yukari316 Date: Tue, 3 Jan 2023 20:15:50 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8F=91=E9=80=81=E7=BE=A4=E5=85=AC?= =?UTF-8?q?=E5=91=8A=E8=BF=94=E5=9B=9E=E5=85=AC=E5=91=8Aid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/http_api.go | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/client/http_api.go b/client/http_api.go index cc2ec183..3e095167 100644 --- a/client/http_api.go +++ b/client/http_api.go @@ -161,6 +161,10 @@ type noticeImage struct { ID string `json:"id"` } +type noticeSendResp struct { + NoticeId string `json:"new_fid"` +} + func (c *QQClient) GetGroupNotice(groupCode int64) (l []*GroupNoticeMessage, err error) { v := url.Values{} v.Set("bkn", strconv.Itoa(c.getCSRFToken())) @@ -265,27 +269,37 @@ func (c *QQClient) uploadGroupNoticePic(img []byte) (*noticeImage, error) { } // AddGroupNoticeSimple 发群公告 -func (c *QQClient) AddGroupNoticeSimple(groupCode int64, text string) error { +func (c *QQClient) AddGroupNoticeSimple(groupCode int64, text string) (noticeId string, err error) { body := fmt.Sprintf(`qid=%v&bkn=%v&text=%v&pinned=0&type=1&settings={"is_show_edit_card":0,"tip_window_type":1,"confirm_required":1}`, groupCode, c.getCSRFToken(), url.QueryEscape(text)) - _, err := utils.HttpPostBytesWithCookie("https://web.qun.qq.com/cgi-bin/announce/add_qun_notice?bkn="+fmt.Sprint(c.getCSRFToken()), []byte(body), c.getCookiesWithDomain("qun.qq.com")) + resp, err := utils.HttpPostBytesWithCookie("https://web.qun.qq.com/cgi-bin/announce/add_qun_notice?bkn="+fmt.Sprint(c.getCSRFToken()), []byte(body), c.getCookiesWithDomain("qun.qq.com")) if err != nil { - return errors.Wrap(err, "request error") + return "", errors.Wrap(err, "request error") } - return nil + var res noticeSendResp + err = json.Unmarshal(resp, &res) + if err != nil { + return "", errors.Wrap(err, "json unmarshal error") + } + return res.NoticeId, nil } // AddGroupNoticeWithPic 发群公告带图片 -func (c *QQClient) AddGroupNoticeWithPic(groupCode int64, text string, pic []byte) error { +func (c *QQClient) AddGroupNoticeWithPic(groupCode int64, text string, pic []byte) (noticeId string, err error) { img, err := c.uploadGroupNoticePic(pic) if err != nil { - return err + return "", err } body := fmt.Sprintf(`qid=%v&bkn=%v&text=%v&pinned=0&type=1&settings={"is_show_edit_card":0,"tip_window_type":1,"confirm_required":1}&pic=%v&imgWidth=%v&imgHeight=%v`, groupCode, c.getCSRFToken(), url.QueryEscape(text), img.ID, img.Width, img.Height) - _, err = utils.HttpPostBytesWithCookie("https://web.qun.qq.com/cgi-bin/announce/add_qun_notice?bkn="+fmt.Sprint(c.getCSRFToken()), []byte(body), c.getCookiesWithDomain("qun.qq.com")) + resp, err := utils.HttpPostBytesWithCookie("https://web.qun.qq.com/cgi-bin/announce/add_qun_notice?bkn="+fmt.Sprint(c.getCSRFToken()), []byte(body), c.getCookiesWithDomain("qun.qq.com")) if err != nil { - return errors.Wrap(err, "request error") + return "", errors.Wrap(err, "request error") } - return nil + var res noticeSendResp + err = json.Unmarshal(resp, &res) + if err != nil { + return "", errors.Wrap(err, "json unmarshal error") + } + return res.NoticeId, nil } func (c *QQClient) DelGroupNotice(groupCode int64, fid string) error {