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);