diff --git a/package.json b/package.json index 41563bf..e0fef99 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "electron-vite": "^2.3.0", "protobufjs-cli": "^1.1.3", "typescript": "^5.6.2", - "vite": "^5.4.4", + "vite": "^5.4.5", "vite-plugin-cp": "^4.0.8" }, "packageManager": "yarn@4.4.1" diff --git a/src/ntqqapi/api/friend.ts b/src/ntqqapi/api/friend.ts index 8eb3004..27595f8 100644 --- a/src/ntqqapi/api/friend.ts +++ b/src/ntqqapi/api/friend.ts @@ -189,4 +189,9 @@ export class NTQQFriendApi extends Service { return await invoke('nodeIKernelBuddyService/isBuddy', [{ uid }, null]) } } + + async getBuddyRecommendContact(uin: string) { + const ret = await invoke('nodeIKernelBuddyService/getBuddyRecommendContactArkJson', [{ uin }, null]) + return ret.arkMsg + } } diff --git a/src/ntqqapi/api/group.ts b/src/ntqqapi/api/group.ts index fc4b50c..3899218 100644 --- a/src/ntqqapi/api/group.ts +++ b/src/ntqqapi/api/group.ts @@ -300,4 +300,9 @@ export class NTQQGroupApi extends Service { const psKey = (await ntUserApi.getPSkey(['qun.qq.com'])).domainPskeyMap.get('qun.qq.com')! return await invoke('nodeIKernelGroupService/uploadGroupBulletinPic', [{ groupCode, psKey, path }, null]) } + + async getGroupRecommendContact(groupCode: string) { + const ret = await invoke('nodeIKernelGroupService/getGroupRecommendContactArkJson', [{ groupCode }, null]) + return ret.arkJson + } } diff --git a/src/ntqqapi/api/user.ts b/src/ntqqapi/api/user.ts index f6836af..9884fdb 100644 --- a/src/ntqqapi/api/user.ts +++ b/src/ntqqapi/api/user.ts @@ -87,17 +87,6 @@ export class NTQQUserApi extends Service { return result.info } - async getSkey(): Promise { - const clientKeyData = await this.forceFetchClientKey() - if (clientKeyData?.result !== 0) { - throw new Error('获取clientKey失败') - } - const url = 'https://ssl.ptlogin2.qq.com/jump?ptlang=1033&clientuin=' + selfInfo.uin - + '&clientkey=' + clientKeyData.clientKey - + '&u1=https%3A%2F%2Fh5.qzone.qq.com%2Fqqnt%2Fqzoneinpcqq%2Ffriend%3Frefresh%3D0%26clientuin%3D0%26darkMode%3D0&keyindex=' + clientKeyData.keyIndex - return (await RequestUtil.HttpsGetCookies(url))?.skey - } - async getCookies(domain: string) { const clientKeyData = await this.forceFetchClientKey() if (clientKeyData?.result !== 0) { diff --git a/src/ntqqapi/services/NodeIKernelBuddyService.ts b/src/ntqqapi/services/NodeIKernelBuddyService.ts index eb596e4..674a6dd 100644 --- a/src/ntqqapi/services/NodeIKernelBuddyService.ts +++ b/src/ntqqapi/services/NodeIKernelBuddyService.ts @@ -119,7 +119,7 @@ export interface NodeIKernelBuddyService { reportDoubtBuddyReqUnread(): void - getBuddyRecommendContactArkJson(uid: string, phoneNumber: string): Promise + getBuddyRecommendContactArkJson(uid: string, phoneNumber: string): Promise isNull(): boolean -} \ No newline at end of file +} diff --git a/src/ntqqapi/services/NodeIKernelGroupService.ts b/src/ntqqapi/services/NodeIKernelGroupService.ts index 0f8ef1e..c3ec6a2 100644 --- a/src/ntqqapi/services/NodeIKernelGroupService.ts +++ b/src/ntqqapi/services/NodeIKernelGroupService.ts @@ -52,7 +52,7 @@ export interface NodeIKernelGroupService { //26702(其实更早 但是我不知道) getGroupLatestEssenceList(groupCode: string): Promise - //26702(其实更早 但是我不知道) + //26702(其实更早 但是我不知道) shareDigest(Req: { appId: string, appType: number, @@ -232,7 +232,7 @@ export interface NodeIKernelGroupService { setMemberShutUp(groupCode: string, memberTimes: { uid: string, timeStamp: number }[]): Promise - getGroupRecommendContactArkJson(groupCode: string): unknown + getGroupRecommendContactArkJson(groupCode: string): Promise getJoinGroupLink(groupCode: string): unknown @@ -244,6 +244,7 @@ export interface NodeIKernelGroupService { msgRandom: number, msgSeq: number }): Promise + //需要提前判断是否存在 高版本新增 removeGroupEssence(param: { groupCode: string @@ -252,4 +253,4 @@ export interface NodeIKernelGroupService { }): Promise isNull(): boolean -} \ No newline at end of file +} diff --git a/src/onebot11/helper/createMessage.ts b/src/onebot11/helper/createMessage.ts index 6ec850f..e2aec4d 100644 --- a/src/onebot11/helper/createMessage.ts +++ b/src/onebot11/helper/createMessage.ts @@ -174,6 +174,12 @@ export async function createSendElements( sendElements.push(SendElementEntities.rps(resultId)) } break + case OB11MessageDataType.contact: { + const { type, id } = sendMsg.data + const data = type === 'qq' ? ctx.ntFriendApi.getBuddyRecommendContact(id) : ctx.ntGroupApi.getGroupRecommendContact(id) + sendElements.push(SendElementEntities.ark(await data)) + } + break } } @@ -301,4 +307,4 @@ export async function createPeer(ctx: Context, payload: CreatePeerPayload, mode: } } throw new Error('请指定 group_id 或 user_id') -} \ No newline at end of file +} diff --git a/src/onebot11/types.ts b/src/onebot11/types.ts index 56c6685..91eb137 100644 --- a/src/onebot11/types.ts +++ b/src/onebot11/types.ts @@ -130,6 +130,7 @@ export enum OB11MessageDataType { poke = 'poke', dice = 'dice', RPS = 'rps', + contact = 'contact', } export interface OB11MessageMFace { @@ -276,6 +277,14 @@ export interface OB11MessageForward { } } +export interface OB11MessageContact { + type: OB11MessageDataType.contact + data: { + type: 'qq' | 'group' + id: string + } +} + export type OB11MessageData = | OB11MessageText | OB11MessageFace @@ -295,6 +304,7 @@ export type OB11MessageData = | OB11MessageRPS | OB11MessageMarkdown | OB11MessageForward + | OB11MessageContact export interface OB11PostSendMsg { message_type?: 'private' | 'group'