mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-07-19 12:03:37 +00:00
feat: getUserDetailInfoV2
This commit is contained in:
22
src/common/decorator.ts
Normal file
22
src/common/decorator.ts
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
// decoratorAsyncMethod(this,function,wrapper)
|
||||||
|
async function decoratorMethod<T, R>(
|
||||||
|
target: T,
|
||||||
|
method: () => Promise<R>,
|
||||||
|
wrapper: (result: R) => Promise<any>,
|
||||||
|
executeImmediately: boolean = true
|
||||||
|
): Promise<any> {
|
||||||
|
const execute = async () => {
|
||||||
|
try {
|
||||||
|
const result = await method.call(target);
|
||||||
|
return wrapper(result);
|
||||||
|
} catch (error) {
|
||||||
|
return Promise.reject(error instanceof Error ? error : new Error(String(error)));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (executeImmediately) {
|
||||||
|
return execute();
|
||||||
|
} else {
|
||||||
|
return execute;
|
||||||
|
}
|
||||||
|
}
|
@@ -2,8 +2,6 @@ import { ModifyProfileParams, User, UserDetailSource } from '@/core/types';
|
|||||||
import { RequestUtil } from '@/common/request';
|
import { RequestUtil } from '@/common/request';
|
||||||
import { InstanceContext, NapCatCore, ProfileBizType } from '..';
|
import { InstanceContext, NapCatCore, ProfileBizType } from '..';
|
||||||
import { solveAsyncProblem } from '@/common/helper';
|
import { solveAsyncProblem } from '@/common/helper';
|
||||||
import { promisify } from 'node:util';
|
|
||||||
import { LRUCache } from '@/common/lru-cache';
|
|
||||||
import { Fallback, FallbackUtil } from '@/common/fall-back';
|
import { Fallback, FallbackUtil } from '@/common/fall-back';
|
||||||
|
|
||||||
export class NTQQUserApi {
|
export class NTQQUserApi {
|
||||||
@@ -109,6 +107,19 @@ export class NTQQUserApi {
|
|||||||
return retUser;
|
return retUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async getUserDetailInfoV2(uid: string): Promise<User> {
|
||||||
|
const fallback = new Fallback<User>((user) => FallbackUtil.boolchecker(user, user !== undefined && user.uin !== '0'))
|
||||||
|
.add(() => this.fetchUserDetailInfo(uid, UserDetailSource.KDB))
|
||||||
|
.add(() => this.fetchUserDetailInfo(uid, UserDetailSource.KSERVER));
|
||||||
|
const retUser = await fallback.run().then(async (user) => {
|
||||||
|
if (user && user.uin === '0') {
|
||||||
|
user.uin = await this.core.apis.UserApi.getUidByUinV2(uid) ?? '0';
|
||||||
|
}
|
||||||
|
return user;
|
||||||
|
});
|
||||||
|
return retUser;
|
||||||
|
}
|
||||||
|
|
||||||
async modifySelfProfile(param: ModifyProfileParams) {
|
async modifySelfProfile(param: ModifyProfileParams) {
|
||||||
return this.context.session.getProfileService().modifyDesktopMiniProfile(param);
|
return this.context.session.getProfileService().modifyDesktopMiniProfile(param);
|
||||||
}
|
}
|
||||||
|
@@ -8,7 +8,7 @@ import {
|
|||||||
WebHonorType,
|
WebHonorType,
|
||||||
} from '@/core';
|
} from '@/core';
|
||||||
import { NapCatCore } from '..';
|
import { NapCatCore } from '..';
|
||||||
import { createReadStream, readFileSync, statSync } from 'node:fs';
|
import { readFileSync } from 'node:fs';
|
||||||
import { createHash } from 'node:crypto';
|
import { createHash } from 'node:crypto';
|
||||||
import { basename } from 'node:path';
|
import { basename } from 'node:path';
|
||||||
|
|
||||||
|
@@ -797,6 +797,13 @@ export class OneBotMsgApi {
|
|||||||
|
|
||||||
private async handlePrivateMessage(resMsg: OB11Message, msg: RawMessage) {
|
private async handlePrivateMessage(resMsg: OB11Message, msg: RawMessage) {
|
||||||
resMsg.sub_type = 'friend';
|
resMsg.sub_type = 'friend';
|
||||||
|
if (await this.core.apis.FriendApi.isBuddy(msg.senderUid)) {
|
||||||
|
let nickname = (await this.core.apis.UserApi.getCoreAndBaseInfo([msg.senderUid])).get(msg.senderUid)?.coreInfo.nick;
|
||||||
|
if (nickname) {
|
||||||
|
resMsg.sender.nickname = nickname;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
resMsg.sender.nickname = (await this.core.apis.UserApi.getUserDetailInfo(msg.senderUid)).nick;
|
resMsg.sender.nickname = (await this.core.apis.UserApi.getUserDetailInfo(msg.senderUid)).nick;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -390,9 +390,6 @@ export class NapCatOneBot11Adapter {
|
|||||||
this.context.logger.logDebug('有加群请求');
|
this.context.logger.logDebug('有加群请求');
|
||||||
try {
|
try {
|
||||||
let requestUin = await this.core.apis.UserApi.getUinByUidV2(notify.user1.uid);
|
let requestUin = await this.core.apis.UserApi.getUinByUidV2(notify.user1.uid);
|
||||||
if (isNaN(parseInt(requestUin))) {
|
|
||||||
requestUin = (await this.core.apis.UserApi.getUserDetailInfo(notify.user1.uid)).uin;
|
|
||||||
}
|
|
||||||
const groupRequestEvent = new OB11GroupRequestEvent(
|
const groupRequestEvent = new OB11GroupRequestEvent(
|
||||||
this.core,
|
this.core,
|
||||||
parseInt(notify.group.groupCode),
|
parseInt(notify.group.groupCode),
|
||||||
|
Reference in New Issue
Block a user