diff --git a/manifest.json b/manifest.json index 049c050..529f1e3 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "LLOneBot", "slug": "LLOneBot", "description": "实现 OneBot 11 协议,用于 QQ 机器人开发", - "version": "3.32.7", + "version": "3.32.8", "icon": "./icon.webp", "authors": [ { diff --git a/src/common/utils/file.ts b/src/common/utils/file.ts index 5af41fd..8c995e1 100644 --- a/src/common/utils/file.ts +++ b/src/common/utils/file.ts @@ -91,17 +91,26 @@ interface FetchFileRes { } export async function fetchFile(url: string, headersInit?: Record): Promise { - const headers: Record = { + const headers = new Headers({ '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', 'Host': new URL(url).hostname, ...headersInit - } - const raw = await fetch(url, { headers }).catch((err) => { + }) + let raw = await fetch(url, { headers }).catch((err) => { if (err.cause) { throw err.cause } throw err }) + if (raw.status === 403 && !headers.has('Referer')) { + headers.set('Referer', url) + raw = await fetch(url, { headers }).catch((err) => { + if (err.cause) { + throw err.cause + } + throw err + }) + } if (!raw.ok) throw new Error(`statusText: ${raw.statusText}`) return { data: Buffer.from(await raw.arrayBuffer()), @@ -133,7 +142,7 @@ export async function uri2local(uri: string, filename?: string, needExt?: boolea if (type === FileUriType.RemoteURL) { try { - const res = await fetchFile(uri, { 'Referer': uri }) + const res = await fetchFile(uri) const match = res.url.match(/.+\/([^/?]*)(?=\?)?/) if (match?.[1]) { filename ??= match[1].replace(/[/\\:*?"<>|]/g, '_') diff --git a/src/common/utils/messageUnique.ts b/src/common/utils/messageUnique.ts index 2d9ea0b..6a615d4 100644 --- a/src/common/utils/messageUnique.ts +++ b/src/common/utils/messageUnique.ts @@ -127,7 +127,6 @@ class MessageUniqueWrapper { } } } - return undefined } getShortIdByMsgId(msgId: string): number | undefined { @@ -160,4 +159,4 @@ class MessageUniqueWrapper { } } -export const MessageUnique: MessageUniqueWrapper = new MessageUniqueWrapper() \ No newline at end of file +export const MessageUnique: MessageUniqueWrapper = new MessageUniqueWrapper() diff --git a/src/version.ts b/src/version.ts index 3997e97..849cf54 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const version = '3.32.7' +export const version = '3.32.8'