From 820cf76eafd527dcecdc42d36eb0b0b0ac1d34e6 Mon Sep 17 00:00:00 2001 From: ikechan8370 Date: Mon, 3 Apr 2023 21:14:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=94=BB=E5=9B=BE=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E4=BB=A3=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/BingDraw.js | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/utils/BingDraw.js b/utils/BingDraw.js index 38578c7..7055172 100644 --- a/utils/BingDraw.js +++ b/utils/BingDraw.js @@ -1,14 +1,28 @@ import fetch from 'node-fetch' import { makeForwardMsg } from './common.js' +import { Config } from './config.js' + +let proxy +if (Config.proxy) { + try { + proxy = (await import('https-proxy-agent')).default + } catch (e) { + console.warn('未安装https-proxy-agent,请在插件目录下执行pnpm add https-proxy-agent') + } +} export default class BingDrawClient { constructor (opts) { this.opts = opts + if (Config.proxy && !Config.sydneyForceUseReverse) { + // 如果设置代理,走代理 + this.opts.baseUrl = 'https://www.bing.com' + } } async getImages (prompt, e) { let urlEncodedPrompt = encodeURIComponent(prompt) let url = `${this.opts.baseUrl}/images/create?q=${urlEncodedPrompt}&rt=4&FORM=GENCRE` - let response = await fetch(url, { + let fetchOptions = { method: 'POST', headers: { accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', @@ -21,7 +35,11 @@ export default class BingDrawClient { cookie: this.opts.cookies || `_U=${this.opts.userToken}` }, redirect: 'manual' - }) + } + if (Config.proxy) { + fetchOptions.agent = proxy(Config.proxy) + } + let response = await fetch(url, fetchOptions) let res = await response.text() if (res.toLowerCase().indexOf('this prompt has been blocked') > -1) { throw new Error('Your prompt has been blocked by Bing. Try to change any bad words and try again.')