From 781c3311ae8e93724350c246a5c2e3bae0e9b7e2 Mon Sep 17 00:00:00 2001 From: linyuchen Date: Mon, 17 Jun 2024 16:20:37 +0800 Subject: [PATCH] fix: get_file cache not found --- src/common/utils/audio.ts | 2 +- src/onebot11/action/file/GetRecord.ts | 12 ++++++++++-- src/onebot11/constructor.ts | 3 +-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/common/utils/audio.ts b/src/common/utils/audio.ts index edd08b2..0510f43 100644 --- a/src/common/utils/audio.ts +++ b/src/common/utils/audio.ts @@ -134,7 +134,7 @@ export async function encodeSilk(filePath: string) { export async function decodeSilk(inputFilePath: string, outFormat: 'mp3' | 'amr' | 'wma' | 'm4a' | 'spx' | 'ogg' | 'wav' | 'flac' = 'mp3') { const silkArrayBuffer = await fsAsync.readFile(inputFilePath) const data = (await decode(silkArrayBuffer, 24000)).data - const fileName = path.join(TEMP_DIR, uuidv4()) + const fileName = path.join(TEMP_DIR, path.basename(inputFilePath)) const outPCMPath = fileName + '.pcm' const outFilePath = fileName + '.' + outFormat await fsAsync.writeFile(outPCMPath, data) diff --git a/src/onebot11/action/file/GetRecord.ts b/src/onebot11/action/file/GetRecord.ts index 1f12ba3..a73de3c 100644 --- a/src/onebot11/action/file/GetRecord.ts +++ b/src/onebot11/action/file/GetRecord.ts @@ -1,6 +1,9 @@ import { GetFileBase, GetFilePayload, GetFileResponse } from './GetFile' import { ActionName } from '../types' import {decodeSilk} from "@/common/utils/audio"; +import { getConfigUtil } from '@/common/config' +import path from 'node:path' +import fs from 'node:fs' interface Payload extends GetFilePayload { out_format: 'mp3' | 'amr' | 'wma' | 'm4a' | 'spx' | 'ogg' | 'wav' | 'flac' @@ -9,9 +12,14 @@ interface Payload extends GetFilePayload { export default class GetRecord extends GetFileBase { actionName = ActionName.GetRecord - protected async _handle(payload: Payload): Promise<{file: string}> { + protected async _handle(payload: Payload): Promise { let res = await super._handle(payload) res.file = await decodeSilk(res.file, payload.out_format) - return {file: res.file} + res.file_name = path.basename(res.file) + res.file_size = fs.statSync(res.file).size.toString() + if (getConfigUtil().getConfig().enableLocalFile2Url){ + res.base64 = fs.readFileSync(res.file, 'base64') + } + return res } } diff --git a/src/onebot11/constructor.ts b/src/onebot11/constructor.ts index 378f6e5..ac82a99 100644 --- a/src/onebot11/constructor.ts +++ b/src/onebot11/constructor.ts @@ -171,7 +171,7 @@ export class OB11Constructor { message_data['data']['url'] = await NTQQFileApi.getImageUrl(element.picElement, msg.chatType) // message_data["data"]["file_id"] = element.picElement.fileUuid message_data['data']['file_size'] = element.picElement.fileSize - dbUtil + await dbUtil .addFileCache(fileName, { fileName, elementId: element.elementId, @@ -189,7 +189,6 @@ export class OB11Constructor { ) }, }) - .then() // 不在自动下载图片 } else if (element.videoElement || element.fileElement) {