diff --git a/src/core/src/core.ts b/src/core/src/core.ts index 8d9fce2d..ae6515cb 100644 --- a/src/core/src/core.ts +++ b/src/core/src/core.ts @@ -1,4 +1,5 @@ import QQWrapper, { NodeIQQNTWrapperEngine, NodeIQQNTWrapperSession, NodeQQNTWrapperUtil } from '@/core/wrapper'; +import { DeviceList } from '@/onebot11/main'; import { NodeIKernelLoginService, NodeIKernelBuddyService, @@ -208,10 +209,17 @@ export class NapCatCore { } const msgListener = new MsgListener(); msgListener.onLineDev = (Devices: LineDevice[]) => { + DeviceList.splice(0, DeviceList.length); Devices.map((Device: LineDevice) => { - if (Device.clientType === 2) { - log('账号设备(' + Device.devUid + ') 在线状态变更'); - } + let DeviceData = { + app_id: Device.devUid, + device_name: Device.clientType.toString(), + device_kind: Device.clientType.toString(), + }; + DeviceList.push(DeviceData); + // if (Device.clientType === 2) { + // log('账号设备(' + Device.devUid + ') 在线状态变更'); + // } }); }; msgListener.onKickedOffLine = (Info: KickedOffLineInfo) => { diff --git a/src/core/tsconfig.json b/src/core/tsconfig.old.json similarity index 100% rename from src/core/tsconfig.json rename to src/core/tsconfig.old.json diff --git a/src/core/vite.config.ts b/src/core/vite.config.old.ts similarity index 100% rename from src/core/vite.config.ts rename to src/core/vite.config.old.ts diff --git a/src/onebot11/action/go-cqhttp/GetOnlineClient.ts b/src/onebot11/action/go-cqhttp/GetOnlineClient.ts index 3fab09e7..22937d15 100644 --- a/src/onebot11/action/go-cqhttp/GetOnlineClient.ts +++ b/src/onebot11/action/go-cqhttp/GetOnlineClient.ts @@ -3,6 +3,7 @@ import BaseAction from '../BaseAction'; import { ActionName } from '../types'; import { JSONSchema } from 'json-schema-to-ts'; import { NTQQSystemApi } from '@/core'; +import { sleep } from '@/common/utils/helper'; const SchemaData = { type: 'object', @@ -15,7 +16,8 @@ export class GetOnlineClient extends BaseAction> { actionName = ActionName.GetOnlineClient; protected async _handle(payload: void) { - //console.log(await NTQQSystemApi.getOnlineDev()); + NTQQSystemApi.getOnlineDev(); + await sleep(500); return DeviceList; } } diff --git a/src/onebot11/main.ts b/src/onebot11/main.ts index 132bfaaf..a44d8de8 100644 --- a/src/onebot11/main.ts +++ b/src/onebot11/main.ts @@ -22,7 +22,7 @@ import { ob11ReverseWebsockets } from '@/onebot11/server/ws/ReverseWebsocket'; import { getGroup, getGroupMember, groupMembers, selfInfo, tempGroupCodeMap } from '@/core/data'; import { BuddyListener, GroupListener, NodeIKernelBuddyListener } from '@/core/listeners'; import { OB11FriendRequestEvent } from '@/onebot11/event/request/OB11FriendRequest'; -import { NTQQGroupApi, NTQQUserApi, SignMusicWrapper } from '@/core/apis'; +import { NTQQUserApi } from '@/core/apis'; import { log, logDebug, logError, setLogSelfInfo } from '@/common/utils/log'; import { OB11GroupRequestEvent } from '@/onebot11/event/request/OB11GroupRequest'; import { OB11GroupAdminNoticeEvent } from '@/onebot11/event/notice/OB11GroupAdminNoticeEvent'; @@ -31,10 +31,6 @@ import { OB11FriendRecallNoticeEvent } from '@/onebot11/event/notice/OB11FriendR import { OB11GroupRecallNoticeEvent } from '@/onebot11/event/notice/OB11GroupRecallNoticeEvent'; import { logMessage, logNotice, logRequest } from '@/onebot11/log'; import { OB11Message } from '@/onebot11/types'; -import { OB11LifeCycleEvent } from './event/meta/OB11LifeCycleEvent'; -import { Data as SysData } from '@/proto/SysMessage'; -import { Data as DeviceData } from '@/proto/SysMessage.DeviceChange'; -import { OB11FriendPokeEvent, OB11GroupPokeEvent } from './event/notice/OB11PokeEvent'; import { isEqual } from '@/common/utils/helper'; import { MessageUnique } from '@/common/utils/MessageUnique'; @@ -89,109 +85,109 @@ export class NapCatOnebot11 { // Create MsgListener const msgListener = new MsgListener(); msgListener.onRecvSysMsg = async (protobufData: number[]) => { - function buf2hex(buffer: Buffer) { - return [...new Uint8Array(buffer)] - .map(x => x.toString(16).padStart(2, '0')) - .join(''); - } - // let Data: Data = { - // header: { - // GroupNumber: 0, - // GroupString: '', - // QQ: 0, - // Uid: '', - // }, - // Body: { - // MsgType: 0, - // SubType_0: 0, - // SubType_1: 0, - // MsgSeq: 0, - // Time: 0, - // MsgID: 0, - // Other: 0, + // function buf2hex(buffer: Buffer) { + // return [...new Uint8Array(buffer)] + // .map(x => x.toString(16).padStart(2, '0')) + // .join(''); + // } + // // let Data: Data = { + // // header: { + // // GroupNumber: 0, + // // GroupString: '', + // // QQ: 0, + // // Uid: '', + // // }, + // // Body: { + // // MsgType: 0, + // // SubType_0: 0, + // // SubType_1: 0, + // // MsgSeq: 0, + // // Time: 0, + // // MsgID: 0, + // // Other: 0, + // // } + // // }; + // try { + // // 生产环境会自己去掉 + // const hex = buf2hex(Buffer.from(protobufData)); + // //console.log(hex); + // const sysMsg = SysData.fromBinary(Buffer.from(protobufData)); + // const peeruin = sysMsg.header[0].peerNumber; + // const peeruid = sysMsg.header[0].peerString; + // const MsgType = sysMsg.body[0].msgType; + // const subType0 = sysMsg.body[0].subType0; + // const subType1 = sysMsg.body[0].subType1; + // // let pokeEvent: OB11FriendPokeEvent | OB11GroupPokeEvent; + // // //console.log(peeruid); + // // if (MsgType == 528 && subType0 == 290 && hex.length < 250 && hex.endsWith('04')) { + // // // 防止上报两次 私聊戳一戳 + // // if (PokeCache.has(peeruid)) { + // // //log('[私聊] 用户 ', peeruin, ' 对你戳一戳'); + // // pokeEvent = new OB11FriendPokeEvent(parseInt(selfInfo.uin), peeruin); + // // postOB11Event(pokeEvent); + // // } + // // PokeCache.set(peeruid, false); + // // setTimeout(() => { + // // PokeCache.delete(peeruid); + // // }, 1000); + // // } + // // if (MsgType == 732 && subType0 == 20 && hex.length < 150 && hex.endsWith('04')) { + // // // 防止上报两次 群聊戳一戳 + // // if (PokeCache.has(peeruid)) { + // // log('[群聊] 群组 ', peeruin, ' 戳一戳'); + // // pokeEvent = new OB11GroupPokeEvent(peeruin); + // // postOB11Event(pokeEvent); + // // } + // // PokeCache.set(peeruid, false); + // // setTimeout(() => { + // // PokeCache.delete(peeruid); + // // }, 1000); + // // } + // if (MsgType == 528 && subType0 == 349) { + // const sysDeviceMsg = DeviceData.fromBinary(Buffer.from(protobufData)); + // DeviceList = []; + // sysDeviceMsg.event[0].content[0].devices.forEach(device => { + // DeviceList.push({ + // app_id: '0', + // device_name: device.deviceName, + // device_kind: 'none' + // }); + // // log('[设备列表] 设备名称: ' + device.deviceName); + // }); // } - // }; - try { - // 生产环境会自己去掉 - const hex = buf2hex(Buffer.from(protobufData)); - //console.log(hex); - const sysMsg = SysData.fromBinary(Buffer.from(protobufData)); - const peeruin = sysMsg.header[0].peerNumber; - const peeruid = sysMsg.header[0].peerString; - const MsgType = sysMsg.body[0].msgType; - const subType0 = sysMsg.body[0].subType0; - const subType1 = sysMsg.body[0].subType1; - // let pokeEvent: OB11FriendPokeEvent | OB11GroupPokeEvent; - // //console.log(peeruid); - // if (MsgType == 528 && subType0 == 290 && hex.length < 250 && hex.endsWith('04')) { - // // 防止上报两次 私聊戳一戳 - // if (PokeCache.has(peeruid)) { - // //log('[私聊] 用户 ', peeruin, ' 对你戳一戳'); - // pokeEvent = new OB11FriendPokeEvent(parseInt(selfInfo.uin), peeruin); - // postOB11Event(pokeEvent); - // } - // PokeCache.set(peeruid, false); - // setTimeout(() => { - // PokeCache.delete(peeruid); - // }, 1000); - // } - // if (MsgType == 732 && subType0 == 20 && hex.length < 150 && hex.endsWith('04')) { - // // 防止上报两次 群聊戳一戳 - // if (PokeCache.has(peeruid)) { - // log('[群聊] 群组 ', peeruin, ' 戳一戳'); - // pokeEvent = new OB11GroupPokeEvent(peeruin); - // postOB11Event(pokeEvent); - // } - // PokeCache.set(peeruid, false); - // setTimeout(() => { - // PokeCache.delete(peeruid); - // }, 1000); - // } - if (MsgType == 528 && subType0 == 349) { - const sysDeviceMsg = DeviceData.fromBinary(Buffer.from(protobufData)); - DeviceList = []; - sysDeviceMsg.event[0].content[0].devices.forEach(device => { - DeviceList.push({ - app_id: '0', - device_name: device.deviceName, - device_kind: 'none' - }); - // log('[设备列表] 设备名称: ' + device.deviceName); - }); - } - // 未区分增加与减少 - // if (MsgType == 34 && subType0 == 0) { - // const role = (await getGroupMember(peeruin, selfInfo.uin))?.role; - // const isPrivilege = role === 3 || role === 4; - // if (!isPrivilege) { - // const leaveUin = - // log('[群聊] 群组 ', peeruin, ' 成员' + leaveUin + '退出'); - // const groupDecreaseEvent = new OB11GroupDecreaseEvent(peeruin, parseInt(leaveUin), 0, 'leave');// 不知道怎么出去的 - // postOB11Event(groupDecreaseEvent, true); - // } - // } - // MsgType (SubType) EventName - // 33 GroupMemIncreased - // 34 GroupMemberDecreased - // 44 GroupAdminChange - // 82 GroupMessage - // 84 GroupApply - // 87 InviteGroup - // 528 35 FriendApply - // 528 39 CardChange - // 528 68 GroupApply - // 528 138 C2CRecall - // 528 290 C2CPoke - // 528 349 DeviceChange - // 732 12 GroupBan - // 732 16 GroupUniqueTitleChange - // 732 17 GroupRecall - // 732 20 GroupCommonTips - // 732 21 EssenceMessage - } catch (e) { - log('解析SysMsg异常', e); - // console.log(e); - } + // // 未区分增加与减少 + // // if (MsgType == 34 && subType0 == 0) { + // // const role = (await getGroupMember(peeruin, selfInfo.uin))?.role; + // // const isPrivilege = role === 3 || role === 4; + // // if (!isPrivilege) { + // // const leaveUin = + // // log('[群聊] 群组 ', peeruin, ' 成员' + leaveUin + '退出'); + // // const groupDecreaseEvent = new OB11GroupDecreaseEvent(peeruin, parseInt(leaveUin), 0, 'leave');// 不知道怎么出去的 + // // postOB11Event(groupDecreaseEvent, true); + // // } + // // } + // // MsgType (SubType) EventName + // // 33 GroupMemIncreased + // // 34 GroupMemberDecreased + // // 44 GroupAdminChange + // // 82 GroupMessage + // // 84 GroupApply + // // 87 InviteGroup + // // 528 35 FriendApply + // // 528 39 CardChange + // // 528 68 GroupApply + // // 528 138 C2CRecall + // // 528 290 C2CPoke + // // 528 349 DeviceChange + // // 732 12 GroupBan + // // 732 16 GroupUniqueTitleChange + // // 732 17 GroupRecall + // // 732 20 GroupCommonTips + // // 732 21 EssenceMessage + // } catch (e) { + // log('解析SysMsg异常', e); + // // console.log(e); + // } }; msgListener.onKickedOffLine = (Info: KickedOffLineInfo) => { // 下线通知