From 8ff469974c81522de1aad9b2c3261bfac2b32d01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 4 Sep 2024 13:19:02 +0800 Subject: [PATCH] build: test2 --- src/core/apis/webapi.ts | 49 ++++++++++++++++--- .../action/go-cqhttp/SendGroupNotice.ts | 30 ++++++++++-- 2 files changed, 66 insertions(+), 13 deletions(-) diff --git a/src/core/apis/webapi.ts b/src/core/apis/webapi.ts index f7af0c91..9a0695ec 100644 --- a/src/core/apis/webapi.ts +++ b/src/core/apis/webapi.ts @@ -131,20 +131,53 @@ export class NTQQWebApi { // return await res.json(); // } - async setGroupNotice(GroupCode: string, Content: string) { + async setGroupNotice( + GroupCode: string, + Content: string, + pinned: number = 0, + type: number = 1, + is_show_edit_card: number = 1, + tip_window_type: number = 1, + confirm_required: number = 1, + picId: string = '', + imgWidth: number = 540, + imgHeight: number = 300, + ) { + interface SetNoticeRetSuccess { + ec: number; + em: string; + id: number; + ltsm: number; + new_fid: string; + read_only: number; + role: number; + srv_code: number; + } + const cookieObject = await this.core.apis.UserApi.getCookies('qun.qq.com'); - let ret: any = undefined; + try { - ret = await RequestUtil.HttpGetJson( - `https://web.qun.qq.com/cgi-bin/announce/add_qun_notice${new URLSearchParams({ + let settings = JSON.stringify({ + is_show_edit_card: is_show_edit_card, + tip_window_type: tip_window_type, + confirm_required: confirm_required + }); + const externalParam = { + pic: picId, + imgWidth: imgWidth.toString(), + imgHeight: imgHeight.toString(), + }; + let ret: SetNoticeRetSuccess = await RequestUtil.HttpGetJson( + `https://web.qun.qq.com/cgi-bin/announce/add_qun_notice?${new URLSearchParams({ bkn: this.getBknFromCookie(cookieObject), qid: GroupCode, text: Content, - pinned: '0', - type: '1', - settings: '{"is_show_edit_card":1,"tip_window_type":1,"confirm_required":1}', + pinned: pinned.toString(), + type: type.toString(), + settings: settings, + ...(picId === '' ? {} : externalParam) }).toString()}`, - 'GET', + 'POST', '', { 'Cookie': this.cookieToString(cookieObject) } ); diff --git a/src/onebot/action/go-cqhttp/SendGroupNotice.ts b/src/onebot/action/go-cqhttp/SendGroupNotice.ts index 63429fd6..74833007 100644 --- a/src/onebot/action/go-cqhttp/SendGroupNotice.ts +++ b/src/onebot/action/go-cqhttp/SendGroupNotice.ts @@ -11,7 +11,10 @@ const SchemaData = { content: { type: 'string' }, image: { type: 'string' }, pinned: { type: ['number', 'string'] }, + type: { type: ['number', 'string'] }, confirm_required: { type: ['number', 'string'] }, + is_show_edit_card: { type: ['number', 'string'] }, + tip_window_type: { type: ['number', 'string'] }, }, required: ['group_id', 'content'], } as const satisfies JSONSchema; @@ -22,6 +25,7 @@ export class SendGroupNotice extends BaseAction { actionName = ActionName.GoCQHTTP_SendGroupNotice; async _handle(payload: Payload) { + let UploadImage: { id: string, width: number, height: number } | undefined = undefined; if (payload.image) { //公告图逻辑 @@ -47,12 +51,28 @@ export class SendGroupNotice extends BaseAction { } UploadImage = ImageUploadResult.picInfo; } - const noticePinned = +(payload.pinned ?? 0); - const noticeConfirmRequired = +(payload.confirm_required ?? 0); - const publishGroupBulletinResult = await this.core.apis.GroupApi.publishGroupBulletin(payload.group_id.toString(), payload.content, UploadImage, noticePinned, noticeConfirmRequired); - if (publishGroupBulletinResult.result != 0) { - throw `设置群公告失败,错误信息:${publishGroupBulletinResult.errMsg}`; + const noticeType = +(payload.type ?? 1); + const noticePinned = +(payload.pinned ?? 0); + + const noticeShowEditCard = +(payload.is_show_edit_card ?? 0); + const noticeTipWindowType = +(payload.tip_window_type ?? 0); + const noticeConfirmRequired = +(payload.confirm_required ?? 1); + //const publishGroupBulletinResult = await this.core.apis.GroupApi.publishGroupBulletin(payload.group_id.toString(), payload.content, UploadImage, noticePinned, noticeConfirmRequired); + const publishGroupBulletinResult = await this.core.apis.WebApi.setGroupNotice( + payload.group_id.toString(), + payload.content, + noticePinned, + noticeType, + noticeShowEditCard, + noticeTipWindowType, + noticeConfirmRequired, + UploadImage?.id, + UploadImage?.width, + UploadImage?.height + ); + if (!publishGroupBulletinResult || publishGroupBulletinResult.ec != 0) { + throw `设置群公告失败,错误信息:${publishGroupBulletinResult?.em}`; } return null; }