diff --git a/launcher/NapCatWinBootHook.dll b/launcher/NapCatWinBootHook.dll index ee797fc9..cd6ff346 100644 Binary files a/launcher/NapCatWinBootHook.dll and b/launcher/NapCatWinBootHook.dll differ diff --git a/launcher/NapCatWinBootMain.exe b/launcher/NapCatWinBootMain.exe index 50992702..9cd3132b 100644 Binary files a/launcher/NapCatWinBootMain.exe and b/launcher/NapCatWinBootMain.exe differ diff --git a/launcher/launcher-win10.bat b/launcher/launcher-win10.bat new file mode 100644 index 00000000..b8d462b7 --- /dev/null +++ b/launcher/launcher-win10.bat @@ -0,0 +1,40 @@ +@echo off +chcp 65001 +net session >nul 2>&1 +if %errorLevel% == 0 ( + echo Administrator mode detected. +) else ( + echo Please run this script in administrator mode. + powershell -Command "Start-Process 'cmd.exe' -ArgumentList '/c cd /d \"%cd%\" && \"%~f0\"' -Verb runAs" + exit +) + +set NAPCAT_PATCH_PATH=%cd%\patchNapCat.js +set NAPCAT_LOAD_PATH=%cd%\loadNapCat.js +set NAPCAT_INJECT_PATH=%cd%\NapCatWinBootHook.dll +set NAPCAT_LAUNCHER_PATH=%cd%\NapCatWinBootMain.exe +set NAPCAT_MAIN_PATH=%cd%\napcat.mjs +:loop_read +for /f "tokens=2*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\QQ" /v "UninstallString"') do ( + set RetString=%%b + goto :napcat_boot +) + +:napcat_boot +for %%a in ("%RetString%") do ( + set "pathWithoutUninstall=%%~dpa" +) + +SET QQPath=%pathWithoutUninstall%QQ.exe + +if not exist "%QQpath%" ( + echo provided QQ path is invalid: %QQpath% + pause + exit /b +) +set NAPCAT_MAIN_PATH=%NAPCAT_MAIN_PATH:\=/% +echo (async () =^> {await import("file:///%NAPCAT_MAIN_PATH%")})() > %NAPCAT_LOAD_PATH% + +"%NAPCAT_LAUNCHER_PATH%" "%QQPath%" "%NAPCAT_INJECT_PATH%" + +REM "%NAPCAT_LAUNCHER_PATH%" "%QQPath%" "%NAPCAT_INJECT_PATH%" 123456 \ No newline at end of file diff --git a/launcher/launcher.bat b/launcher/launcher.bat index 965624b1..d3124507 100644 --- a/launcher/launcher.bat +++ b/launcher/launcher.bat @@ -21,7 +21,7 @@ for /f "tokens=2*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\M ) :napcat_boot -for %%a in (%RetString%) do ( +for %%a in ("%RetString%") do ( set "pathWithoutUninstall=%%~dpa" ) @@ -32,7 +32,10 @@ if not exist "%QQpath%" ( pause exit /b ) + set NAPCAT_MAIN_PATH=%NAPCAT_MAIN_PATH:\=/% echo (async () =^> {await import("file:///%NAPCAT_MAIN_PATH%")})() > %NAPCAT_LOAD_PATH% "%NAPCAT_LAUNCHER_PATH%" "%QQPath%" "%NAPCAT_INJECT_PATH%" + +REM "%NAPCAT_LAUNCHER_PATH%" "%QQPath%" "%NAPCAT_INJECT_PATH%" 123456 \ No newline at end of file diff --git a/manifest.json b/manifest.json index a01452e1..01efc295 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "2.2.47", + "version": "2.3.4", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index f5476fab..3d96c05d 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "2.2.47", + "version": "2.3.4", "scripts": { "build:framework": "vite build --mode framework", "build:shell": "vite build --mode shell", diff --git a/src/common/version.ts b/src/common/version.ts index 3c1caf38..015b4261 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '2.2.47'; +export const napCatVersion = '2.3.4'; diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index 55fce983..2d1e7f05 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -298,65 +298,6 @@ export class NTQQFileApi { }); } - async addFileCache(peer: Peer, msgId: string, msgSeq: string, senderUid: string, elemId: string, elemType: string, fileSize: string, fileName: string) { - let GroupData; - let BuddyData; - if (peer.chatType === ChatType.KCHATTYPEGROUP) { - GroupData = - [{ - groupCode: peer.peerUid, - isConf: false, - hasModifyConfGroupFace: true, - hasModifyConfGroupName: true, - groupName: 'NapCat.Cached', - remark: 'NapCat.Cached', - }]; - } else if (peer.chatType === ChatType.KCHATTYPEC2C) { - BuddyData = [{ - category_name: 'NapCat.Cached', - peerUid: peer.peerUid, - peerUin: peer.peerUid, - remark: 'NapCat.Cached', - }]; - } else { - return undefined; - } - - return this.context.session.getSearchService().addSearchHistory({ - type: 4, - contactList: [], - id: -1, - groupInfos: [], - msgs: [], - fileInfos: [ - { - chatType: peer.chatType, - buddyChatInfo: BuddyData || [], - discussChatInfo: [], - groupChatInfo: GroupData || [], - dataLineChatInfo: [], - tmpChatInfo: [], - msgId: msgId, - msgSeq: msgSeq, - msgTime: Math.floor(Date.now() / 1000).toString(), - senderUid: senderUid, - senderNick: 'NapCat.Cached', - senderRemark: 'NapCat.Cached', - senderCard: 'NapCat.Cached', - elemId: elemId, - elemType: elemType, - fileSize: fileSize, - filePath: '', - fileName: fileName, - hits: [{ - start: 12, - end: 14, - }], - }, - ], - }); - } - async searchForFile(keys: string[]): Promise { const randomResultId = 100000 + Math.floor(Math.random() * 10000); let searchId = 0; diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 85689dba..bd36e2fa 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -115,6 +115,7 @@ export class OneBotMsgApi { file_id: encodedFileId, url: await this.core.apis.FileApi.getImageUrl(element), file_size: element.fileSize, + file_unique: element.fileName }, }; } catch (e: any) { @@ -129,20 +130,6 @@ export class OneBotMsgApi { peerUid: msg.peerUid, guildId: '', }; - await this.core.apis.FileApi.addFileCache( - { - peerUid: msg.peerUid, - chatType: msg.chatType, - guildId: '', - }, - msg.msgId, - msg.msgSeq, - msg.senderUid, - elementWrapper.elementId, - elementWrapper.elementType.toString(), - element.fileSize, - element.fileName, - ); return { type: OB11MessageDataType.file, data: { @@ -151,6 +138,7 @@ export class OneBotMsgApi { url: element.filePath, file_id: FileNapCatOneBotUUID.encode(peer, msg.msgId, elementWrapper.elementId), file_size: element.fileSize, + file_unique: element.fileName, }, }; }, @@ -182,20 +170,6 @@ export class OneBotMsgApi { }, marketFaceElement: async (_, msg, elementWrapper) => { - await this.core.apis.FileApi.addFileCache( - { - peerUid: msg.peerUid, - chatType: msg.chatType, - guildId: '', - }, - msg.msgId, - msg.msgSeq, - msg.senderUid, - elementWrapper.elementId, - elementWrapper.elementType.toString(), - '0', - 'marketface', - ); const peer = { chatType: msg.chatType, peerUid: msg.peerUid, @@ -208,6 +182,7 @@ export class OneBotMsgApi { file_id: FileNapCatOneBotUUID.encode(peer, msg.msgId, elementWrapper.elementId), path: elementWrapper.elementId, url: elementWrapper.elementId, + file_unique: _.key }, }; }, @@ -283,21 +258,6 @@ export class OneBotMsgApi { videoDownUrl = element.filePath; } - await this.core.apis.FileApi.addFileCache( - { - peerUid: msg.peerUid, - chatType: msg.chatType, - guildId: '', - }, - msg.msgId, - msg.msgSeq, - msg.senderUid, - elementWrapper.elementId, - elementWrapper.elementType.toString(), - element.fileSize ?? '0', - element.fileName, - ); - return { type: OB11MessageDataType.video, data: { @@ -306,6 +266,7 @@ export class OneBotMsgApi { url: videoDownUrl, file_id: FileNapCatOneBotUUID.encode(peer, msg.msgId, elementWrapper.elementId), file_size: element.fileSize, + file_unique: element.fileName, }, }; }, @@ -316,20 +277,6 @@ export class OneBotMsgApi { peerUid: msg.peerUid, guildId: '', }; - await this.core.apis.FileApi.addFileCache( - { - peerUid: msg.peerUid, - chatType: msg.chatType, - guildId: '', - }, - msg.msgId, - msg.msgSeq, - msg.senderUid, - elementWrapper.elementId, - elementWrapper.elementType.toString(), - element.fileSize || '0', - element.fileUuid || '', - ); return { type: OB11MessageDataType.voice, data: { @@ -730,8 +677,10 @@ export class OneBotMsgApi { if (ret.result === 0) { resMsg.group_id = parseInt(ret.tmpChatInfo!.groupCode); resMsg.sender.nickname = ret.tmpChatInfo!.fromNick; + resMsg.temp_source = resMsg.group_id; } else { resMsg.group_id = 284840486; //兜底数据 + resMsg.temp_source = resMsg.group_id; resMsg.sender.nickname = '临时会话'; } } diff --git a/src/onebot/types/message.ts b/src/onebot/types/message.ts index 2a340bab..3ed30119 100644 --- a/src/onebot/types/message.ts +++ b/src/onebot/types/message.ts @@ -8,6 +8,7 @@ export enum OB11MessageType { } export interface OB11Message { + temp_source?: number; message_sent_type?: string; target_id?: number; // 自己发送的消息才有此字段 self_id?: number, diff --git a/src/webui/ui/NapCat.ts b/src/webui/ui/NapCat.ts index 3f77f79b..40c6c3c7 100644 --- a/src/webui/ui/NapCat.ts +++ b/src/webui/ui/NapCat.ts @@ -30,7 +30,7 @@ async function onSettingWindowCreated(view: Element) { SettingItem( 'Napcat', undefined, - SettingButton('V2.2.47', 'napcat-update-button', 'secondary'), + SettingButton('V2.3.4', 'napcat-update-button', 'secondary'), ), ]), SettingList([ diff --git a/static/assets/renderer.js b/static/assets/renderer.js index 7df30e44..690449da 100644 --- a/static/assets/renderer.js +++ b/static/assets/renderer.js @@ -164,7 +164,7 @@ async function onSettingWindowCreated(view) { SettingItem( 'Napcat', void 0, - SettingButton("V2.2.47", "napcat-update-button", "secondary") + SettingButton("V2.3.4", "napcat-update-button", "secondary") ) ]), SettingList([