From 441c0c69467f6ffca49d52b78b24f851c6c8d08a Mon Sep 17 00:00:00 2001 From: linyuchen Date: Sat, 6 Apr 2024 23:57:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20@=E5=85=A8=E4=BD=93=E7=9A=84=E6=97=B6?= =?UTF-8?q?=E5=80=99=E5=88=A4=E6=96=AD=E5=89=A9=E4=BD=99=E6=AC=A1=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- manifest.json | 4 ++-- src/ntqqapi/api/group.ts | 11 +++++++++++ src/ntqqapi/ntcall.ts | 1 + src/onebot11/action/msg/SendMsg.ts | 16 +++++++++++++--- src/version.ts | 2 +- 5 files changed, 28 insertions(+), 6 deletions(-) diff --git a/manifest.json b/manifest.json index e17e135..6436ab2 100644 --- a/manifest.json +++ b/manifest.json @@ -1,10 +1,10 @@ { "manifest_version": 4, "type": "extension", - "name": "LLOneBot v3.20.7", + "name": "LLOneBot v3.21.0", "slug": "LLOneBot", "description": "使你的NTQQ支持OneBot11协议进行QQ机器人开发, 不支持商店在线更新", - "version": "3.20.7", + "version": "3.21.0", "icon": "./icon.jpg", "authors": [ { diff --git a/src/ntqqapi/api/group.ts b/src/ntqqapi/api/group.ts index 2e1bd2b..8e49db5 100644 --- a/src/ntqqapi/api/group.ts +++ b/src/ntqqapi/api/group.ts @@ -186,6 +186,17 @@ export class NTQQGroupApi{ }) } + static async getGroupAtAllRemainCount(groupCode: string){ + return await callNTQQApi({ + methodName: NTQQApiMethod.GROUP_AT_ALL_REMAIN_COUNT, + args: [ + { + groupCode + }, null + ] + }) + } + // 头衔不可用 static async setGroupTitle(groupQQ: string, uid: string, title: string) { return await callNTQQApi({ diff --git a/src/ntqqapi/ntcall.ts b/src/ntqqapi/ntcall.ts index 59b082d..df01ef5 100644 --- a/src/ntqqapi/ntcall.ts +++ b/src/ntqqapi/ntcall.ts @@ -50,6 +50,7 @@ export enum NTQQApiMethod { GET_GROUP_NOTICE = "nodeIKernelGroupService/getSingleScreenNotifies", HANDLE_GROUP_REQUEST = "nodeIKernelGroupService/operateSysNotify", QUIT_GROUP = "nodeIKernelGroupService/quitGroup", + GROUP_AT_ALL_REMAIN_COUNT = "nodeIKernelGroupService/getGroupRemainAtTimes", // READ_FRIEND_REQUEST = "nodeIKernelBuddyListener/onDoubtBuddyReqUnreadNumChange" HANDLE_FRIEND_REQUEST = "nodeIKernelBuddyService/approvalFriendRequest", KICK_MEMBER = "nodeIKernelGroupService/kickMember", diff --git a/src/onebot11/action/msg/SendMsg.ts b/src/onebot11/action/msg/SendMsg.ts index 68ef2a7..a421c33 100644 --- a/src/onebot11/action/msg/SendMsg.ts +++ b/src/onebot11/action/msg/SendMsg.ts @@ -31,6 +31,7 @@ import {log} from "../../../common/utils/log"; import {sleep} from "../../../common/utils/helper"; import {uri2local} from "../../../common/utils"; import {crychic} from "../../../ntqqapi/external/crychic"; +import {NTQQGroupApi} from "../../../ntqqapi/api"; function checkSendMessage(sendMsgList: OB11MessageData[]) { function checkUri(uri: string): boolean { @@ -113,9 +114,18 @@ export async function createSendElements(messageData: OB11MessageData[], target: atQQ = atQQ.toString() if (atQQ === "all") { // todo:查询剩余的at全体次数 - const self = await getGroupMember((target as Group)?.groupCode, selfInfo.uin); - const isAdmin = self.role === GroupMemberRole.admin || self.role === GroupMemberRole.owner; - if(!isAdmin) { + const groupCode = (target as Group)?.groupCode; + let remainAtAllCount = 1 + let isAdmin: boolean = true; + if (groupCode) { + try { + remainAtAllCount = (await NTQQGroupApi.getGroupAtAllRemainCount(groupCode)).atInfo.RemainAtAllCountForUin + log(`群${groupCode}剩余at全体次数`, remainAtAllCount); + const self = await getGroupMember((target as Group)?.groupCode, selfInfo.uin); + isAdmin = self.role === GroupMemberRole.admin || self.role === GroupMemberRole.owner; + } catch (e) {} + } + if(isAdmin && remainAtAllCount > 0) { sendElements.push(SendMsgElementConstructor.at(atQQ, atQQ, AtType.atAll, "全体成员")) } } else { diff --git a/src/version.ts b/src/version.ts index d9f7300..9d47053 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const version = "3.20.7" \ No newline at end of file +export const version = "3.21.0" \ No newline at end of file