mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2024-11-21 09:36:35 +00:00
update: LL
This commit is contained in:
parent
05b05fd74e
commit
b15e1174d6
BIN
external/LiteLoaderWrapper.zip
vendored
BIN
external/LiteLoaderWrapper.zip
vendored
Binary file not shown.
@ -21,28 +21,31 @@ class GetGroupMemberInfo extends BaseAction<Payload, OB11GroupMember> {
|
|||||||
actionName = ActionName.GetGroupMemberInfo;
|
actionName = ActionName.GetGroupMemberInfo;
|
||||||
payloadSchema = SchemaData;
|
payloadSchema = SchemaData;
|
||||||
|
|
||||||
|
private parseBoolean(value: boolean | string): boolean {
|
||||||
|
return typeof value === 'string' ? value === 'true' : value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async getUid(userId: string | number): Promise<string> {
|
||||||
|
const uid = await this.core.apis.UserApi.getUidByUinV2(userId.toString());
|
||||||
|
if (!uid) throw new Error(`Uin2Uid Error: 用户ID ${userId} 不存在`);
|
||||||
|
return uid;
|
||||||
|
}
|
||||||
|
|
||||||
async _handle(payload: Payload) {
|
async _handle(payload: Payload) {
|
||||||
const isNocache = typeof payload.no_cache === 'string' ? payload.no_cache === 'true' : !!payload.no_cache;
|
const isNocache = this.parseBoolean(payload.no_cache ?? true);
|
||||||
const uid = await this.core.apis.UserApi.getUidByUinV2(payload.user_id.toString());
|
const uid = await this.getUid(payload.user_id);
|
||||||
if (!uid) throw new Error(`Uin2Uid Error ${payload.user_id}不存在`);
|
const [member, info] = await Promise.all([
|
||||||
const [member, info] = await Promise.allSettled([
|
|
||||||
this.core.apis.GroupApi.getGroupMemberEx(payload.group_id.toString(), uid, isNocache),
|
this.core.apis.GroupApi.getGroupMemberEx(payload.group_id.toString(), uid, isNocache),
|
||||||
this.core.apis.UserApi.getUserDetailInfo(uid),
|
this.core.apis.UserApi.getUserDetailInfo(uid),
|
||||||
]);
|
]);
|
||||||
if (member.status !== 'fulfilled') throw new Error(`群(${payload.group_id})成员${payload.user_id}获取失败 ${member.reason}`);
|
if (!member) throw new Error(`群(${payload.group_id})成员${payload.user_id}不存在`);
|
||||||
if (!member.value) throw new Error(`群(${payload.group_id})成员${payload.user_id}不存在`);
|
if (info) {
|
||||||
if (info.status === 'fulfilled') {
|
Object.assign(member, info);
|
||||||
Object.assign(member.value, info.value);
|
|
||||||
} else {
|
} else {
|
||||||
this.core.context.logger.logDebug(`获取群成员详细信息失败, 只能返回基础信息 ${info.reason}`);
|
this.core.context.logger.logDebug(`获取群成员详细信息失败, 只能返回基础信息`);
|
||||||
}
|
}
|
||||||
const date = Math.round(Date.now() / 1000);
|
return OB11Entities.groupMember(payload.group_id.toString(), member as GroupMember);
|
||||||
const retMember = OB11Entities.groupMember(payload.group_id.toString(), member.value as GroupMember);
|
|
||||||
const Member = await this.core.apis.GroupApi.getGroupMember(payload.group_id.toString(), retMember.user_id);
|
|
||||||
retMember.last_sent_time = parseInt(Member?.lastSpeakTime ?? date.toString());
|
|
||||||
retMember.join_time = parseInt(Member?.joinTime ?? date.toString());
|
|
||||||
return retMember;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default GetGroupMemberInfo;
|
export default GetGroupMemberInfo;
|
@ -3,7 +3,6 @@ import { OB11Entities } from '@/onebot/entities';
|
|||||||
import BaseAction from '../BaseAction';
|
import BaseAction from '../BaseAction';
|
||||||
import { ActionName } from '../types';
|
import { ActionName } from '../types';
|
||||||
import { FromSchema, JSONSchema } from 'json-schema-to-ts';
|
import { FromSchema, JSONSchema } from 'json-schema-to-ts';
|
||||||
import { calcQQLevel } from '@/common/helper';
|
|
||||||
|
|
||||||
const SchemaData = {
|
const SchemaData = {
|
||||||
type: 'object',
|
type: 'object',
|
||||||
@ -16,61 +15,19 @@ const SchemaData = {
|
|||||||
|
|
||||||
type Payload = FromSchema<typeof SchemaData>;
|
type Payload = FromSchema<typeof SchemaData>;
|
||||||
|
|
||||||
class GetGroupMemberList extends BaseAction<Payload, OB11GroupMember[]> {
|
export class GetGroupMemberList extends BaseAction<Payload, OB11GroupMember[]> {
|
||||||
actionName = ActionName.GetGroupMemberList;
|
actionName = ActionName.GetGroupMemberList;
|
||||||
payloadSchema = SchemaData;
|
payloadSchema = SchemaData;
|
||||||
|
|
||||||
async _handle(payload: Payload) {
|
async _handle(payload: Payload) {
|
||||||
const groupMembers = await this.core.apis.GroupApi.getGroupMembersV2(payload.group_id.toString());
|
const groupIdStr = payload.group_id.toString();
|
||||||
const groupMembersArr = Array.from(groupMembers.values());
|
const groupMembers = await this.core.apis.GroupApi.getGroupMembersV2(groupIdStr);
|
||||||
const uids = groupMembersArr.map(item => item.uid);
|
|
||||||
//let CoreAndBase = await this.core.apis.GroupApi.getCoreAndBaseInfo(uids)
|
|
||||||
let _groupMembers = groupMembersArr.map(item => {
|
|
||||||
return OB11Entities.groupMember(payload.group_id.toString(), item);
|
|
||||||
});
|
|
||||||
|
|
||||||
const MemberMap: Map<number, OB11GroupMember> = new Map<number, OB11GroupMember>();
|
const memberPromises = Array.from(groupMembers.values()).map(item =>
|
||||||
const date = Math.round(Date.now() / 1000);
|
OB11Entities.groupMember(groupIdStr, item)
|
||||||
|
);
|
||||||
for (let i = 0, len = _groupMembers.length; i < len; i++) {
|
const _groupMembers = await Promise.all(memberPromises);
|
||||||
// 保证基础数据有这个 同时避免群管插件过于依赖这个杀了
|
const MemberMap = new Map(_groupMembers.map(member => [member.user_id, member]));
|
||||||
const Member = await this.core.apis.GroupApi.getGroupMember(payload.group_id.toString(), _groupMembers[i].user_id);
|
return Array.from(MemberMap.values());
|
||||||
_groupMembers[i].join_time = +(Member?.joinTime ?? date);
|
|
||||||
_groupMembers[i].last_sent_time = +(Member?.lastSpeakTime ?? date);
|
|
||||||
MemberMap.set(_groupMembers[i].user_id, _groupMembers[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const selfRole = groupMembers.get(this.core.selfInfo.uid)?.role;
|
|
||||||
const isPrivilege = selfRole === 3 || selfRole === 4;
|
|
||||||
|
|
||||||
|
|
||||||
if (isPrivilege) {
|
|
||||||
try {
|
|
||||||
const webGroupMembers = await this.core.apis.WebApi.getGroupMembers(payload.group_id.toString());
|
|
||||||
for (let i = 0, len = webGroupMembers.length; i < len; i++) {
|
|
||||||
if (!webGroupMembers[i]?.uin) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
const MemberData = MemberMap.get(webGroupMembers[i]?.uin);
|
|
||||||
if (MemberData) {
|
|
||||||
MemberData.join_time = webGroupMembers[i]?.join_time;
|
|
||||||
MemberData.last_sent_time = webGroupMembers[i]?.last_speak_time;
|
|
||||||
MemberData.qage = webGroupMembers[i]?.qage;
|
|
||||||
MemberData.level = webGroupMembers[i]?.lv.level.toString();
|
|
||||||
MemberMap.set(webGroupMembers[i]?.uin, MemberData);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
const logger = this.core.context.logger;
|
|
||||||
logger.logError.bind(logger)('GetGroupMemberList', e);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
_groupMembers = Array.from(MemberMap.values());
|
|
||||||
return _groupMembers;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default GetGroupMemberList;
|
|
@ -3,7 +3,6 @@ import GetLoginInfo from './system/GetLoginInfo';
|
|||||||
import GetFriendList from './user/GetFriendList';
|
import GetFriendList from './user/GetFriendList';
|
||||||
import GetGroupList from './group/GetGroupList';
|
import GetGroupList from './group/GetGroupList';
|
||||||
import GetGroupInfo from './group/GetGroupInfo';
|
import GetGroupInfo from './group/GetGroupInfo';
|
||||||
import GetGroupMemberList from './group/GetGroupMemberList';
|
|
||||||
import GetGroupMemberInfo from './group/GetGroupMemberInfo';
|
import GetGroupMemberInfo from './group/GetGroupMemberInfo';
|
||||||
import SendGroupMsg from './group/SendGroupMsg';
|
import SendGroupMsg from './group/SendGroupMsg';
|
||||||
import SendPrivateMsg from './msg/SendPrivateMsg';
|
import SendPrivateMsg from './msg/SendPrivateMsg';
|
||||||
@ -90,6 +89,7 @@ import { GetRkey } from './extends/GetRkey';
|
|||||||
import { SetSpecialTittle } from './extends/SetSpecialTittle';
|
import { SetSpecialTittle } from './extends/SetSpecialTittle';
|
||||||
import { UploadForwardMsg } from "@/onebot/action/extends/UploadForwardMsg";
|
import { UploadForwardMsg } from "@/onebot/action/extends/UploadForwardMsg";
|
||||||
import { GetGroupShutList } from './group/GetGroupShutList';
|
import { GetGroupShutList } from './group/GetGroupShutList';
|
||||||
|
import { GetGroupMemberList } from './group/GetGroupMemberList';
|
||||||
|
|
||||||
|
|
||||||
export type ActionMap = Map<string, BaseAction<any, any>>;
|
export type ActionMap = Map<string, BaseAction<any, any>>;
|
||||||
|
@ -68,8 +68,8 @@ export class OB11Entities {
|
|||||||
area: '',
|
area: '',
|
||||||
level: member.memberRealLevel ?? '0',
|
level: member.memberRealLevel ?? '0',
|
||||||
qq_level: member.qqLevel && calcQQLevel(member.qqLevel) || 0,
|
qq_level: member.qqLevel && calcQQLevel(member.qqLevel) || 0,
|
||||||
join_time: 0, // 暂时没法获取
|
join_time: +member.joinTime,
|
||||||
last_sent_time: 0, // 暂时没法获取
|
last_sent_time: +member.lastSpeakTime,
|
||||||
title_expire_time: 0,
|
title_expire_time: 0,
|
||||||
unfriendly: false,
|
unfriendly: false,
|
||||||
card_changeable: true,
|
card_changeable: true,
|
||||||
@ -77,6 +77,7 @@ export class OB11Entities {
|
|||||||
shut_up_timestamp: member.shutUpTime,
|
shut_up_timestamp: member.shutUpTime,
|
||||||
role: OB11Entities.groupMemberRole(member.role),
|
role: OB11Entities.groupMemberRole(member.role),
|
||||||
title: member.memberSpecialTitle || '',
|
title: member.memberSpecialTitle || '',
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user