From dda5ea39721f7f5eee40f1dfe5d33ddf0f0be6b4 Mon Sep 17 00:00:00 2001 From: linyuchen <lin.yu.chen@foxmail.com> Date: Tue, 19 Mar 2024 00:45:59 +0800 Subject: [PATCH] feat: stranger info add sex & qq_level --- src/onebot11/action/go-cqhttp/GetStrangerInfo.ts | 13 +++++++++---- src/onebot11/constructor.ts | 5 +++-- src/onebot11/types.ts | 4 +++- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/onebot11/action/go-cqhttp/GetStrangerInfo.ts b/src/onebot11/action/go-cqhttp/GetStrangerInfo.ts index bbf6c88..340742f 100644 --- a/src/onebot11/action/go-cqhttp/GetStrangerInfo.ts +++ b/src/onebot11/action/go-cqhttp/GetStrangerInfo.ts @@ -5,24 +5,29 @@ import {OB11Constructor} from "../../constructor"; import {ActionName} from "../types"; import {isNull, log} from "../../../common/utils"; import {NTQQUserApi} from "../../../ntqqapi/api/user"; +import {Friend, GroupMember} from "../../../ntqqapi/types"; export default class GoCQHTTPGetStrangerInfo extends BaseAction<{ user_id: number }, OB11User> { actionName = ActionName.GoCQHTTP_GetStrangerInfo + private async refreshInfo(user: Friend | GroupMember){ + if (isNull(user.sex)){ + let info = (await NTQQUserApi.getUserDetailInfo(user.uid)) + Object.assign(user, info); + } + } protected async _handle(payload: { user_id: number }): Promise<OB11User> { const user_id = payload.user_id.toString() const friend = await getFriend(user_id) if (friend) { + await this.refreshInfo(friend); return OB11Constructor.friend(friend); } for (const group of groups) { const member = await getGroupMember(group.groupCode, user_id) if (member) { - if (isNull(member.sex)){ - let info = (await NTQQUserApi.getUserDetailInfo(member.uid)) - Object.assign(member, info); - } + await this.refreshInfo(member); return OB11Constructor.groupMember(group.groupCode, member) as OB11User } } diff --git a/src/onebot11/constructor.ts b/src/onebot11/constructor.ts index a9e258f..2d66b9c 100644 --- a/src/onebot11/constructor.ts +++ b/src/onebot11/constructor.ts @@ -305,9 +305,10 @@ export class OB11Constructor { return { user_id: parseInt(friend.uin), nickname: friend.nick, - remark: friend.remark + remark: friend.remark, + sex: OB11Constructor.sex(friend.sex), + qq_level: friend.qqLevel && calcQQLevel(friend.qqLevel) || 0 } - } static selfInfo(selfInfo: SelfInfo): OB11User { diff --git a/src/onebot11/types.ts b/src/onebot11/types.ts index b8db420..3ebce72 100644 --- a/src/onebot11/types.ts +++ b/src/onebot11/types.ts @@ -4,7 +4,9 @@ import {EventType} from "./event/OB11BaseEvent"; export interface OB11User { user_id: number; nickname: string; - remark?: string + remark?: string; + sex?: OB11UserSex; + qq_level?: number; } export enum OB11UserSex {