mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2024-11-21 09:36:35 +00:00
feat: complete group features
This commit is contained in:
parent
d3c0d298c4
commit
fa965a74a9
@ -1,10 +1,10 @@
|
|||||||
import { GroupMemberRole, NapCatCore, Sex } from '@/core';
|
import { GroupMemberRole, NapCatCore, Sex } from '@/core';
|
||||||
import { NapCatLaanaAdapter } from '@/laana';
|
import { NapCatLaanaAdapter } from '@/laana';
|
||||||
import {
|
import {
|
||||||
LaanaUserEntity,
|
|
||||||
LaanaUserEntity_Sex,
|
|
||||||
LaanaUserEntity_GroupRoleData_PermissionLevel as PermLevel,
|
|
||||||
LaanaFile,
|
LaanaFile,
|
||||||
|
LaanaUserEntity,
|
||||||
|
LaanaUserEntity_GroupRoleData_PermissionLevel as PermLevel,
|
||||||
|
LaanaUserEntity_Sex,
|
||||||
SetGroupAdminPing_Operation,
|
SetGroupAdminPing_Operation,
|
||||||
} from '@laana-proto/def';
|
} from '@laana-proto/def';
|
||||||
import { LaanaActionHandler } from '@/laana/action/index';
|
import { LaanaActionHandler } from '@/laana/action/index';
|
||||||
@ -24,6 +24,10 @@ export class LaanaGroupActionImpl {
|
|||||||
member: await this.getGroupMemberInfo(groupCode, memberUin),
|
member: await this.getGroupMemberInfo(groupCode, memberUin),
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
getAllGroupMembersInfo: async ({ groupCode }) => ({
|
||||||
|
members: await this.getAllGroupMembersInfo(groupCode),
|
||||||
|
}),
|
||||||
|
|
||||||
setGroupName: async ({ groupCode, name }) => {
|
setGroupName: async ({ groupCode, name }) => {
|
||||||
await this.setGroupName(groupCode, name);
|
await this.setGroupName(groupCode, name);
|
||||||
return { success: true };
|
return { success: true };
|
||||||
@ -122,6 +126,32 @@ export class LaanaGroupActionImpl {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async getAllGroupMembersInfo(groupCode: string): Promise<LaanaUserEntity[]> {
|
||||||
|
return Array.from((await this.core.apis.GroupApi.getGroupMembersV2(groupCode)).values())
|
||||||
|
.map(value => ({
|
||||||
|
uin: value.uin,
|
||||||
|
nick: value.nick,
|
||||||
|
sex: value.sex === Sex.male ? LaanaUserEntity_Sex.MALE
|
||||||
|
: value.sex === Sex.female ? LaanaUserEntity_Sex.FEMALE
|
||||||
|
: LaanaUserEntity_Sex.UNKNOWN,
|
||||||
|
age: value.age,
|
||||||
|
qid: value.qid,
|
||||||
|
roleData: {
|
||||||
|
oneofKind: 'groupRoleData',
|
||||||
|
groupRoleData: {
|
||||||
|
groupNick: value.cardName || undefined,
|
||||||
|
permissionLevel: value.role === GroupMemberRole.normal ? PermLevel.NORMAL :
|
||||||
|
value.role === GroupMemberRole.admin ? PermLevel.ADMIN :
|
||||||
|
value.role === GroupMemberRole.owner ? PermLevel.OWNER :
|
||||||
|
PermLevel.FALLBACK,
|
||||||
|
isRobot: value.isRobot,
|
||||||
|
lastSpeakTime: BigInt(value.lastSpeakTime), // TODO: multiple by 1000?
|
||||||
|
shutUpTime: BigInt(value.shutUpTime), // TODO: multiple by 1000?
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get group info.
|
* Get group info.
|
||||||
* @param groupCode Group code.
|
* @param groupCode Group code.
|
||||||
@ -176,6 +206,20 @@ export class LaanaGroupActionImpl {
|
|||||||
return await this.core.apis.GroupApi.setMemberCard(groupCode, uid, newCardName);
|
return await this.core.apis.GroupApi.setMemberCard(groupCode, uid, newCardName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set group special title.
|
||||||
|
* @param groupCode Group code.
|
||||||
|
* @param uin Uin of the member.
|
||||||
|
* @param specialTitle The special title. If empty, will be unset.
|
||||||
|
*/
|
||||||
|
async setGroupSpecialTitle(groupCode: string, uin: string, specialTitle: string) {
|
||||||
|
const uid = await this.core.apis.UserApi.getUidByUinV2(uin);
|
||||||
|
if (!uid) {
|
||||||
|
throw new Error(`获取 ${uin} 对应 ${uid} 失败`);
|
||||||
|
}
|
||||||
|
return await this.core.apis.PacketApi.sendSetSpecialTittlePacket(groupCode, uid, specialTitle);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Shut up a group member.
|
* Shut up a group member.
|
||||||
* @param groupCode Group code.
|
* @param groupCode Group code.
|
||||||
@ -212,20 +256,6 @@ export class LaanaGroupActionImpl {
|
|||||||
return await this.core.apis.GroupApi.banGroup(groupCode, !lift);
|
return await this.core.apis.GroupApi.banGroup(groupCode, !lift);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Set group special title.
|
|
||||||
* @param groupCode Group code.
|
|
||||||
* @param uin Uin of the member.
|
|
||||||
* @param specialTitle The special title. If empty, will be unset.
|
|
||||||
*/
|
|
||||||
async setGroupSpecialTitle(groupCode: string, uin: string, specialTitle: string) {
|
|
||||||
const uid = await this.core.apis.UserApi.getUidByUinV2(uin);
|
|
||||||
if (!uid) {
|
|
||||||
throw new Error(`获取 ${uin} 对应 ${uid} 失败`);
|
|
||||||
}
|
|
||||||
return await this.core.apis.PacketApi.sendSetSpecialTittlePacket(groupCode, uid, specialTitle);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Kick a group member.
|
* Kick a group member.
|
||||||
* @param groupCode Group code.
|
* @param groupCode Group code.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user