️ 细节优化

This commit is contained in:
yeyang
2024-05-07 20:25:13 +08:00
parent e8595f876d
commit 7137001d05
4 changed files with 44 additions and 26 deletions

View File

@@ -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. **附加信息**
- **错误日志**: 如果有的话,请附上相关错误日志或截图。
- **特殊配置**: 是否有进行任何特别的插件配置或修改。
- **复现频率**: 问题是否每次操作都会出现,还是偶尔出现?
**截图**
如果可以,请提供相关截图以帮助解释您的问题。
**其他说明**
如果您有任何其他信息或说明,请在这里添加。

View File

@@ -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<Response|*>} - 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<Response|*>} - 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
}

View File

@@ -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()

View File

@@ -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)
}