diff --git a/src/ntqqapi/constructor.ts b/src/ntqqapi/constructor.ts index 0e03dd0..7576232 100644 --- a/src/ntqqapi/constructor.ts +++ b/src/ntqqapi/constructor.ts @@ -7,6 +7,7 @@ import { SendArkElement, SendFaceElement, SendFileElement, + SendMarketFaceElement, SendPicElement, SendPttElement, SendReplyElement, @@ -265,6 +266,17 @@ export class SendMsgElementConstructor { } } + static mface(emojiPackageId: number, emojiId: string, key: string): SendMarketFaceElement { + return { + elementType: ElementType.MFACE, + marketFaceElement: { + emojiPackageId, + emojiId, + key, + }, + } + } + static dice(resultId: number | null): SendFaceElement { // 实际测试并不能控制结果 diff --git a/src/ntqqapi/types/msg.ts b/src/ntqqapi/types/msg.ts index b02dd27..4d88c52 100644 --- a/src/ntqqapi/types/msg.ts +++ b/src/ntqqapi/types/msg.ts @@ -10,6 +10,7 @@ export enum ElementType { FACE = 6, REPLY = 7, ARK = 10, + MFACE = 11, } export interface SendTextElement { @@ -91,6 +92,11 @@ export interface SendFaceElement { faceElement: FaceElement } +export interface SendMarketFaceElement { + elementType: ElementType.MFACE + marketFaceElement: MarketFaceElement +} + export interface FileElement { fileMd5?: '' fileName: string @@ -132,6 +138,7 @@ export type SendMessageElement = | SendPicElement | SendReplyElement | SendFaceElement + | SendMarketFaceElement | SendFileElement | SendVideoElement | SendArkElement @@ -244,42 +251,10 @@ export interface FaceElement { } export interface MarketFaceElement { - itemType: 6 - faceInfo: 1 - emojiPackageId: 203875 - subType: 3 - mediaType: 0 - imageWidth: 200 - imageHeight: 200 + emojiPackageId: number faceName: string - emojiId: '094d53bd1c9ac5d35d04b08e8a6c992c' - key: 'a8b1dd0aebc8d910' - param: null - mobileParam: null - sourceType: null - startTime: null - endTime: null - emojiType: 1 - hasIpProduct: null - voiceItemHeightArr: null - sourceName: null - sourceJumpUrl: null - sourceTypeName: null - backColor: null - volumeColor: null - staticFacePath: 'E:\\SystemDocuments\\QQ\\721011692\\nt_qq\\nt_data\\Emoji\\marketface\\203875\\094d53bd1c9ac5d35d04b08e8a6c992c_aio.png' - dynamicFacePath: 'E:\\SystemDocuments\\QQ\\721011692\\nt_qq\\nt_data\\Emoji\\marketface\\203875\\094d53bd1c9ac5d35d04b08e8a6c992c' - supportSize: [ - { - width: 300 - height: 300 - }, - { - width: 200 - height: 200 - }, - ] - apngSupportSize: null + emojiId: string + key: string } export interface VideoElement { diff --git a/src/onebot11/action/msg/SendMsg.ts b/src/onebot11/action/msg/SendMsg.ts index c516b08..4f9784c 100644 --- a/src/onebot11/action/msg/SendMsg.ts +++ b/src/onebot11/action/msg/SendMsg.ts @@ -177,7 +177,11 @@ export async function createSendElements( } } break - + case OB11MessageDataType.mface: { + sendElements.push( + SendMsgElementConstructor.mface(sendMsg.data.emojiPackageId, sendMsg.data.emojiId, sendMsg.data.key), + ) + } case OB11MessageDataType.image: case OB11MessageDataType.file: case OB11MessageDataType.video: diff --git a/src/onebot11/constructor.ts b/src/onebot11/constructor.ts index 76cf18b..506e9f6 100644 --- a/src/onebot11/constructor.ts +++ b/src/onebot11/constructor.ts @@ -244,6 +244,9 @@ export class OB11Constructor { // const url = `https://p.qpic.cn/CDN_STATIC/0/data/imgcache/htdocs/club/item/parcel/item/${dir}/${md5}/300x300.gif?max_age=31536000` const url = `https://gxh.vip.qq.com/club/item/parcel/item/${dir}/${md5}/raw300.gif` message_data['data']['url'] = url + message_data['data']['emoji_id'] = element.marketFaceElement.emojiId + message_data['data']['emoji_package_id'] = String(element.marketFaceElement.emojiPackageId) + message_data['data']['key'] = element.marketFaceElement.key } else if (element.markdownElement) { message_data['type'] = OB11MessageDataType.markdown message_data['data']['data'] = element.markdownElement.content diff --git a/src/onebot11/types.ts b/src/onebot11/types.ts index c3393a9..fabf632 100644 --- a/src/onebot11/types.ts +++ b/src/onebot11/types.ts @@ -126,7 +126,10 @@ export enum OB11MessageDataType { export interface OB11MessageMFace { type: OB11MessageDataType.mface data: { - text: string + emoji_package_id: number + emoji_id: string + key: string + text?: string // 仅收 } }