From 38894177ee9baf92515cd141c29466cbad008d46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 4 Aug 2024 22:21:24 +0800 Subject: [PATCH] fix: get_stranger_info --- src/core/src/apis/user.ts | 21 +++++-- src/core/src/entities/user.ts | 11 ++++ .../action/go-cqhttp/GetStrangerInfo.ts | 59 +++++++++++++------ src/onebot11/constructor.ts | 5 +- 4 files changed, 70 insertions(+), 26 deletions(-) diff --git a/src/core/src/apis/user.ts b/src/core/src/apis/user.ts index 9afd7e1c..04453fb5 100644 --- a/src/core/src/apis/user.ts +++ b/src/core/src/apis/user.ts @@ -1,4 +1,4 @@ -import { ModifyProfileParams, SelfInfo, User, UserDetailInfoByUin } from '@/core/entities'; +import { ModifyProfileParams, SelfInfo, User, UserDetailInfoByUin, UserDetailInfoByUinV2 } from '@/core/entities'; import { friends, groupMembers, selfInfo } from '@/core/data'; import { CacheClassFuncAsync, CacheClassFuncAsyncExtend } from '@/common/utils/helper'; import { napCatCore, NTQQFriendApi } from '@/core'; @@ -211,7 +211,7 @@ export class NTQQUserApi { }) static async getUidByUin(Uin: string) { //此代码仅临时使用,后期会被废弃 - if (!requireMinNTQQBuild('26702')) { + if (requireMinNTQQBuild('26702')) { return await NTQQUserApi.getUidByUinV2(Uin); } return await NTQQUserApi.getUidByUinV1(Uin); @@ -225,7 +225,7 @@ export class NTQQUserApi { }) static async getUinByUid(Uid: string) { //此代码仅临时使用,后期会被废弃 - if (!requireMinNTQQBuild('26702')) { + if (requireMinNTQQBuild('26702')) { return await NTQQUserApi.getUinByUidV2(Uid); } return await NTQQUserApi.getUinByUidV1(Uid); @@ -243,10 +243,11 @@ export class NTQQUserApi { if (uid) return uid; uid = (await NTQQFriendApi.getBuddyIdMap(true)).getValue(Uin); if (uid) return uid; - let unveifyUid = (await NTQQUserApi.getUserDetailInfoByUin(Uin)).info.uid;//从QQ Native 特殊转换 - if (unveifyUid.indexOf("*") == -1) uid = unveifyUid; + // let unveifyUid = (await NTQQUserApi.getUserDetailInfoByUin(Uin)).info.uid;//从QQ Native 特殊转换 + // if (unveifyUid.indexOf("*") == -1) uid = unveifyUid; - if (uid) return uid; return uid; + //if (uid) return uid; + return uid; } //后期改成流水线处理 static async getUinByUidV2(Uid: string) { @@ -333,6 +334,14 @@ export class NTQQUserApi { static async getRecentContactList() { return await napCatCore.session.getRecentContactService().getRecentContactList(); } + static async getUserDetailInfoByUinV2(Uin: string) { + return await NTEventDispatch.CallNoListenerEvent + <(Uin: string) => Promise>( + 'NodeIKernelProfileService/getUserDetailInfoByUin', + 5000, + Uin + ); + } static async getUserDetailInfoByUin(Uin: string) { return NTEventDispatch.CallNoListenerEvent <(Uin: string) => Promise>( diff --git a/src/core/src/entities/user.ts b/src/core/src/entities/user.ts index eefb9c33..f80c128b 100644 --- a/src/core/src/entities/user.ts +++ b/src/core/src/entities/user.ts @@ -276,6 +276,17 @@ export enum BizKey { KPRIVILEGEICON, KPHOTOWALL } +export interface UserDetailInfoByUinV2 { + result: number, + errMsg: string, + detail: { + uid: string, + uin: string, + simpleInfo: SimpleInfo, + commonExt: CommonExt, + photoWall: null + } +} export interface UserDetailInfoByUin { result: number, errMsg: string, diff --git a/src/onebot11/action/go-cqhttp/GetStrangerInfo.ts b/src/onebot11/action/go-cqhttp/GetStrangerInfo.ts index fb61be65..b7f1c223 100644 --- a/src/onebot11/action/go-cqhttp/GetStrangerInfo.ts +++ b/src/onebot11/action/go-cqhttp/GetStrangerInfo.ts @@ -5,6 +5,7 @@ import { ActionName } from '../types'; import { NTQQUserApi } from '@/core/apis/user'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { calcQQLevel } from '@/common/utils/qqlevel'; +import { requireMinNTQQBuild } from '@/common/utils/QQBasicInfo'; const SchemaData = { type: 'object', @@ -20,24 +21,46 @@ export default class GoCQHTTPGetStrangerInfo extends BaseAction { - const user_id = payload.user_id.toString(); - const extendData = await NTQQUserApi.getUserDetailInfoByUin(user_id); - const uid = (await NTQQUserApi.getUidByUin(user_id))!; - if (!uid || uid.indexOf('*') != -1) { - const ret = { - ...extendData, - user_id: parseInt(extendData.info.uin) || 0, - nickname: extendData.info.nick, - sex: OB11UserSex.unknown, - age: (extendData.info.birthday_year == 0) ? 0 : new Date().getFullYear() - extendData.info.birthday_year, - qid: extendData.info.qid, - level: extendData.info.qqLevel && calcQQLevel(extendData.info.qqLevel) || 0, - login_days: 0, - uid: '' - }; - return ret; + if (!requireMinNTQQBuild('26702')) { + const user_id = payload.user_id.toString(); + const extendData = await NTQQUserApi.getUserDetailInfoByUin(user_id); + const uid = (await NTQQUserApi.getUidByUin(user_id))!; + if (!uid || uid.indexOf('*') != -1) { + const ret = { + ...extendData, + user_id: parseInt(extendData.info.uin) || 0, + nickname: extendData.info.nick, + sex: OB11UserSex.unknown, + age: (extendData.info.birthday_year == 0) ? 0 : new Date().getFullYear() - extendData.info.birthday_year, + qid: extendData.info.qid, + level: extendData.info.qqLevel && calcQQLevel(extendData.info.qqLevel) || 0, + login_days: 0, + uid: '' + }; + return ret; + } + const data = { ...extendData, ...(await NTQQUserApi.getUserDetailInfo(uid)) }; + return OB11Constructor.stranger(data); + } else { + const user_id = payload.user_id.toString(); + const extendData = await NTQQUserApi.getUserDetailInfoByUinV2(user_id); + //console.log(extendData); + const uid = (await NTQQUserApi.getUidByUin(user_id))!; + if (!uid || uid.indexOf('*') != -1) { + const ret = { + ...extendData, + user_id: parseInt(extendData.detail.uin) || 0, + nickname: extendData.detail.simpleInfo.coreInfo.nick, + sex: OB11UserSex.unknown, + age: 0, + level: extendData.detail.commonExt.qqLevel && calcQQLevel(extendData.detail.commonExt.qqLevel) || 0, + login_days: 0, + uid: '' + }; + return ret; + } + const data = { ...extendData, ...(await NTQQUserApi.getUserDetailInfo(uid)) }; + return OB11Constructor.stranger(data); } - const data = { ...extendData, ...(await NTQQUserApi.getUserDetailInfo(uid)) }; - return OB11Constructor.stranger(data); } } diff --git a/src/onebot11/constructor.ts b/src/onebot11/constructor.ts index 756d3170..ed2c9755 100644 --- a/src/onebot11/constructor.ts +++ b/src/onebot11/constructor.ts @@ -92,8 +92,9 @@ export class OB11Constructor { } else if (msg.chatType == ChatType.friend) { resMsg.sub_type = 'friend'; - const user = await NTQQUserApi.getUserDetailInfoByUin(msg.senderUin!); - resMsg.sender.nickname = user.info.nick; + resMsg.sender.nickname = (await NTQQUserApi.getUserDetailInfo(msg.senderUid)).nick; + //const user = await NTQQUserApi.getUserDetailInfoByUin(msg.senderUin!); + //resMsg.sender.nickname = user.info.nick; } else if (msg.chatType == ChatType.temp) { resMsg.sub_type = 'group';