From 98ef642cd1282b899901c70a8817a194481cbd2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=97=B6=E7=91=BE?= <74231782+sj817@users.noreply.github.com> Date: Sun, 12 Oct 2025 21:13:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8F=96=E6=B6=88=E7=BE=A4=E7=B2=BE?= =?UTF-8?q?=E5=8D=8E=E6=8E=A5=E5=8F=A3=E6=94=AF=E6=8C=81=E4=BC=A0=E9=80=92?= =?UTF-8?q?=E5=8E=9F=E5=A7=8B=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 1. onebot v11标准: 传递message_id - 2. 通过官方http接口获取到的group_id、msg_random、msg_seq 二者任选其一 --- src/onebot/action/group/DelEssenceMsg.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/onebot/action/group/DelEssenceMsg.ts b/src/onebot/action/group/DelEssenceMsg.ts index ccb20a58..1fdfbc67 100644 --- a/src/onebot/action/group/DelEssenceMsg.ts +++ b/src/onebot/action/group/DelEssenceMsg.ts @@ -4,7 +4,10 @@ import { MessageUnique } from '@/common/message-unique'; import { Static, Type } from '@sinclair/typebox'; const SchemaData = Type.Object({ - message_id: Type.Union([Type.Number(), Type.String()]), + message_id: Type.Optional(Type.Union([Type.Number(), Type.String()])), + msg_seq: Type.Optional(Type.String()), + msg_random: Type.Optional(Type.String()), + group_id: Type.Optional(Type.String()), }); type Payload = Static; @@ -13,6 +16,20 @@ export default class DelEssenceMsg extends OneBotAction { override payloadSchema = SchemaData; async _handle(payload: Payload): Promise { + // 如果直接提供了 msg_seq, msg_random, group_id,优先使用 + if (payload.msg_seq && payload.msg_random && payload.group_id) { + return await this.core.apis.GroupApi.removeGroupEssenceBySeq( + payload.group_id, + payload.msg_random, + payload.msg_seq, + ); + } + + // 如果没有 message_id,则必须提供 msg_seq, msg_random, group_id + if (!payload.message_id) { + throw new Error('必须提供 message_id 或者同时提供 msg_seq, msg_random, group_id'); + } + const msg = MessageUnique.getMsgIdAndPeerByShortId(+payload.message_id); if (!msg) { const data = this.core.apis.GroupApi.essenceLRU.getValue(+payload.message_id);