diff --git a/src/core/packet/highway/frame.ts b/src/core/packet/highway/frame.ts index 3c3f4039..e0f87c4b 100644 --- a/src/core/packet/highway/frame.ts +++ b/src/core/packet/highway/frame.ts @@ -1,4 +1,4 @@ -import * as assert from "node:assert"; +import assert from "node:assert"; export class Frame{ static pack(head: Buffer, body: Buffer): Buffer { diff --git a/src/core/packet/msg/element.ts b/src/core/packet/msg/element.ts index 91602a87..f66b6609 100644 --- a/src/core/packet/msg/element.ts +++ b/src/core/packet/msg/element.ts @@ -1,4 +1,4 @@ -import * as assert from "node:assert"; +import assert from "node:assert"; import * as zlib from "node:zlib"; import * as crypto from "node:crypto"; import {NapProtoEncodeStructType, NapProtoMsg} from "@/core/packet/proto/NapProto"; @@ -18,6 +18,7 @@ import { SendFaceElement, SendFileElement, SendMarkdownElement, + SendMarketFaceElement, SendMessageElement, SendPicElement, SendPttElement, @@ -246,6 +247,44 @@ export class PacketMsgFaceElement extends IPacketMsgElement { } } +export class PacketMarkFaceElement extends IPacketMsgElement { + emojiName: string; + emojiId: string; + emojiPackageId: number; + emojiKey: string; + + constructor(element: SendMarketFaceElement) { + super(element); + this.emojiName = element.marketFaceElement.faceName; + this.emojiId = element.marketFaceElement.emojiId; + this.emojiPackageId = element.marketFaceElement.emojiPackageId; + this.emojiKey = element.marketFaceElement.key; + } + + buildElement(): NapProtoEncodeStructType[] { + return [{ + marketFace: { + faceName: this.emojiName, + itemType: 6, + faceInfo: 1, + faceId: Buffer.from(this.emojiId, 'hex'), + tabId: this.emojiPackageId, + subType: 3, + key: this.emojiKey, + imageWidth: 300, + imageHeight: 300, + pbReserve: { + field8: 1 + } + } + }] + } + + toPreview(): string { + return this.emojiName; + } +} + export class PacketMsgVideoElement extends IPacketMsgElement { constructor(element: SendVideoElement) { super(element); diff --git a/src/core/packet/proto/message/element.ts b/src/core/packet/proto/message/element.ts index 4aaa3d1c..4290870a 100644 --- a/src/core/packet/proto/message/element.ts +++ b/src/core/packet/proto/message/element.ts @@ -1,5 +1,5 @@ -import { ScalarType } from "@protobuf-ts/runtime"; -import { ProtoField } from "../NapProto"; +import {ScalarType} from "@protobuf-ts/runtime"; +import {ProtoField} from "../NapProto"; export const Elem = { text: ProtoField(1, () => Text, true), @@ -101,21 +101,25 @@ export const TransElem = { }; export const MarketFace = { - faceName: ProtoField(1, ScalarType.BYTES), + faceName: ProtoField(1, ScalarType.STRING), itemType: ProtoField(2, ScalarType.INT32), faceInfo: ProtoField(3, ScalarType.INT32), faceId: ProtoField(4, ScalarType.BYTES), tabId: ProtoField(5, ScalarType.INT32), subType: ProtoField(6, ScalarType.INT32), - key: ProtoField(7, ScalarType.BYTES), + key: ProtoField(7, ScalarType.STRING), param: ProtoField(8, ScalarType.BYTES), mediaType: ProtoField(9, ScalarType.INT32), imageWidth: ProtoField(10, ScalarType.INT32), imageHeight: ProtoField(11, ScalarType.INT32), mobileparam: ProtoField(12, ScalarType.BYTES), - pbReserve: ProtoField(13, ScalarType.BYTES), + pbReserve: ProtoField(13, () => MarketFacePbRes), }; +export const MarketFacePbRes = { + field8: ProtoField(8, ScalarType.INT32) +} + export const CustomFace = { guid: ProtoField(1, ScalarType.BYTES), filePath: ProtoField(2, ScalarType.STRING),