diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 0be8127..42e87f7 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -4,32 +4,41 @@ about: 创建一份报告来帮助我们改进 title: '' labels: bug assignees: '' - --- **问题描述** -请简要描述您遇到的问题。 +请简要描述您遇到的问题,并尽量避免透露可能的敏感信息,如API密钥、密码等。 **Yunzai版本** Miao-Yunzai +**Yenai-Plugin版本** +latest version + **如何复现** -请详细描述如何复现问题,步骤越详细越好。 +请详细描述如何复现问题,步骤越详细越好。这有助于我们快速定位问题。 -1. 打开 '...' -2. 点击 '....' -3. 滚动到 '....' -4. 出现错误 +1. **环境信息** + - **操作系统**: 如Windows 10, macOS Mojave, Ubuntu 20.04等 + - **Node.js版本**: 输出结果 `node -v` + - **项目版本/分支**: 如果适用,请提供git分支或项目的特定版本号 + - **依赖状态**: 是否最新安装所有依赖 (`npm install` 或 `yarn` 最近执行时间) -**期望结果** -请简要描述您期望得到的结果。 +2. **复现步骤** + - 第一步 + - 第二步 + - 请尽量详细地描述你的操作过程。 -**实际结果** -请简要描述您实际得到的结果。 +3. **预期行为** + 描述您期望在完成上述步骤后,系统应有的正确行为或输出。 + +4. **实际行为** + 描述系统实际的行为或输出。 + +5. **附加信息** + - **错误日志**: 如果有的话,请附上相关错误日志或截图。 + - **特殊配置**: 是否有进行任何特别的插件配置或修改。 + - **复现频率**: 问题是否每次操作都会出现,还是偶尔出现? -**截图** -如果可以,请提供相关截图以帮助解释您的问题。 -**其他说明** -如果您有任何其他信息或说明,请在这里添加。 diff --git a/lib/request/request.js b/lib/request/request.js index 4f3707a..171a719 100644 --- a/lib/request/request.js +++ b/lib/request/request.js @@ -55,7 +55,7 @@ export default new class { * @param {object} [options.params] - 请求的参数 * @param {object} [options.headers] - 请求的HTTP头部 * @param {boolean} [options.closeCheckStatus] - 是否关闭状态检查 - * @param {'buffer'|'json'|'text'|'arrayBuffer'|'formData'|'blob'}[options.statusCode] - 期望的返回数据,如果设置了该值,则返回响应数据的特定的方法(如json()、text()等) + * @param {'buffer'|'json'|'text'|'arrayBuffer'|'formData'|'blob'}[options.responseType] - 期望的返回数据,如果设置了该值,则返回响应数据的特定的方法(如json()、text()等) * @param {boolean} [options.origError] 出现错误是否返回原始错误 * @param {boolean} [options.outErrorLog] 出现错误是否在控制台打印错误日志,默认为true * @returns {Promise} - HTTP响应或响应数据 @@ -77,7 +77,7 @@ export default new class { * @param {object} [options.params] - 请求的参数 * @param {object} [options.headers] - 请求的HTTP头部 * @param {boolean} [options.closeCheckStatus] - 是否关闭状态检查 - * @param {'buffer'|'json'|'text'|'arrayBuffer'|'formData'|'blob'} [options.statusCode] - 期望的返回数据,如果设置了该值,则返回响应数据的特定的方法(如json()、text()等) + * @param {'buffer'|'json'|'text'|'arrayBuffer'|'formData'|'blob'} [options.responseType] - 期望的返回数据,如果设置了该值,则返回响应数据的特定的方法(如json()、text()等) * @param {boolean} [options.origError] 出现错误是否返回原始错误 * @param {boolean} [options.outErrorLog] 出现错误是否在控制台打印错误日志,默认为true * @returns {Promise} - HTTP响应或响应数据 @@ -226,8 +226,9 @@ export default new class { if (!options.closeCheckStatus) { res = checkStatus(res) } - if (options.statusCode) { - return res[options.statusCode]() + const responseType = options.responseType || options.statusCode + if (responseType) { + return res[responseType]() } return res } diff --git a/model/State/FastFetch.js b/model/State/FastFetch.js index 064fe2a..03a3522 100644 --- a/model/State/FastFetch.js +++ b/model/State/FastFetch.js @@ -8,7 +8,7 @@ export default async function getFastFetch(e) { if (!isFeatureVisible(e.isPro)) return "" let ret = await execSync("bash plugins/yenai-plugin/resources/state/state.sh") if (ret.error) { - e.reply(`❎ 请检查是否使用git bash启动Yunzai-bot\n错误信息:${ret.stderr}`) + logger.error(`[Yenai-Plugin][状态]Error FastFetch 请检查是否使用git bash启动Yunzai-bot,错误信息:${ret.stderr}`) return "" } return ret.stdout.trim() diff --git a/model/State/style.js b/model/State/style.js index 5ed7ed6..8e4718d 100644 --- a/model/State/style.js +++ b/model/State/style.js @@ -3,20 +3,32 @@ import requset from "../../lib/request/request.js" import { createAbortCont } from "./utils.js" export async function getBackground() { const { backdrop, backdropDefault } = Config.state - if (!isValidUrl(backdrop)) { + if (!backdrop?.startsWith("http")) { return backdrop } let { controller, clearTimeout } = await createAbortCont(5000) try { + const startTime = Date.now() + const buffer = await requset.get(backdrop, { statusCode: "arrayBuffer", signal: controller.signal, outErrorLog: false }) + + const endTime = Date.now() + + const elapsedTime = endTime - startTime + + const fileSizeInBytes = buffer.byteLength + const fileSizeInKB = (fileSizeInBytes / 1024).toFixed(2) + + logger.info(`[Yenai-Plugin][状态]背景图片请求成功 ${fileSizeInKB}KB ${elapsedTime}ms`) + const buffBase64 = arrayBufferToBase64(buffer) return `data:image/jpeg;base64,${buffBase64}` } catch (err) { - logger.error(`Error requset state background image: ${err.message}`) + logger.error(`[Yenai-Plugin][状态]背景图请求失败,使用默认背景图“${backdropDefault}”,错误原因: ${err.message}`) const Plugin_Path = "../../../../../plugins/yenai-plugin" return `${Plugin_Path}/resources/state/img/${backdropDefault}` } finally { @@ -27,7 +39,3 @@ export async function getBackground() { function arrayBufferToBase64(arrayBuffer) { return Buffer.from(arrayBuffer).toString("base64") } -function isValidUrl(str) { - const urlRegex = /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w.-]+)+[\w\-._~:/?#[\]@!$&'()*+,;=.]+$/ - return urlRegex.test(str) -}