diff --git a/src/core/src/apis/msg.ts b/src/core/src/apis/msg.ts index e2a5c759..3ddb9513 100644 --- a/src/core/src/apis/msg.ts +++ b/src/core/src/apis/msg.ts @@ -67,6 +67,10 @@ setTimeout(() => { // }, 25000) export class NTQQMsgApi { + static async getMsgEmojiLikesList(peer: Peer, msgSeq: string, emojiId: string, emojiType: string, count: number = 20) { + console.log(peer, msgSeq, emojiId, emojiType, count); + return napCatCore.session.getMsgService().getMsgEmojiLikesList(peer, msgSeq, emojiId, emojiType, "", false, 20) + } // static napCatCore: NapCatCore | null = null; // enum BaseEmojiType { // NORMAL_EMOJI, diff --git a/src/onebot11/action/extends/FetchEmojioLike.ts b/src/onebot11/action/extends/FetchEmojioLike.ts new file mode 100644 index 00000000..2ea70ad4 --- /dev/null +++ b/src/onebot11/action/extends/FetchEmojioLike.ts @@ -0,0 +1,32 @@ +//getMsgEmojiLikesList +import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import BaseAction from '../BaseAction'; +import { ActionName } from '../types'; +import { NTQQMsgApi } from '@/core/apis'; +import { MessageUnique } from '@/common/utils/MessageUnique'; +const SchemaData = { + type: 'object', + properties: { + user_id: { type: 'string' }, + group_id: { type: 'string' }, + emojiId: { type: 'string' }, + emojiType: { type: 'string' }, + message_id: { type: ['string', 'number'] }, + count: { type: 'number' } + }, + required: ['emojiId', 'emojiType', 'message_id'] +} as const satisfies JSONSchema; + +type Payload = FromSchema; + +export class FetchEmojioLike extends BaseAction { + actionName = ActionName.FetchEmojioLike; + PayloadSchema = SchemaData; + protected async _handle(payload: Payload) { + let msgIdPeer = MessageUnique.getMsgIdAndPeerByShortId(parseInt(payload.message_id.toString())); + if(!msgIdPeer) throw new Error('消息不存在'); + let msg = (await NTQQMsgApi.getMsgsByMsgId(msgIdPeer.Peer, [msgIdPeer.MsgId])).msgList[0]; + const ret = await NTQQMsgApi.getMsgEmojiLikesList(msgIdPeer.Peer,msg.msgSeq,payload.emojiId,payload.emojiType,payload.count); + return ret; + } +} diff --git a/src/onebot11/action/index.ts b/src/onebot11/action/index.ts index e8c00c3c..f4df4ea3 100644 --- a/src/onebot11/action/index.ts +++ b/src/onebot11/action/index.ts @@ -78,8 +78,10 @@ import SetGroupHeader from './extends/SetGroupHeader'; import { FetchCustomFace } from './extends/FetchCustomFace'; import GoCQHTTPUploadPrivateFile from './go-cqhttp/UploadPrivareFile'; import TestApi01 from './extends/TestApi01'; +import { FetchEmojioLike } from './extends/FetchEmojioLike'; export const actionHandlers = [ + new FetchEmojioLike(), new RebootNormal(), new GetFile(), new Debug(), diff --git a/src/onebot11/action/types.ts b/src/onebot11/action/types.ts index d7ba6934..9fccaade 100644 --- a/src/onebot11/action/types.ts +++ b/src/onebot11/action/types.ts @@ -102,5 +102,6 @@ export enum ActionName { SetGroupHeader = 'set_group_head', FetchCustomFace = 'fetch_custom_face', GOCQHTTP_UploadPrivateFile = 'upload_private_file', - TestApi01 = 'test_api_01' + TestApi01 = 'test_api_01', + FetchEmojioLike = "fetch_emoji_like" } diff --git a/src/onebot11/constructor.ts b/src/onebot11/constructor.ts index 68772009..10aa1201 100644 --- a/src/onebot11/constructor.ts +++ b/src/onebot11/constructor.ts @@ -458,6 +458,7 @@ export class OB11Constructor { }); } if (grayTipElement) { + //console.log('收到群提示消息', grayTipElement); if (grayTipElement.xmlElement?.templId === '10382') { const emojiLikeData = new fastXmlParser.XMLParser({ ignoreAttributes: false, diff --git a/src/onebot11/main.ts b/src/onebot11/main.ts index 1b22ed8e..20d1aec8 100644 --- a/src/onebot11/main.ts +++ b/src/onebot11/main.ts @@ -98,6 +98,8 @@ export class NapCatOnebot11 { // .map(x => x.toString(16).padStart(2, '0')) // .join(''); // } + // const hex = buf2hex(Buffer.from(protobufData)); + // console.log(hex); // // let Data: Data = { // // header: { // // GroupNumber: 0, @@ -192,6 +194,7 @@ export class NapCatOnebot11 { // // 732 17 GroupRecall // // 732 20 GroupCommonTips // // 732 21 EssenceMessage + // // 732 16 16 GrayTips ->Busi->GroupEmjioLike // } catch (e) { // log('解析SysMsg异常', e); // // console.log(e); @@ -209,7 +212,7 @@ export class NapCatOnebot11 { // 临时会话更新 tempGroupCodeMap uid -> source/GroupCode }; msgListener.onRecvMsg = async (msg) => { - + //console.log('ob11 onRecvMsg', JSON.stringify(msg, null, 2)); // logDebug('收到消息', msg); for (const m of msg) { @@ -291,7 +294,7 @@ export class NapCatOnebot11 { } }; groupListener.onMemberInfoChange = async (groupCode: string, changeType: number, members: Map) => { - // console.log("ob11 onMemberInfoChange", groupCode, changeType, members) + // console.log("ob11 onMemberInfoChange", groupCode, changeType, members) if (changeType === 1) { let member; for (const [key, value] of members) {