From a5d49989330a5fe46a91eb21d646722c17d5f1fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 11:39:44 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=80=9A=E8=BF=87@=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E5=AE=9A=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/audio.ts | 2 +- src/common/file.ts | 40 ++++++++----------- src/common/proxy-handler.ts | 2 +- src/common/qq-basic-info.ts | 2 +- src/common/video.ts | 2 +- src/onebot/action/extends/OCRImage.ts | 4 +- src/onebot/action/extends/SetQQAvatar.ts | 6 +-- .../action/go-cqhttp/SendGroupNotice.ts | 4 +- .../action/go-cqhttp/SetGroupPortrait.ts | 6 +-- src/onebot/network/active-http.ts | 1 - src/onebot/network/active-websocket.ts | 8 ++-- src/onebot/network/passive-http.ts | 2 +- src/onebot/network/passive-websocket.ts | 6 +-- src/onebot/types/message.ts | 4 +- 14 files changed, 41 insertions(+), 48 deletions(-) diff --git a/src/common/audio.ts b/src/common/audio.ts index 6f849d6c..284ff13a 100644 --- a/src/common/audio.ts +++ b/src/common/audio.ts @@ -4,7 +4,7 @@ import path from 'node:path'; import { randomUUID } from 'crypto'; import { spawn } from 'node:child_process'; import { EncodeResult, getDuration, getWavFileInfo, isSilk, isWav } from 'silk-wasm'; -import { LogWrapper } from './log'; +import { LogWrapper } from '@/common/log'; import { EncodeArgs } from "@/common/audio-worker"; const ALLOW_SAMPLE_RATE = [8000, 12000, 16000, 24000, 32000, 44100, 48000]; diff --git a/src/common/file.ts b/src/common/file.ts index ad1217e9..3166aa64 100644 --- a/src/common/file.ts +++ b/src/common/file.ts @@ -4,7 +4,20 @@ import crypto, { randomUUID } from 'crypto'; import util from 'util'; import path from 'node:path'; import * as fileType from 'file-type'; -import { solveProblem } from './helper'; +import { solveProblem } from '@/common/helper'; + +export interface HttpDownloadOptions { + url: string; + headers?: Record | string; +} + +type Uri2LocalRes = { + success: boolean, + errMsg: string, + fileName: string, + ext: string, + path: string +} export function isGIF(path: string) { const buffer = Buffer.alloc(4); @@ -15,7 +28,7 @@ export function isGIF(path: string) { } // 定义一个异步函数来检查文件是否存在 -export function checkFileReceived(path: string, timeout: number = 3000): Promise { +export function checkFileExist(path: string, timeout: number = 3000): Promise { return new Promise((resolve, reject) => { const startTime = Date.now(); @@ -34,7 +47,7 @@ export function checkFileReceived(path: string, timeout: number = 3000): Promise } // 定义一个异步函数来检查文件是否存在 -export async function checkFileReceived2(path: string, timeout: number = 3000): Promise { +export async function checkFileExistV2(path: string, timeout: number = 3000): Promise { // 使用 Promise.race 来同时进行文件状态检查和超时计时 // Promise.race 会返回第一个解决(resolve)或拒绝(reject)的 Promise await Promise.race([ @@ -75,18 +88,13 @@ export async function file2base64(path: string) { data: '', }; try { - // 读取文件内容 - // if (!fs.existsSync(path)){ - // path = path.replace("\\Ori\\", "\\Thumb\\"); - // } try { - await checkFileReceived(path, 5000); + await checkFileExist(path, 5000); } catch (e: any) { result.err = e.toString(); return result; } const data = await readFile(path); - // 转换为Base64编码 result.data = data.toString('base64'); } catch (err: any) { result.err = err.toString(); @@ -118,13 +126,7 @@ export function calculateFileMD5(filePath: string): Promise { }); } -export interface HttpDownloadOptions { - url: string; - headers?: Record | string; -} - async function tryDownload(options: string | HttpDownloadOptions, useReferer: boolean = false): Promise { - // const chunks: Buffer[] = []; let url: string; let headers: Record = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36', @@ -166,14 +168,6 @@ export async function httpDownload(options: string | HttpDownloadOptions): Promi return Buffer.from(buffer); } -type Uri2LocalRes = { - success: boolean, - errMsg: string, - fileName: string, - ext: string, - path: string -} - export async function checkFileV2(filePath: string) { try { const ext: string | undefined = (await fileType.fileTypeFromFile(filePath))?.ext; diff --git a/src/common/proxy-handler.ts b/src/common/proxy-handler.ts index 629a0b73..a6a8f915 100644 --- a/src/common/proxy-handler.ts +++ b/src/common/proxy-handler.ts @@ -1,4 +1,4 @@ -import { LogWrapper } from './log'; +import { LogWrapper } from '@/common/log'; export function proxyHandlerOf(logger: LogWrapper) { return { diff --git a/src/common/qq-basic-info.ts b/src/common/qq-basic-info.ts index 91f431e1..389d4a8c 100644 --- a/src/common/qq-basic-info.ts +++ b/src/common/qq-basic-info.ts @@ -2,7 +2,7 @@ import fs from 'node:fs'; import { systemPlatform } from '@/common/system'; import { getDefaultQQVersionConfigInfo, getQQPackageInfoPath, getQQVersionConfigPath, parseAppidFromMajor } from './helper'; import AppidTable from '@/core/external/appid.json'; -import { LogWrapper } from './log'; +import { LogWrapper } from '@/common/log'; import { getMajorPath } from '@/core'; export class QQBasicInfoWrapper { diff --git a/src/common/video.ts b/src/common/video.ts index cbbad304..5cddb44a 100644 --- a/src/common/video.ts +++ b/src/common/video.ts @@ -1,6 +1,6 @@ import ffmpeg, { FfprobeStream } from 'fluent-ffmpeg'; import fs from 'fs'; -import type { LogWrapper } from './log'; +import { LogWrapper } from '@/common/log'; export const defaultVideoThumbB64 = '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'; diff --git a/src/onebot/action/extends/OCRImage.ts b/src/onebot/action/extends/OCRImage.ts index 334a7f5f..e3e1e0e3 100644 --- a/src/onebot/action/extends/OCRImage.ts +++ b/src/onebot/action/extends/OCRImage.ts @@ -1,7 +1,7 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; -import { checkFileReceived, uri2local } from '@/common/file'; +import { checkFileExist, uri2local } from '@/common/file'; import fs from 'fs'; const SchemaData = { @@ -24,7 +24,7 @@ export class OCRImage extends OneBotAction { throw new Error(`OCR ${payload.image}失败,image字段可能格式不正确`); } if (path) { - await checkFileReceived(path, 5000); // 文件不存在QQ会崩溃,需要提前判断 + await checkFileExist(path, 5000); // 避免崩溃 const ret = await this.core.apis.SystemApi.ocrImage(path); fs.unlink(path, () => { }); diff --git a/src/onebot/action/extends/SetQQAvatar.ts b/src/onebot/action/extends/SetQQAvatar.ts index cb566062..feac7670 100644 --- a/src/onebot/action/extends/SetQQAvatar.ts +++ b/src/onebot/action/extends/SetQQAvatar.ts @@ -1,7 +1,7 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName, BaseCheckResult } from '../router'; +import { ActionName, BaseCheckResult } from '@/onebot/action/router'; import * as fs from 'node:fs'; -import { checkFileReceived, uri2local } from '@/common/file'; +import { checkFileExist, uri2local } from '@/common/file'; interface Payload { file: string; @@ -29,7 +29,7 @@ export default class SetAvatar extends OneBotAction { throw new Error(`头像${payload.file}设置失败,file字段可能格式不正确`); } if (path) { - await checkFileReceived(path, 5000); // 文件不存在QQ会崩溃,需要提前判断 + await checkFileExist(path, 5000);// 避免崩溃 const ret = await this.core.apis.UserApi.setQQAvatar(path); fs.unlink(path, () => { }); diff --git a/src/onebot/action/go-cqhttp/SendGroupNotice.ts b/src/onebot/action/go-cqhttp/SendGroupNotice.ts index 55fb9d63..c30a50c8 100644 --- a/src/onebot/action/go-cqhttp/SendGroupNotice.ts +++ b/src/onebot/action/go-cqhttp/SendGroupNotice.ts @@ -1,4 +1,4 @@ -import { checkFileReceived, uri2local } from '@/common/file'; +import { checkFileExist, uri2local } from '@/common/file'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { unlink } from 'node:fs'; @@ -39,7 +39,7 @@ export class SendGroupNotice extends OneBotAction { if (!path) { throw new Error(`群公告${payload.image}设置失败,获取资源失败`); } - await checkFileReceived(path, 5000); // 文件不存在QQ会崩溃,需要提前判断 + await checkFileExist(path, 5000); const ImageUploadResult = await this.core.apis.GroupApi.uploadGroupBulletinPic(payload.group_id.toString(), path); if (ImageUploadResult.errCode != 0) { throw new Error(`群公告${payload.image}设置失败,图片上传失败`); diff --git a/src/onebot/action/go-cqhttp/SetGroupPortrait.ts b/src/onebot/action/go-cqhttp/SetGroupPortrait.ts index 00d28b04..fc86a92c 100644 --- a/src/onebot/action/go-cqhttp/SetGroupPortrait.ts +++ b/src/onebot/action/go-cqhttp/SetGroupPortrait.ts @@ -1,7 +1,7 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName, BaseCheckResult } from '../router'; +import { ActionName, BaseCheckResult } from '@/onebot/action/router'; import * as fs from 'node:fs'; -import { checkFileReceived, uri2local } from '@/common/file'; +import { checkFileExistV2, uri2local } from '@/common/file'; interface Payload { file: string, @@ -30,7 +30,7 @@ export default class SetGroupPortrait extends OneBotAction { throw new Error(`头像${payload.file}设置失败,file字段可能格式不正确`); } if (path) { - await checkFileReceived(path, 5000); // 文件不存在QQ会崩溃,需要提前判断 + await checkFileExistV2(path, 5000); // 文件不存在QQ会崩溃,需要提前判断 const ret = await this.core.apis.GroupApi.setGroupAvatar(payload.group_id.toString(), path); fs.unlink(path, () => { }); if (!ret) { diff --git a/src/onebot/network/active-http.ts b/src/onebot/network/active-http.ts index 26975454..622cba40 100644 --- a/src/onebot/network/active-http.ts +++ b/src/onebot/network/active-http.ts @@ -23,7 +23,6 @@ export class OB11ActiveHttpAdapter implements IOB11NetworkAdapter { this.config = structuredClone(config); } - onEvent(event: T) { if (!this.isEnable) { return; diff --git a/src/onebot/network/active-websocket.ts b/src/onebot/network/active-websocket.ts index 7f782c6d..c8c9435e 100644 --- a/src/onebot/network/active-websocket.ts +++ b/src/onebot/network/active-websocket.ts @@ -80,7 +80,7 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter { headers: { 'X-Self-ID': this.core.selfInfo.uin, 'Authorization': `Bearer ${this.config.token}`, - 'x-client-role': 'Universal', // koishi-adapter-onebot 需要这个字段 + 'x-client-role': 'Universal', // 为koishi adpter适配 'User-Agent': 'OneBot/11', }, @@ -144,11 +144,11 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter { this.checkStateAndReply(OB11Response.error('json解析失败,请检查数据格式', 1400, echo)); return; } - receiveData.params = (receiveData?.params) ? receiveData.params : {};//兼容类型验证 + receiveData.params = (receiveData?.params) ? receiveData.params : {};// 兼容类型验证 const action = this.actions.get(receiveData.action); if (!action) { - this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Client] 发生错误', '不支持的api ' + receiveData.action); - this.checkStateAndReply(OB11Response.error('不支持的api ' + receiveData.action, 1404, echo)); + this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Client] 发生错误', '不支持的Api ' + receiveData.action); + this.checkStateAndReply(OB11Response.error('不支持的Api ' + receiveData.action, 1404, echo)); return; } const retdata = await action.websocketHandle(receiveData.params, echo ?? '', this.name); diff --git a/src/onebot/network/passive-http.ts b/src/onebot/network/passive-http.ts index e6d75924..464312c1 100644 --- a/src/onebot/network/passive-http.ts +++ b/src/onebot/network/passive-http.ts @@ -114,7 +114,7 @@ export class OB11PassiveHttpAdapter implements IOB11NetworkAdapter { return res.json(OB11Response.error(error?.stack?.toString() || error?.message || 'Error Handle', 200)); } } else { - return res.json(OB11Response.error('不支持的api ' + actionName, 200)); + return res.json(OB11Response.error('不支持的Api ' + actionName, 200)); } } diff --git a/src/onebot/network/passive-websocket.ts b/src/onebot/network/passive-websocket.ts index 096dab3b..1459f04a 100644 --- a/src/onebot/network/passive-websocket.ts +++ b/src/onebot/network/passive-websocket.ts @@ -180,11 +180,11 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { this.checkStateAndReply(OB11Response.error('json解析失败,请检查数据格式', 1400, echo), wsClient); return; } - receiveData.params = (receiveData?.params) ? receiveData.params : {};//兼容类型验证 + receiveData.params = (receiveData?.params) ? receiveData.params : {};//兼容类型验证 不然类型校验爆炸 const action = this.actions.get(receiveData.action); if (!action) { - this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Client] 发生错误', '不支持的api ' + receiveData.action); - this.checkStateAndReply(OB11Response.error('不支持的api ' + receiveData.action, 1404, echo), wsClient); + this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Client] 发生错误', '不支持的API ' + receiveData.action); + this.checkStateAndReply(OB11Response.error('不支持的API ' + receiveData.action, 1404, echo), wsClient); return; } const retdata = await action.websocketHandle(receiveData.params, echo ?? '', this.name); diff --git a/src/onebot/types/message.ts b/src/onebot/types/message.ts index 01834441..8dcbb03b 100644 --- a/src/onebot/types/message.ts +++ b/src/onebot/types/message.ts @@ -12,7 +12,7 @@ export enum OB11MessageType { export interface OB11Message { temp_source?: number; message_sent_type?: string; - target_id?: number; // 自己发送的消息才有此字段 + target_id?: number; // 自己发送消息/私聊消息 self_id?: number; time: number; message_id: number; @@ -255,7 +255,7 @@ export interface OB11PostSendMsg { user_id?: string; group_id?: string; message: OB11MessageMixType; - messages?: OB11MessageMixType; // 兼容 go-cqhttp + messages?: OB11MessageMixType; auto_escape?: boolean | string; source?: string; news?: { text: string }[];