From 111ec4c18e47cfb0981487870b566eec56540d4a 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: Wed, 26 Mar 2025 23:03:55 +0800 Subject: [PATCH] fix --- src/core/types/user.ts | 4 ++-- src/onebot/action/user/GetFriendList.ts | 23 ++++++++++++++++++++--- src/onebot/helper/data.ts | 18 +++++++++++++++++- src/onebot/types/data.ts | 6 ++++++ 4 files changed, 45 insertions(+), 6 deletions(-) diff --git a/src/core/types/user.ts b/src/core/types/user.ts index ed2cd129..a06c0868 100644 --- a/src/core/types/user.ts +++ b/src/core/types/user.ts @@ -207,8 +207,8 @@ interface PhotoWall { // 简单信息 export interface SimpleInfo { - uid?: string; - uin?: string; + uid: string; + uin: string; coreInfo: CoreInfo; baseInfo: BaseInfo; status: UserStatus | null; diff --git a/src/onebot/action/user/GetFriendList.ts b/src/onebot/action/user/GetFriendList.ts index de7526c4..f62baa0b 100644 --- a/src/onebot/action/user/GetFriendList.ts +++ b/src/onebot/action/user/GetFriendList.ts @@ -15,7 +15,24 @@ export default class GetFriendList extends OneBotAction { override payloadSchema = SchemaData; async _handle(_payload: Payload) { - //全新逻辑 - return OB11Construct.friends(await this.core.apis.FriendApi.getBuddy()); + // 获取好友列表 + let buddyList = await this.core.apis.FriendApi.getBuddyV2SimpleInfoMap(); + const buddyArray = Array.from(buddyList.values()); + + // 批量并行获取用户详情 + const userDetailsPromises = buddyArray.map(member => + this.core.apis.UserApi.getUserDetailInfoV2(member.uin ?? '') + .catch(_ => { + return { uin: member.uin, uid: member.uid }; + }) + ); + const userDetails = await Promise.all(userDetailsPromises); + + const friendList = buddyArray.map((friend, index) => { + const userDetail = userDetails[index] || { uin: friend.uin, uid: friend.uid }; + return OB11Construct.friend(friend, userDetail); + }); + + return friendList; } -} +} \ No newline at end of file diff --git a/src/onebot/helper/data.ts b/src/onebot/helper/data.ts index 58c1d11e..1bf7d5f9 100644 --- a/src/onebot/helper/data.ts +++ b/src/onebot/helper/data.ts @@ -34,7 +34,23 @@ export class OB11Construct { level: 0, })); } - + static friend(friends: FriendV2,info:UserV2): OB11User { + return { + birthday_year: friends.baseInfo.birthday_year, + birthday_month: friends.baseInfo.birthday_month, + birthday_day: friends.baseInfo.birthday_day, + user_id: parseInt(friends.coreInfo.uin), + age: friends.baseInfo.age, + phone_num: friends.baseInfo.phoneNum, + email: friends.baseInfo.eMail, + category_id: friends.baseInfo.categoryId, + nickname: friends.coreInfo.nick ?? '', + remark: friends.coreInfo.remark ?? friends.coreInfo.nick, + sex: this.sex(friends.baseInfo.sex), + level: calcQQLevel(info?.commonExt?.qqLevel) || 0, + qid: friends.baseInfo.qid, + }; + } static groupMemberRole(role: number): OB11GroupMemberRole | undefined { return { 4: OB11GroupMemberRole.owner, diff --git a/src/onebot/types/data.ts b/src/onebot/types/data.ts index 2957e22a..6de0f265 100644 --- a/src/onebot/types/data.ts +++ b/src/onebot/types/data.ts @@ -1,4 +1,10 @@ export interface OB11User { + birthday_year?: number; + birthday_month?: number; + birthday_day?: number; + phone_num?: string; // 手机号 + email?: string; // 邮箱 + category_id?: number; // 分组ID user_id: number; // 用户ID nickname: string; // 昵称 remark?: string; // 备注