refactor: poke

This commit is contained in:
手瓜一十雪 2024-07-13 19:10:47 +08:00
parent 590b622e5f
commit b1956d2a37
3 changed files with 52 additions and 19 deletions

View File

@ -43,7 +43,8 @@ import { deleteGroup, getGroupMember, groupMembers, selfInfo, tempGroupCodeMap }
import { NTQQFileApi, NTQQGroupApi, NTQQMsgApi, NTQQUserApi } from '@/core/apis'; import { NTQQFileApi, NTQQGroupApi, NTQQMsgApi, NTQQUserApi } from '@/core/apis';
import { OB11GroupMsgEmojiLikeEvent } from '@/onebot11/event/notice/OB11MsgEmojiLikeEvent'; import { OB11GroupMsgEmojiLikeEvent } from '@/onebot11/event/notice/OB11MsgEmojiLikeEvent';
import { napCatCore } from '@/core'; import { napCatCore } from '@/core';
import { OB11GroupPokeEvent } from './event/notice/OB11PokeEvent'; import { OB11FriendPokeEvent, OB11GroupPokeEvent } from './event/notice/OB11PokeEvent';
import { OB11BaseNoticeEvent } from './event/notice/OB11BaseNoticeEvent';
export class OB11Constructor { export class OB11Constructor {
@ -286,7 +287,30 @@ export class OB11Constructor {
resMsg.raw_message = resMsg.raw_message.trim(); resMsg.raw_message = resMsg.raw_message.trim();
return resMsg; return resMsg;
} }
static async PrivateEvent(msg: RawMessage): Promise<OB11BaseNoticeEvent | undefined> {
if (msg.chatType !== ChatType.friend) {
return;
}
for (const element of msg.elements) {
if (element.grayTipElement) {
if (element.grayTipElement.subElementType == GrayTipElementSubType.MEMBER_NEW_TITLE) {
const json = JSON.parse(element.grayTipElement.jsonGrayTipElement.jsonStr);
if (element.grayTipElement.jsonGrayTipElement.busiId == 1061) {
//判断业务类型
//Poke事件
let pokedetail: any[] = json.items;
//筛选item带有uid的元素
pokedetail = pokedetail.filter(item => item.uid);
//console.log("[NapCat] 群拍一拍 群:", pokedetail, parseInt(msg.peerUid), " ", await NTQQUserApi.getUinByUid(pokedetail[0].uid), "拍了拍", await NTQQUserApi.getUinByUid(pokedetail[1].uid));
if (pokedetail.length == 2) {
return new OB11FriendPokeEvent(parseInt((await NTQQUserApi.getUinByUid(pokedetail[1].uid))!), parseInt((await NTQQUserApi.getUinByUid(pokedetail[0].uid))!));
}
}
//下面得改 上面也是错的grayTipElement.subElementType == GrayTipElementSubType.MEMBER_NEW_TITLE
}
}
}
}
static async GroupEvent(msg: RawMessage): Promise<OB11GroupNoticeEvent | undefined> { static async GroupEvent(msg: RawMessage): Promise<OB11GroupNoticeEvent | undefined> {
//log("group msg", msg); //log("group msg", msg);
if (msg.chatType !== ChatType.group) { if (msg.chatType !== ChatType.group) {

View File

@ -1,6 +1,6 @@
import { OB11BaseNoticeEvent } from './OB11BaseNoticeEvent'; import { OB11BaseNoticeEvent } from './OB11BaseNoticeEvent';
export abstract class OB11GroupNoticeEvent extends OB11BaseNoticeEvent { export abstract class OB11GroupNoticeEvent extends OB11BaseNoticeEvent {
group_id: number; group_id: number = 0;
user_id: number; user_id: number = 0;
} }

View File

@ -48,7 +48,7 @@ export interface LineDevice {
export let DeviceList = new Array<LineDevice>(); export let DeviceList = new Array<LineDevice>();
//peer->cached(boolen) //peer->cached(boolen)
const PokeCache = new Map<string, boolean>(); // const PokeCache = new Map<string, boolean>();
export class NapCatOnebot11 { export class NapCatOnebot11 {
private bootTime: number = Date.now() / 1000; // 秒 private bootTime: number = Date.now() / 1000; // 秒
@ -121,20 +121,20 @@ export class NapCatOnebot11 {
const MsgType = sysMsg.body[0].msgType; const MsgType = sysMsg.body[0].msgType;
const subType0 = sysMsg.body[0].subType0; const subType0 = sysMsg.body[0].subType0;
const subType1 = sysMsg.body[0].subType1; const subType1 = sysMsg.body[0].subType1;
let pokeEvent: OB11FriendPokeEvent | OB11GroupPokeEvent; // let pokeEvent: OB11FriendPokeEvent | OB11GroupPokeEvent;
//console.log(peeruid); // //console.log(peeruid);
if (MsgType == 528 && subType0 == 290 && hex.length < 250 && hex.endsWith('04')) { // if (MsgType == 528 && subType0 == 290 && hex.length < 250 && hex.endsWith('04')) {
// 防止上报两次 私聊戳一戳 // // 防止上报两次 私聊戳一戳
if (PokeCache.has(peeruid)) { // if (PokeCache.has(peeruid)) {
//log('[私聊] 用户 ', peeruin, ' 对你戳一戳'); // //log('[私聊] 用户 ', peeruin, ' 对你戳一戳');
pokeEvent = new OB11FriendPokeEvent(parseInt(selfInfo.uin), peeruin); // pokeEvent = new OB11FriendPokeEvent(parseInt(selfInfo.uin), peeruin);
postOB11Event(pokeEvent); // postOB11Event(pokeEvent);
} // }
PokeCache.set(peeruid, false); // PokeCache.set(peeruid, false);
setTimeout(() => { // setTimeout(() => {
PokeCache.delete(peeruid); // PokeCache.delete(peeruid);
}, 1000); // }, 1000);
} // }
// if (MsgType == 732 && subType0 == 20 && hex.length < 150 && hex.endsWith('04')) { // if (MsgType == 732 && subType0 == 20 && hex.length < 150 && hex.endsWith('04')) {
// // 防止上报两次 群聊戳一戳 // // 防止上报两次 群聊戳一戳
// if (PokeCache.has(peeruid)) { // if (PokeCache.has(peeruid)) {
@ -331,12 +331,21 @@ export class NapCatOnebot11 {
postOB11Event(msg); postOB11Event(msg);
// log("post msg", msg) // log("post msg", msg)
}).catch(e => logError('constructMessage error: ', e)); }).catch(e => logError('constructMessage error: ', e));
OB11Constructor.GroupEvent(message).then(groupEvent => { OB11Constructor.GroupEvent(message).then(groupEvent => {
if (groupEvent) { if (groupEvent) {
// log("post group event", groupEvent); // log("post group event", groupEvent);
postOB11Event(groupEvent); postOB11Event(groupEvent);
} }
}).catch(e => logError('constructGroupEvent error: ', e)); }).catch(e => logError('constructGroupEvent error: ', e));
OB11Constructor.PrivateEvent(message).then(privateEvent => {
if (privateEvent) {
// log("post private event", privateEvent);
postOB11Event(privateEvent);
}
});
} }
} }
async SetConfig(NewOb11: OB11Config) { async SetConfig(NewOb11: OB11Config) {