diff --git a/src/ntqqapi/api/msg.ts b/src/ntqqapi/api/msg.ts index c478826..9137043 100644 --- a/src/ntqqapi/api/msg.ts +++ b/src/ntqqapi/api/msg.ts @@ -256,4 +256,8 @@ export class NTQQMsgApi extends Service { async setMsgRead(peer: Peer) { return await invoke('nodeIKernelMsgService/setMsgRead', [{ peer }, null]) } + + async getMsgEmojiLikesList(peer: Peer, msgSeq: string, emojiId: string, emojiType: string, cnt: number) { + return await invoke('nodeIKernelMsgService/getMsgEmojiLikesList', [{ peer, msgSeq, emojiId, emojiType, cnt }, null]) + } } diff --git a/src/ntqqapi/services/NodeIKernelMsgService.ts b/src/ntqqapi/services/NodeIKernelMsgService.ts index b2011dd..52c92e8 100644 --- a/src/ntqqapi/services/NodeIKernelMsgService.ts +++ b/src/ntqqapi/services/NodeIKernelMsgService.ts @@ -214,7 +214,7 @@ export interface NodeIKernelMsgService { getMsgByClientSeqAndTime(peer: Peer, clientSeq: string, time: string): unknown getSourceOfReplyMsgByClientSeqAndTime(peer: Peer, clientSeq: string, time: string): unknown - //cnt clientSeq?并不是吧 + getMsgsByTypeFilter(peer: Peer, msgId: string, cnt: unknown, queryOrder: boolean, typeFilter: { type: number, subtype: Array }): unknown getMsgsByTypeFilters(peer: Peer, msgId: string, cnt: unknown, queryOrder: boolean, typeFilters: Array<{ type: number, subtype: Array }>): unknown @@ -223,31 +223,8 @@ export interface NodeIKernelMsgService { queryMsgsWithFilter(...args: unknown[]): unknown - /** - * @deprecated 该函数已被标记为废弃,请使用新的替代方法。 - * 使用过滤条件查询消息列表的版本2接口。 - * - * 该函数通过一系列过滤条件来查询特定聊天中的消息列表。这些条件包括消息类型、发送者、时间范围等。 - * 函数返回一个Promise,解析为查询结果的未知类型对象。 - * - * @param MsgId 消息ID,用于特定消息的查询。 - * @param MsgTime 消息时间,用于指定消息的时间范围。 - * @param param 查询参数对象,包含详细的过滤条件和分页信息。 - * @param param.chatInfo 聊天信息,包括聊天类型和对方用户ID。 - * @param param.filterMsgType 需要过滤的消息类型数组,留空表示不过滤。 - * @param param.filterSendersUid 需要过滤的发送者用户ID数组。 - * @param param.filterMsgFromTime 查询消息的起始时间。 - * @param param.filterMsgToTime 查询消息的结束时间。 - * @param param.pageLimit 每页的消息数量限制。 - * @param param.isReverseOrder 是否按时间顺序倒序返回消息。 - * @param param.isIncludeCurrent 是否包含当前页码。 - * @returns 返回一个Promise,解析为查询结果的未知类型对象。 - */ - queryMsgsWithFilterVer2(MsgId: string, MsgTime: string, param: QueryMsgsParams): Promise - // this.chatType = i2 // this.peerUid = str - // this.chatInfo = new ChatInfo() // this.filterMsgType = new ArrayList<>() // this.filterSendersUid = new ArrayList<>() @@ -495,16 +472,15 @@ export interface NodeIKernelMsgService { setMsgEmojiLikes(...args: unknown[]): unknown getMsgEmojiLikesList(peer: Peer, msgSeq: string, emojiId: string, emojiType: string, cookie: string, bForward: boolean, number: number): Promise<{ - result: number, - errMsg: string, - emojiLikesList: - Array<{ - tinyId: string, - nickName: string, + result: number + errMsg: string + emojiLikesList: { + tinyId: string + nickName: string headUrl: string - }>, - cookie: string, - isLastPage: boolean, + }[] + cookie: string + isLastPage: boolean isFirstPage: boolean }> @@ -686,9 +662,8 @@ export interface NodeIKernelMsgService { dataMigrationStopOperation(...args: unknown[]): unknown - //新的希望 dataMigrationImportMsgPbRecord(DataMigrationMsgInfo: Array<{ - extensionData: string//"Hex" + extensionData: string //"Hex" extraData: string //"" chatType: number chatUin: string @@ -740,4 +715,4 @@ export interface NodeIKernelMsgService { getGroupMsgStorageTime(): unknown//这是嘛啊 -} \ No newline at end of file +} diff --git a/src/onebot11/action/index.ts b/src/onebot11/action/index.ts index c5ddccf..9dc8e61 100644 --- a/src/onebot11/action/index.ts +++ b/src/onebot11/action/index.ts @@ -63,6 +63,7 @@ import { GetGroupRootFiles } from './go-cqhttp/GetGroupRootFiles' import { SetOnlineStatus } from './llonebot/SetOnlineStatus' import { SendGroupNotice } from './go-cqhttp/SendGroupNotice' import { GetProfileLike } from './llonebot/GetProfileLike' +import { FetchEmojiLike } from './llonebot/FetchEmojiLike' export function initActionMap(adapter: Adapter) { const actionHandlers = [ @@ -109,7 +110,7 @@ export function initActionMap(adapter: Adapter) { new SetMsgEmojiLike(adapter), new ForwardFriendSingleMsg(adapter), new ForwardGroupSingleMsg(adapter), - //以下为go-cqhttp api + // go-cqhttp new GetGroupEssence(adapter), new GetGroupHonorInfo(adapter), new SendForwardMsg(adapter), @@ -132,7 +133,8 @@ export function initActionMap(adapter: Adapter) { new DelGroupFolder(adapter), new GetGroupAtAllRemain(adapter), new GetGroupRootFiles(adapter), - new SendGroupNotice(adapter) + new SendGroupNotice(adapter), + new FetchEmojiLike(adapter), ] const actionMap = new Map>() for (const action of actionHandlers) { diff --git a/src/onebot11/action/llonebot/FetchEmojiLike.ts b/src/onebot11/action/llonebot/FetchEmojiLike.ts new file mode 100644 index 0000000..85fdd77 --- /dev/null +++ b/src/onebot11/action/llonebot/FetchEmojiLike.ts @@ -0,0 +1,28 @@ +import { BaseAction, Schema } from '../BaseAction' +import { ActionName } from '../types' +import { MessageUnique } from '@/common/utils/messageUnique' +import { Dict } from 'cosmokit' + +interface Payload { + emojiId: string + emojiType: string + message_id: string | number + count: string | number +} + +export class FetchEmojiLike extends BaseAction { + actionName = ActionName.FetchEmojiLike + payloadSchema = Schema.object({ + emojiId: Schema.string().required(), + emojiType: Schema.string().required(), + message_id: Schema.union([Number, String]).required(), + count: Schema.union([Number, String]).default(20) + }) + + async _handle(payload: Payload) { + const msgInfo = await MessageUnique.getMsgIdAndPeerByShortId(+payload.message_id) + if (!msgInfo) throw new Error('消息不存在') + const { msgSeq } = (await this.ctx.ntMsgApi.getMsgsByMsgId(msgInfo.Peer, [msgInfo.MsgId])).msgList[0] + return await this.ctx.ntMsgApi.getMsgEmojiLikesList(msgInfo.Peer, msgSeq, payload.emojiId, payload.emojiType, +payload.count) + } +} diff --git a/src/onebot11/action/types.ts b/src/onebot11/action/types.ts index f128bf8..fd17659 100644 --- a/src/onebot11/action/types.ts +++ b/src/onebot11/action/types.ts @@ -21,6 +21,7 @@ export enum ActionName { GetEvent = 'get_event', SetOnlineStatus = 'set_online_status', GetProfileLike = 'get_profile_like', + FetchEmojiLike = 'fetch_emoji_like', // onebot 11 SendLike = 'send_like', GetLoginInfo = 'get_login_info',