chore: NTApi Finish

This commit is contained in:
手瓜一十雪 2024-08-09 15:35:00 +08:00
parent ffe480ad44
commit 7842cd0bc0
2 changed files with 267 additions and 298 deletions

View File

@ -3,164 +3,160 @@ import { GeneralCallResult, InstanceContext, NapCatCore, NodeIKernelGroupService
import { runAllWithTimeout } from '@/common/utils/helper'; import { runAllWithTimeout } from '@/common/utils/helper';
import { NodeIKernelGroupListener } from '../listeners'; import { NodeIKernelGroupListener } from '../listeners';
export class NTQQGroupApi { export class NTQQGroupApi {
context: InstanceContext; context: InstanceContext;
core: NapCatCore; core: NapCatCore;
constructor(context: InstanceContext, core: NapCatCore) { constructor(context: InstanceContext, core: NapCatCore) {
this.context = context; this.context = context;
this.core = core; this.core = core;
} }
async setGroupAvatar(gc: string, filePath: string) { async setGroupAvatar(gc: string, filePath: string) {
return this.context.session.getGroupService().setHeader(gc, filePath); return this.context.session.getGroupService().setHeader(gc, filePath);
} }
async getGroups(forced = false) { async getGroups(forced = false) {
type ListenerType = NodeIKernelGroupListener['onGroupListUpdate']; type ListenerType = NodeIKernelGroupListener['onGroupListUpdate'];
const [_retData, _updateType, groupList] = await this.core.eventWrapper.CallNormalEvent const [_retData, _updateType, groupList] = await this.core.eventWrapper.CallNormalEvent
<(force: boolean) => Promise<any>, ListenerType> <(force: boolean) => Promise<any>, ListenerType>
( (
'NodeIKernelGroupService/getGroupList', 'NodeIKernelGroupService/getGroupList',
'NodeIKernelGroupListener/onGroupListUpdate', 'NodeIKernelGroupListener/onGroupListUpdate',
1, 1,
5000, 5000,
(updateType) => true, (updateType) => true,
forced forced
); );
return groupList; return groupList;
} }
async getGroupMemberLatestSendTimeCache(GroupCode: string) { async getGroupMemberLatestSendTimeCache(GroupCode: string, uids: string[]) {
return this.getGroupMemberLatestSendTime(GroupCode); return this.getGroupMemberLatestSendTime(GroupCode, uids);
} }
/** /**
* QQ自带数据库获取群成员最后发言时间( ) * QQ自带数据库获取群成员最后发言时间( )
* @param GroupCode * @param GroupCode
* @returns Map<string, string> key: uin value: sendTime * @returns Map<string, string> key: uin value: sendTime
* @example * @example
* let ret = await NTQQGroupApi.getGroupMemberLastestSendTime('123456'); * let ret = await NTQQGroupApi.getGroupMemberLastestSendTime('123456');
* for (let [uin, sendTime] of ret) { * for (let [uin, sendTime] of ret) {
* console.log(uin, sendTime); * console.log(uin, sendTime);
* } * }
*/ */
async getGroupMemberLatestSendTime(GroupCode: string) { async getGroupMemberLatestSendTime(GroupCode: string, uids: string[]) {
const getdata = async (uid: string) => { const getdata = async (uid: string) => {
const NTRet = await this.getLatestMsgByUids(GroupCode, [uid]); const NTRet = await this.getLatestMsgByUids(GroupCode, [uid]);
if (NTRet.result != 0 && NTRet.msgList.length < 1) { if (NTRet.result != 0 && NTRet.msgList.length < 1) {
return undefined; return undefined;
} }
return { sendUin: NTRet.msgList[0].senderUin, sendTime: NTRet.msgList[0].msgTime }; return { sendUin: NTRet.msgList[0].senderUin, sendTime: NTRet.msgList[0].msgTime };
}; };
const currentGroupMembers = groupMembers.get(GroupCode); const PromiseData: Promise<({
const PromiseData: Promise<({
sendUin: string; sendUin: string;
sendTime: string; sendTime: string;
} | undefined)>[] = []; } | undefined)>[] = [];
const ret: Map<string, string> = new Map(); const ret: Map<string, string> = new Map();
if (!currentGroupMembers) { for (const uid of uids) {
return ret; PromiseData.push(getdata(uid).catch(() => undefined));
}
for (const member of currentGroupMembers.values()) {
PromiseData.push(getdata(member.uid).catch(() => undefined));
}
const allRet = await runAllWithTimeout(PromiseData, 2500);
for (const PromiseDo of allRet) {
if (PromiseDo) {
ret.set(PromiseDo.sendUin, PromiseDo.sendTime);
}
}
return ret;
} }
async getLatestMsgByUids(GroupCode: string, uids: string[]) { const allRet = await runAllWithTimeout(PromiseData, 2500);
const ret = await this.context.session.getMsgService().queryMsgsWithFilterEx('0', '0', '0', { for (const PromiseDo of allRet) {
chatInfo: { if (PromiseDo) {
peerUid: GroupCode, ret.set(PromiseDo.sendUin, PromiseDo.sendTime);
chatType: ChatType.group, }
},
filterMsgType: [],
filterSendersUid: uids,
filterMsgToTime: '0',
filterMsgFromTime: '0',
isReverseOrder: false,
isIncludeCurrent: true,
pageLimit: 1,
});
return ret;
} }
async getGroupMemberAll(GroupCode: string, forced = false) { return ret;
return this.context.session.getGroupService().getAllMemberList(GroupCode, forced); }
async getLatestMsgByUids(GroupCode: string, uids: string[]) {
const ret = await this.context.session.getMsgService().queryMsgsWithFilterEx('0', '0', '0', {
chatInfo: {
peerUid: GroupCode,
chatType: ChatType.group,
},
filterMsgType: [],
filterSendersUid: uids,
filterMsgToTime: '0',
filterMsgFromTime: '0',
isReverseOrder: false,
isIncludeCurrent: true,
pageLimit: 1,
});
return ret;
}
async getGroupMemberAll(GroupCode: string, forced = false) {
return this.context.session.getGroupService().getAllMemberList(GroupCode, forced);
}
async getLatestMsg(GroupCode: string, uins: string[]) {
const uids: Array<string> = [];
for (const uin of uins) {
const uid = await this.core.getApiContext().UserApi.getUidByUin(uin);
if (uid) {
uids.push(uid);
}
} }
async getLatestMsg(GroupCode: string, uins: string[]) { const ret = await this.context.session.getMsgService().queryMsgsWithFilterEx('0', '0', '0', {
const uids: Array<string> = []; chatInfo: {
for (const uin of uins) { peerUid: GroupCode,
const uid = await this.core.getApiContext().UserApi.getUidByUin(uin); chatType: ChatType.group,
if (uid) { },
uids.push(uid); filterMsgType: [],
} filterSendersUid: uids,
} filterMsgToTime: '0',
const ret = await this.context.session.getMsgService().queryMsgsWithFilterEx('0', '0', '0', { filterMsgFromTime: '0',
chatInfo: { isReverseOrder: false,
peerUid: GroupCode, isIncludeCurrent: true,
chatType: ChatType.group, pageLimit: 1,
}, });
filterMsgType: [], return ret;
filterSendersUid: uids, }
filterMsgToTime: '0', async getGroupRecommendContactArkJson(GroupCode: string) {
filterMsgFromTime: '0', return this.context.session.getGroupService().getGroupRecommendContactArkJson(GroupCode);
isReverseOrder: false, }
isIncludeCurrent: true, async CreatGroupFileFolder(groupCode: string, folderName: string) {
pageLimit: 1, return this.context.session.getRichMediaService().createGroupFolder(groupCode, folderName);
}); }
return ret; async DelGroupFile(groupCode: string, files: string[]) {
} return this.context.session.getRichMediaService().deleteGroupFile(groupCode, [102], files);
async getGroupRecommendContactArkJson(GroupCode: string) { }
return this.context.session.getGroupService().getGroupRecommendContactArkJson(GroupCode); async DelGroupFileFolder(groupCode: string, folderId: string) {
} return this.context.session.getRichMediaService().deleteGroupFolder(groupCode, folderId);
async CreatGroupFileFolder(groupCode: string, folderName: string) { }
return this.context.session.getRichMediaService().createGroupFolder(groupCode, folderName); async addGroupEssence(GroupCode: string, msgId: string) {
}
async DelGroupFile(groupCode: string, files: string[]) {
return this.context.session.getRichMediaService().deleteGroupFile(groupCode, [102], files);
}
async DelGroupFileFolder(groupCode: string, folderId: string) {
return this.context.session.getRichMediaService().deleteGroupFolder(groupCode, folderId);
}
async addGroupEssence(GroupCode: string, msgId: string) {
// 代码没测过 // 代码没测过
// 需要 ob11msgid->msgId + (peer) -> msgSeq + msgRandom // 需要 ob11msgid->msgId + (peer) -> msgSeq + msgRandom
const MsgData = await this.context.session.getMsgService().getMsgsIncludeSelf({ chatType: 2, guildId: '', peerUid: GroupCode }, msgId, 1, false); const MsgData = await this.context.session.getMsgService().getMsgsIncludeSelf({ chatType: 2, guildId: '', peerUid: GroupCode }, msgId, 1, false);
const param = { const param = {
groupCode: GroupCode, groupCode: GroupCode,
msgRandom: parseInt(MsgData.msgList[0].msgRandom), msgRandom: parseInt(MsgData.msgList[0].msgRandom),
msgSeq: parseInt(MsgData.msgList[0].msgSeq) msgSeq: parseInt(MsgData.msgList[0].msgSeq)
}; };
// GetMsgByShoretID(ShoretID); -> MsgService.getMsgs(Peer,MsgId,1,false); -> 组出参数 // GetMsgByShoretID(ShoretID); -> MsgService.getMsgs(Peer,MsgId,1,false); -> 组出参数
return this.context.session.getGroupService().addGroupEssence(param); return this.context.session.getGroupService().addGroupEssence(param);
} }
async removeGroupEssence(GroupCode: string, msgId: string) { async removeGroupEssence(GroupCode: string, msgId: string) {
// 代码没测过 // 代码没测过
// 需要 ob11msgid->msgId + (peer) -> msgSeq + msgRandom // 需要 ob11msgid->msgId + (peer) -> msgSeq + msgRandom
const MsgData = await this.context.session.getMsgService().getMsgsIncludeSelf({ chatType: 2, guildId: '', peerUid: GroupCode }, msgId, 1, false); const MsgData = await this.context.session.getMsgService().getMsgsIncludeSelf({ chatType: 2, guildId: '', peerUid: GroupCode }, msgId, 1, false);
const param = { const param = {
groupCode: GroupCode, groupCode: GroupCode,
msgRandom: parseInt(MsgData.msgList[0].msgRandom), msgRandom: parseInt(MsgData.msgList[0].msgRandom),
msgSeq: parseInt(MsgData.msgList[0].msgSeq) msgSeq: parseInt(MsgData.msgList[0].msgSeq)
}; };
// GetMsgByShoretID(ShoretID); -> MsgService.getMsgs(Peer,MsgId,1,false); -> 组出参数 // GetMsgByShoretID(ShoretID); -> MsgService.getMsgs(Peer,MsgId,1,false); -> 组出参数
return this.context.session.getGroupService().removeGroupEssence(param); return this.context.session.getGroupService().removeGroupEssence(param);
} }
async getSingleScreenNotifies(num: number) { async getSingleScreenNotifies(num: number) {
const [_retData, _doubt, _seq, notifies] = await this.core.eventWrapper.CallNormalEvent const [_retData, _doubt, _seq, notifies] = await this.core.eventWrapper.CallNormalEvent
<(arg1: boolean, arg2: string, arg3: number) => Promise<any>, (doubt: boolean, seq: string, notifies: GroupNotify[]) => void> <(arg1: boolean, arg2: string, arg3: number) => Promise<any>, (doubt: boolean, seq: string, notifies: GroupNotify[]) => void>
( (
'NodeIKernelGroupService/getSingleScreenNotifies', 'NodeIKernelGroupService/getSingleScreenNotifies',
'NodeIKernelGroupListener/onGroupSingleScreenNotifies', 'NodeIKernelGroupListener/onGroupSingleScreenNotifies',
1, 1,
5000, 5000,
() => true, () => true,
false, false,
'', '',
num num
); );
return notifies; return notifies;
} }
async getGroupMemberV2(GroupCode: string, uid: string, forced = false) { async getGroupMemberV2(GroupCode: string, uid: string, forced = false) {
type ListenerType = NodeIKernelGroupListener['onMemberInfoChange']; type ListenerType = NodeIKernelGroupListener['onMemberInfoChange'];
type EventType = NodeIKernelGroupService['getMemberInfo']; type EventType = NodeIKernelGroupService['getMemberInfo'];
// NTEventDispatch.CreatListenerFunction('NodeIKernelGroupListener/onGroupMemberInfoUpdate', // NTEventDispatch.CreatListenerFunction('NodeIKernelGroupListener/onGroupMemberInfoUpdate',
@ -168,27 +164,27 @@ export class NTQQGroupApi {
const [ret, _groupCode, _changeType, _members] = await this.core.eventWrapper.CallNormalEvent const [ret, _groupCode, _changeType, _members] = await this.core.eventWrapper.CallNormalEvent
<EventType, ListenerType> <EventType, ListenerType>
( (
'NodeIKernelGroupService/getMemberInfo', 'NodeIKernelGroupService/getMemberInfo',
'NodeIKernelGroupListener/onMemberInfoChange', 'NodeIKernelGroupListener/onMemberInfoChange',
1, 1,
5000, 5000,
(groupCode: string, changeType: number, members: Map<string, GroupMember>) => { (groupCode: string, changeType: number, members: Map<string, GroupMember>) => {
return groupCode == GroupCode && members.has(uid); return groupCode == GroupCode && members.has(uid);
}, },
GroupCode, [uid], forced GroupCode, [uid], forced
); );
return _members.get(uid); return _members.get(uid);
}
async getGroupMembers(groupQQ: string, num = 3000): Promise<Map<string, GroupMember>> {
const groupService = this.context.session.getGroupService();
const sceneId = groupService.createMemberListScene(groupQQ, 'groupMemberList_MainWindow');
const result = await groupService.getNextMemberList(sceneId!, undefined, num);
if (result.errCode !== 0) {
throw ('获取群成员列表出错,' + result.errMsg);
} }
async getGroupMembers(groupQQ: string, num = 3000): Promise<Map<string, GroupMember>> {
const groupService = this.context.session.getGroupService();
const sceneId = groupService.createMemberListScene(groupQQ, 'groupMemberList_MainWindow');
const result = await groupService.getNextMemberList(sceneId!, undefined, num);
if (result.errCode !== 0) {
throw ('获取群成员列表出错,' + result.errMsg);
}
//logDebug(`获取群(${groupQQ})成员列表结果:`, `finish: ${result.result.finish}`); //, Array.from(result.result.infos.values())); //logDebug(`获取群(${groupQQ})成员列表结果:`, `finish: ${result.result.finish}`); //, Array.from(result.result.infos.values()));
return result.result.infos; return result.result.infos;
/* /*
console.log(sceneId); console.log(sceneId);
const result = await napCatCore.getGroupService().getNextMemberList(sceneId, num); const result = await napCatCore.getGroupService().getNextMemberList(sceneId, num);
@ -196,134 +192,134 @@ export class NTQQGroupApi {
return result; return result;
*/ */
} }
async getGroupNotifies() { async getGroupNotifies() {
// 获取管理员变更 // 获取管理员变更
// 加群通知,退出通知,需要管理员权限 // 加群通知,退出通知,需要管理员权限
} }
async GetGroupFileCount(Gids: Array<string>) { async GetGroupFileCount(Gids: Array<string>) {
return this.context.session.getRichMediaService().batchGetGroupFileCount(Gids); return this.context.session.getRichMediaService().batchGetGroupFileCount(Gids);
} }
async getGroupIgnoreNotifies() { async getGroupIgnoreNotifies() {
} }
async getArkJsonGroupShare(GroupCode: string) { async getArkJsonGroupShare(GroupCode: string) {
const ret = await this.core.eventWrapper.callNoListenerEvent const ret = await this.core.eventWrapper.callNoListenerEvent
<(GroupId: string) => Promise<GeneralCallResult & { arkJson: string }>>( <(GroupId: string) => Promise<GeneralCallResult & { arkJson: string }>>(
'NodeIKernelGroupService/getGroupRecommendContactArkJson', 'NodeIKernelGroupService/getGroupRecommendContactArkJson',
5000, 5000,
GroupCode GroupCode
); );
return ret.arkJson; return ret.arkJson;
} }
//需要异常处理 //需要异常处理
async uploadGroupBulletinPic(GroupCode: string, imageurl: string) { async uploadGroupBulletinPic(GroupCode: string, imageurl: string) {
const _Pskey = (await this.core.getApiContext().UserApi.getPSkey(['qun.qq.com'])).domainPskeyMap.get('qun.qq.com')!; const _Pskey = (await this.core.getApiContext().UserApi.getPSkey(['qun.qq.com'])).domainPskeyMap.get('qun.qq.com')!;
return this.context.session.getGroupService().uploadGroupBulletinPic(GroupCode, _Pskey, imageurl); return this.context.session.getGroupService().uploadGroupBulletinPic(GroupCode, _Pskey, imageurl);
} }
async handleGroupRequest(flag: string, operateType: GroupRequestOperateTypes, reason?: string) { async handleGroupRequest(flag: string, operateType: GroupRequestOperateTypes, reason?: string) {
const flagitem = flag.split('|'); const flagitem = flag.split('|');
const groupCode = flagitem[0]; const groupCode = flagitem[0];
const seq = flagitem[1]; const seq = flagitem[1];
const type = parseInt(flagitem[2]); const type = parseInt(flagitem[2]);
return this.context.session.getGroupService().operateSysNotify( return this.context.session.getGroupService().operateSysNotify(
false, false,
{ {
'operateType': operateType, // 2 拒绝 'operateType': operateType, // 2 拒绝
'targetMsg': { 'targetMsg': {
'seq': seq, // 通知序列号 'seq': seq, // 通知序列号
'type': type, 'type': type,
'groupCode': groupCode, 'groupCode': groupCode,
'postscript': reason || ' ' // 仅传空值可能导致处理失败,故默认给个空格 'postscript': reason || ' ' // 仅传空值可能导致处理失败,故默认给个空格
} }
}); });
} }
async quitGroup(groupQQ: string) { async quitGroup(groupQQ: string) {
return this.context.session.getGroupService().quitGroup(groupQQ); return this.context.session.getGroupService().quitGroup(groupQQ);
} }
async kickMember(groupQQ: string, kickUids: string[], refuseForever: boolean = false, kickReason: string = '') { async kickMember(groupQQ: string, kickUids: string[], refuseForever: boolean = false, kickReason: string = '') {
return this.context.session.getGroupService().kickMember(groupQQ, kickUids, refuseForever, kickReason); return this.context.session.getGroupService().kickMember(groupQQ, kickUids, refuseForever, kickReason);
} }
async banMember(groupQQ: string, memList: Array<{ uid: string, timeStamp: number }>) { async banMember(groupQQ: string, memList: Array<{ uid: string, timeStamp: number }>) {
// timeStamp为秒数, 0为解除禁言 // timeStamp为秒数, 0为解除禁言
return this.context.session.getGroupService().setMemberShutUp(groupQQ, memList); return this.context.session.getGroupService().setMemberShutUp(groupQQ, memList);
} }
async banGroup(groupQQ: string, shutUp: boolean) { async banGroup(groupQQ: string, shutUp: boolean) {
return this.context.session.getGroupService().setGroupShutUp(groupQQ, shutUp); return this.context.session.getGroupService().setGroupShutUp(groupQQ, shutUp);
} }
async setMemberCard(groupQQ: string, memberUid: string, cardName: string) { async setMemberCard(groupQQ: string, memberUid: string, cardName: string) {
return this.context.session.getGroupService().modifyMemberCardName(groupQQ, memberUid, cardName); return this.context.session.getGroupService().modifyMemberCardName(groupQQ, memberUid, cardName);
} }
async setMemberRole(groupQQ: string, memberUid: string, role: GroupMemberRole) { async setMemberRole(groupQQ: string, memberUid: string, role: GroupMemberRole) {
return this.context.session.getGroupService().modifyMemberRole(groupQQ, memberUid, role); return this.context.session.getGroupService().modifyMemberRole(groupQQ, memberUid, role);
} }
async setGroupName(groupQQ: string, groupName: string) { async setGroupName(groupQQ: string, groupName: string) {
return this.context.session.getGroupService().modifyGroupName(groupQQ, groupName, false); return this.context.session.getGroupService().modifyGroupName(groupQQ, groupName, false);
} }
// 头衔不可用 // 头衔不可用
async setGroupTitle(groupQQ: string, uid: string, title: string) { async setGroupTitle(groupQQ: string, uid: string, title: string) {
} }
async publishGroupBulletin(groupQQ: string, content: string, picInfo: { id: string, width: number, height: number } | undefined = undefined, pinned: number = 0, confirmRequired: number = 0,) { async publishGroupBulletin(groupQQ: string, content: string, picInfo: { id: string, width: number, height: number } | undefined = undefined, pinned: number = 0, confirmRequired: number = 0,) {
const _Pskey = (await this.core.getApiContext().UserApi.getPSkey(['qun.qq.com'])).domainPskeyMap.get('qun.qq.com'); const _Pskey = (await this.core.getApiContext().UserApi.getPSkey(['qun.qq.com'])).domainPskeyMap.get('qun.qq.com');
//text是content内容url编码 //text是content内容url编码
const data = { const data = {
text: encodeURI(content), text: encodeURI(content),
picInfo: picInfo, picInfo: picInfo,
oldFeedsId: '', oldFeedsId: '',
pinned: pinned, pinned: pinned,
confirmRequired: confirmRequired confirmRequired: confirmRequired
}; };
return this.context.session.getGroupService().publishGroupBulletin(groupQQ, _Pskey!, data); return this.context.session.getGroupService().publishGroupBulletin(groupQQ, _Pskey!, data);
} }
async getGroupRemainAtTimes(GroupCode: string) { async getGroupRemainAtTimes(GroupCode: string) {
this.context.session.getGroupService().getGroupRemainAtTimes(GroupCode); this.context.session.getGroupService().getGroupRemainAtTimes(GroupCode);
} }
async getMemberExtInfo(groupCode: string, uin: string) { async getMemberExtInfo(groupCode: string, uin: string) {
// 仅NTQQ 9.9.11 24568测试 容易炸开谨慎使用 // 仅NTQQ 9.9.11 24568测试 容易炸开谨慎使用
return this.context.session.getGroupService().getMemberExtInfo( return this.context.session.getGroupService().getMemberExtInfo(
{ {
groupCode: groupCode, groupCode: groupCode,
sourceType: MemberExtSourceType.TITLETYPE, sourceType: MemberExtSourceType.TITLETYPE,
beginUin: '0', beginUin: '0',
dataTime: '0', dataTime: '0',
uinList: [uin], uinList: [uin],
uinNum: '', uinNum: '',
seq: '', seq: '',
groupType: '', groupType: '',
richCardNameVer: '', richCardNameVer: '',
memberExtFilter: { memberExtFilter: {
memberLevelInfoUin: 1, memberLevelInfoUin: 1,
memberLevelInfoPoint: 1, memberLevelInfoPoint: 1,
memberLevelInfoActiveDay: 1, memberLevelInfoActiveDay: 1,
memberLevelInfoLevel: 1, memberLevelInfoLevel: 1,
memberLevelInfoName: 1, memberLevelInfoName: 1,
levelName: 1, levelName: 1,
dataTime: 1, dataTime: 1,
userShowFlag: 1, userShowFlag: 1,
sysShowFlag: 1, sysShowFlag: 1,
timeToUpdate: 1, timeToUpdate: 1,
nickName: 1, nickName: 1,
specialTitle: 1, specialTitle: 1,
levelNameNew: 1, levelNameNew: 1,
userShowFlagNew: 1, userShowFlagNew: 1,
msgNeedField: 1, msgNeedField: 1,
cmdUinFlagExt3Grocery: 1, cmdUinFlagExt3Grocery: 1,
memberIcon: 1, memberIcon: 1,
memberInfoSeq: 1 memberInfoSeq: 1
} }
} }
); );
} }
} }

View File

@ -253,24 +253,6 @@ export class NTQQUserApi {
async getUidByUinV1(Uin: string) { async getUidByUinV1(Uin: string) {
// 通用转换开始尝试 // 通用转换开始尝试
let uid = (await this.context.session.getUixConvertService().getUid([Uin])).uidInfo.get(Uin); let uid = (await this.context.session.getUixConvertService().getUid([Uin])).uidInfo.get(Uin);
// Uid 好友转
if (!uid) {
Array.from(friends.values()).forEach((t) => {
if (t.uin == Uin) {
uid = t.uid;
}
});
}
//Uid 群友列表转
if (!uid) {
for (let groupMembersList of groupMembers.values()) {
for (let GroupMember of groupMembersList.values()) {
if (GroupMember.uin == Uin) {
uid = GroupMember.uid;
}
}
}
}
if (!uid) { if (!uid) {
let unveifyUid = (await this.getUserDetailInfoByUin(Uin)).info.uid;//从QQ Native 特殊转换 方法三 let unveifyUid = (await this.getUserDetailInfoByUin(Uin)).info.uid;//从QQ Native 特殊转换 方法三
if (unveifyUid.indexOf("*") == -1) { if (unveifyUid.indexOf("*") == -1) {
@ -287,18 +269,9 @@ export class NTQQUserApi {
[Uid] [Uid]
); );
let uin = ret.uinInfo.get(Uid); let uin = ret.uinInfo.get(Uid);
if (!uin) {
//从Buddy缓存获取Uin
Array.from(friends.values()).forEach((t) => {
if (t.uid == Uid) {
uin = t.uin;
}
})
}
if (!uin) { if (!uin) {
uin = (await this.getUserDetailInfo(Uid)).uin; //从QQ Native 转换 uin = (await this.getUserDetailInfo(Uid)).uin; //从QQ Native 转换
} }
// if (!uin) { // if (!uin) {
// uin = (await NTQQFriendApi.getFriends(false)).find((t) => { t.uid == Uid })?.uin; //从QQ Native 缓存转换 // uin = (await NTQQFriendApi.getFriends(false)).find((t) => { t.uid == Uid })?.uin; //从QQ Native 缓存转换
// } // }