mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2024-11-16 13:01:14 +00:00
chore: 解耦
This commit is contained in:
parent
b4e9d61871
commit
40193e4edc
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user