mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-07-19 12:03:37 +00:00
fix: 算了能用就行
This commit is contained in:
@@ -972,6 +972,7 @@ export class OneBotMsgApi {
|
|||||||
|
|
||||||
return { path, fileName: inputdata.name ?? fileName };
|
return { path, fileName: inputdata.name ?? fileName };
|
||||||
}
|
}
|
||||||
|
|
||||||
groupChangDecreseType2String(type: number): GroupDecreaseSubType {
|
groupChangDecreseType2String(type: number): GroupDecreaseSubType {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 130:
|
case 130:
|
||||||
@@ -985,36 +986,49 @@ export class OneBotMsgApi {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async waitGroupNotify(groupUin: string, memberUid?: string, operatorUid?: string) {
|
||||||
|
let groupRole = this.core.apis.GroupApi.groupMemberCache.get(groupUin)?.get(this.core.selfInfo.uid.toString())?.role;
|
||||||
|
let isAdminOrOwner = groupRole === 3 || groupRole === 4;
|
||||||
|
|
||||||
|
if (isAdminOrOwner && !operatorUid) {
|
||||||
|
let dataNotify: GroupNotify | undefined;
|
||||||
|
await this.core.eventWrapper.registerListen('NodeIKernelGroupListener/onGroupNotifiesUpdated',
|
||||||
|
(doubt, notifies) => {
|
||||||
|
for (const notify of notifies) {
|
||||||
|
if (notify.group.groupCode === groupUin && notify.user1.uid === memberUid) {
|
||||||
|
dataNotify = notify;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}, 1, 1000).catch(undefined);
|
||||||
|
if (dataNotify) {
|
||||||
|
return !dataNotify.actionUser.uid ? dataNotify.user2.uid : dataNotify.actionUser.uid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return operatorUid;
|
||||||
|
}
|
||||||
|
|
||||||
async parseSysMessage(msg: number[]) {
|
async parseSysMessage(msg: number[]) {
|
||||||
const SysMessage = new NapProtoMsg(PushMsgBody).decode(Uint8Array.from(msg));
|
const SysMessage = new NapProtoMsg(PushMsgBody).decode(Uint8Array.from(msg));
|
||||||
if (SysMessage.contentHead.type == 33 && SysMessage.body?.msgContent) {
|
if (SysMessage.contentHead.type == 85 && SysMessage.body?.msgContent) {
|
||||||
|
const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent);
|
||||||
|
return new OB11GroupIncreaseEvent(
|
||||||
|
this.core,
|
||||||
|
groupChange.groupUin,
|
||||||
|
+this.core.selfInfo.uin,
|
||||||
|
groupChange.memberUid ? +await this.core.apis.UserApi.getUinByUidV2(groupChange.memberUid) : 0,
|
||||||
|
'approve'
|
||||||
|
);
|
||||||
|
} else if (SysMessage.contentHead.type == 33 && SysMessage.body?.msgContent) {
|
||||||
const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent);
|
const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent);
|
||||||
this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString()).then().catch();
|
this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString()).then().catch();
|
||||||
let operatorUid = groupChange.operatorInfo ? Buffer.from(groupChange.operatorInfo).toString() : '';
|
let operatorUid = await this.waitGroupNotify(
|
||||||
|
groupChange.groupUin.toString(),
|
||||||
let groupRole = this.core.apis.GroupApi.groupMemberCache.get(groupChange.groupUin.toString())?.get(this.core.selfInfo.uid.toString())?.role;
|
groupChange.memberUid,
|
||||||
let isAdminOrOwner = groupRole === 3 || groupRole === 4;
|
groupChange.operatorInfo ? Buffer.from(groupChange.operatorInfo).toString() : ''
|
||||||
|
);
|
||||||
console.log(Buffer.from(msg).toString('hex'));
|
|
||||||
|
|
||||||
if (isAdminOrOwner && !operatorUid) {
|
|
||||||
let dataNotify: GroupNotify | undefined;
|
|
||||||
await this.core.eventWrapper.registerListen('NodeIKernelGroupListener/onGroupNotifiesUpdated',
|
|
||||||
(doubt, notifies) => {
|
|
||||||
for (const notify of notifies) {
|
|
||||||
if (notify.group.groupCode === groupChange.groupUin.toString() && notify.user1.uid === groupChange.memberUid) {
|
|
||||||
dataNotify = notify;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}, 1, 1000).catch(undefined);
|
|
||||||
if (dataNotify) {
|
|
||||||
operatorUid = !!dataNotify.actionUser.uid ? dataNotify.actionUser.uid :dataNotify.user2.uid;
|
|
||||||
}
|
|
||||||
console.log(dataNotify);
|
|
||||||
}
|
|
||||||
|
|
||||||
return new OB11GroupIncreaseEvent(
|
return new OB11GroupIncreaseEvent(
|
||||||
this.core,
|
this.core,
|
||||||
groupChange.groupUin,
|
groupChange.groupUin,
|
||||||
@@ -1022,34 +1036,17 @@ export class OneBotMsgApi {
|
|||||||
operatorUid ? +await this.core.apis.UserApi.getUinByUidV2(operatorUid) : 0,
|
operatorUid ? +await this.core.apis.UserApi.getUinByUidV2(operatorUid) : 0,
|
||||||
groupChange.decreaseType == 131 ? 'invite' : 'approve',
|
groupChange.decreaseType == 131 ? 'invite' : 'approve',
|
||||||
);
|
);
|
||||||
|
|
||||||
} else if (SysMessage.contentHead.type == 34 && SysMessage.body?.msgContent) {
|
} else if (SysMessage.contentHead.type == 34 && SysMessage.body?.msgContent) {
|
||||||
const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent);
|
const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent);
|
||||||
// 自身被踢出时operatorInfo会是一个protobuf 否则大多数情况为一个string
|
// 自身被踢出时operatorInfo会是一个protobuf 否则大多数情况为一个string
|
||||||
let operatorUid = groupChange.decreaseType === 3 && groupChange.operatorInfo ?
|
let operatorUid = await this.waitGroupNotify(
|
||||||
new NapProtoMsg(GroupChangeInfo).decode(groupChange.operatorInfo).operator?.operatorUid :
|
groupChange.groupUin.toString(),
|
||||||
groupChange.operatorInfo?.toString();
|
groupChange.memberUid,
|
||||||
let groupRole = this.core.apis.GroupApi.groupMemberCache.get(groupChange.groupUin.toString())?.get(this.core.selfInfo.uid.toString())?.role;
|
groupChange.decreaseType === 3 && groupChange.operatorInfo ?
|
||||||
let isAdminOrOwner = groupRole === 3 || groupRole === 4;
|
new NapProtoMsg(GroupChangeInfo).decode(groupChange.operatorInfo).operator?.operatorUid :
|
||||||
|
groupChange.operatorInfo?.toString()
|
||||||
console.log(Buffer.from(msg).toString('hex'));
|
);
|
||||||
if (isAdminOrOwner && !operatorUid) {
|
|
||||||
let dataNotify: GroupNotify | undefined;
|
|
||||||
await this.core.eventWrapper.registerListen('NodeIKernelGroupListener/onGroupNotifiesUpdated',
|
|
||||||
(doubt, notifies) => {
|
|
||||||
for (const notify of notifies) {
|
|
||||||
if (notify.group.groupCode === groupChange.groupUin.toString() && notify.user1.uid === groupChange.memberUid) {
|
|
||||||
dataNotify = notify;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}, 1, 1000).catch(undefined);
|
|
||||||
console.log(dataNotify);
|
|
||||||
if (dataNotify) {
|
|
||||||
operatorUid = !!dataNotify.actionUser.uid ? dataNotify.actionUser.uid :dataNotify.user2.uid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (groupChange.memberUid === this.core.selfInfo.uid) {
|
if (groupChange.memberUid === this.core.selfInfo.uid) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.core.apis.GroupApi.groupMemberCache.delete(groupChange.groupUin.toString());
|
this.core.apis.GroupApi.groupMemberCache.delete(groupChange.groupUin.toString());
|
||||||
@@ -1149,8 +1146,7 @@ export class OneBotMsgApi {
|
|||||||
'',
|
'',
|
||||||
request_seq
|
request_seq
|
||||||
);
|
);
|
||||||
}
|
} else if (SysMessage.contentHead.type == 528 && SysMessage.contentHead.subType == 39 && SysMessage.body?.msgContent) {
|
||||||
else if (SysMessage.contentHead.type == 528 && SysMessage.contentHead.subType == 39 && SysMessage.body?.msgContent) {
|
|
||||||
return await this.obContext.apis.UserApi.parseLikeEvent(SysMessage.body?.msgContent);
|
return await this.obContext.apis.UserApi.parseLikeEvent(SysMessage.body?.msgContent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user