chore: 解耦

This commit is contained in:
手瓜一十雪 2024-08-22 13:46:47 +08:00
parent b4e9d61871
commit 40193e4edc
2 changed files with 33 additions and 26 deletions

View File

@ -2,6 +2,7 @@ import { GrayTipElement, NapCatCore } from '@/core';
import { NapCatOneBot11Adapter } from '@/onebot'; import { NapCatOneBot11Adapter } from '@/onebot';
import { OB11GroupBanEvent } from '../event/notice/OB11GroupBanEvent'; import { OB11GroupBanEvent } from '../event/notice/OB11GroupBanEvent';
import { OB11GroupIncreaseEvent } from '../event/notice/OB11GroupIncreaseEvent'; import { OB11GroupIncreaseEvent } from '../event/notice/OB11GroupIncreaseEvent';
import { OB11GroupDecreaseEvent } from '../event/notice/OB11GroupDecreaseEvent';
export class OneBotGroupApi { export class OneBotGroupApi {
obContext: NapCatOneBot11Adapter; obContext: NapCatOneBot11Adapter;
@ -59,4 +60,21 @@ export class OneBotGroupApi {
} }
return undefined; return undefined;
} }
async parseGroupKickEvent(GroupCode: string, grayTipElement: GrayTipElement) {
const NTQQGroupApi = this.coreContext.apis.GroupApi;
const NTQQUserApi = this.coreContext.apis.UserApi;
let groupElement = grayTipElement?.groupElement;
if (!groupElement) return undefined;
const adminUin = (await NTQQGroupApi.getGroupMember(GroupCode, groupElement.adminUid))?.uin || (await NTQQUserApi.getUidByUinV2(groupElement.adminUid));
if (adminUin) {
return new OB11GroupDecreaseEvent(
this.coreContext,
parseInt(GroupCode),
parseInt(this.coreContext.selfInfo.uin),
parseInt(adminUin),
'kick_me'
);
}
return undefined;
}
} }

View File

@ -417,10 +417,8 @@ export class OB11Constructor {
} }
for (const element of msg.elements) { for (const element of msg.elements) {
const grayTipElement = element.grayTipElement; if (element.grayTipElement && element.grayTipElement.groupElement) {
const groupElement = grayTipElement?.groupElement; const groupElement = element.grayTipElement.groupElement;
if (!element.grayTipElement) continue;
if (groupElement) {
if (groupElement.type == TipGroupElementType.memberIncrease) { if (groupElement.type == TipGroupElementType.memberIncrease) {
let MemberIncreaseEvent = await obContext.apiContext.GroupApi.parseGroupMemberIncreaseEvent(msg.peerUid, element.grayTipElement); let MemberIncreaseEvent = await obContext.apiContext.GroupApi.parseGroupMemberIncreaseEvent(msg.peerUid, element.grayTipElement);
if (MemberIncreaseEvent) return MemberIncreaseEvent; if (MemberIncreaseEvent) return MemberIncreaseEvent;
@ -428,19 +426,10 @@ export class OB11Constructor {
let BanEvent = await obContext.apiContext.GroupApi.parseGroupBanEvent(msg.peerUid, element.grayTipElement); let BanEvent = await obContext.apiContext.GroupApi.parseGroupBanEvent(msg.peerUid, element.grayTipElement);
if (BanEvent) return BanEvent; if (BanEvent) return BanEvent;
} else if (groupElement.type == TipGroupElementType.kicked) { } else if (groupElement.type == TipGroupElementType.kicked) {
logger.logDebug(`收到我被踢出或退群提示, 群${msg.peerUid}`, groupElement);
NTQQGroupApi.quitGroup(msg.peerUid).then(); NTQQGroupApi.quitGroup(msg.peerUid).then();
try { try {
const adminUin = (await NTQQGroupApi.getGroupMember(msg.peerUid, groupElement.adminUid))?.uin || (await NTQQUserApi.getUidByUinV2(groupElement.adminUid)); let KickEvent = await obContext.apiContext.GroupApi.parseGroupKickEvent(msg.peerUid, element.grayTipElement);
if (adminUin) { if (KickEvent) return KickEvent;
return new OB11GroupDecreaseEvent(
core,
parseInt(msg.peerUid),
parseInt(core.selfInfo.uin),
parseInt(adminUin),
'kick_me'
);
}
} catch (e) { } catch (e) {
return new OB11GroupDecreaseEvent( return new OB11GroupDecreaseEvent(
core, core,
@ -463,12 +452,12 @@ export class OB11Constructor {
} }
); );
} }
if (grayTipElement) { if (element.grayTipElement) {
if (grayTipElement.xmlElement?.templId === '10382') { if (element.grayTipElement.xmlElement?.templId === '10382') {
const emojiLikeData = new fastXmlParser.XMLParser({ const emojiLikeData = new fastXmlParser.XMLParser({
ignoreAttributes: false, ignoreAttributes: false,
attributeNamePrefix: '', attributeNamePrefix: '',
}).parse(grayTipElement.xmlElement.content); }).parse(element.grayTipElement.xmlElement.content);
logger.logDebug('收到表情回应我的消息', emojiLikeData); logger.logDebug('收到表情回应我的消息', emojiLikeData);
try { try {
const senderUin = emojiLikeData.gtip.qq.jp; const senderUin = emojiLikeData.gtip.qq.jp;
@ -500,9 +489,9 @@ export class OB11Constructor {
logger.logError('解析表情回应消息失败', e.stack); logger.logError('解析表情回应消息失败', e.stack);
} }
} }
if (grayTipElement.subElementType == NTGrayTipElementSubTypeV2.GRAYTIP_ELEMENT_SUBTYPE_XMLMSG) { if (element.grayTipElement.subElementType == NTGrayTipElementSubTypeV2.GRAYTIP_ELEMENT_SUBTYPE_XMLMSG) {
logger.logDebug('收到新人被邀请进群消息', grayTipElement); logger.logDebug('收到新人被邀请进群消息', element.grayTipElement);
const xmlElement = grayTipElement.xmlElement; const xmlElement = element.grayTipElement.xmlElement;
if (xmlElement?.content) { if (xmlElement?.content) {
const regex = /jp="(\d+)"/g; const regex = /jp="(\d+)"/g;
@ -526,9 +515,9 @@ export class OB11Constructor {
} }
} }
//代码歧义 GrayTipElementSubType.MEMBER_NEW_TITLE //代码歧义 GrayTipElementSubType.MEMBER_NEW_TITLE
else if (grayTipElement.subElementType == NTGrayTipElementSubTypeV2.GRAYTIP_ELEMENT_SUBTYPE_JSON) { else if (element.grayTipElement.subElementType == NTGrayTipElementSubTypeV2.GRAYTIP_ELEMENT_SUBTYPE_JSON) {
const json = JSON.parse(grayTipElement.jsonGrayTipElement.jsonStr); const json = JSON.parse(element.grayTipElement.jsonGrayTipElement.jsonStr);
if (grayTipElement.jsonGrayTipElement.busiId == 1061) { if (element.grayTipElement.jsonGrayTipElement.busiId == 1061) {
//判断业务类型 //判断业务类型
//Poke事件 //Poke事件
const pokedetail: any[] = json.items; const pokedetail: any[] = json.items;
@ -544,7 +533,7 @@ export class OB11Constructor {
); );
} }
} }
if (grayTipElement.jsonGrayTipElement.busiId == 2401) { if (element.grayTipElement.jsonGrayTipElement.busiId == 2401) {
const searchParams = new URL(json.items[0].jp).searchParams; const searchParams = new URL(json.items[0].jp).searchParams;
const msgSeq = searchParams.get('msgSeq')!; const msgSeq = searchParams.get('msgSeq')!;
const Group = searchParams.get('groupCode'); const Group = searchParams.get('groupCode');
@ -563,7 +552,7 @@ export class OB11Constructor {
); );
// 获取MsgSeq+Peer可获取具体消息 // 获取MsgSeq+Peer可获取具体消息
} }
if (grayTipElement.jsonGrayTipElement.busiId == 2407) { if (element.grayTipElement.jsonGrayTipElement.busiId == 2407) {
//下面得改 上面也是错的grayTipElement.subElementType == GrayTipElementSubType.MEMBER_NEW_TITLE //下面得改 上面也是错的grayTipElement.subElementType == GrayTipElementSubType.MEMBER_NEW_TITLE
const memberUin = json.items[1].param[0]; const memberUin = json.items[1].param[0];
const title = json.items[3].txt; const title = json.items[3].txt;