diff --git a/packages/napcat-plugin-builtin/package.json b/packages/napcat-plugin-builtin/package.json
index b11601e0..6dbb2d8b 100644
--- a/packages/napcat-plugin-builtin/package.json
+++ b/packages/napcat-plugin-builtin/package.json
@@ -7,7 +7,7 @@
"description": "NapCat 内置插件",
"author": "NapNeko",
"dependencies": {
- "napcat-types": "0.0.14"
+ "napcat-types": "0.0.15"
},
"devDependencies": {
"@types/node": "^22.0.1"
diff --git a/packages/napcat-plugin-builtin/webui/dashboard.html b/packages/napcat-plugin-builtin/webui/dashboard.html
index 32268b40..b0a3f2b2 100644
--- a/packages/napcat-plugin-builtin/webui/dashboard.html
+++ b/packages/napcat-plugin-builtin/webui/dashboard.html
@@ -259,11 +259,14 @@
- 测试插件静态资源服务是否正常工作
+ 测试插件静态资源服务是否正常工作(不需要鉴权)
+
@@ -280,8 +283,12 @@
const urlParams = new URLSearchParams(window.location.search);
const webuiToken = urlParams.get('webui_token') || '';
- // 插件自行管理 API 调用
+ // 插件 API 基础路径(需要鉴权)
const apiBase = '/api/Plugin/ext/napcat-plugin-builtin';
+ // 插件静态资源基础路径(不需要鉴权)
+ const staticBase = '/plugin/napcat-plugin-builtin/files';
+ // 插件内存资源基础路径(不需要鉴权)
+ const memBase = '/plugin/napcat-plugin-builtin/mem';
// 封装 fetch,自动携带认证
async function authFetch (url, options = {}) {
@@ -392,12 +399,13 @@
resultDiv.innerHTML = '
加载中
';
try {
- const response = await authFetch(`${apiBase}/static/test.txt`);
+ // 静态资源不需要鉴权,直接请求
+ const response = await fetch(`${staticBase}/static/test.txt`);
if (response.ok) {
const text = await response.text();
resultDiv.innerHTML = `
-
静态资源访问成功
+
文件系统静态资源访问成功
${text}
`;
@@ -408,6 +416,30 @@
resultDiv.innerHTML = `
请求失败: ${error.message}
`;
}
}
+
+ // 测试内存资源
+ async function testMemoryResource () {
+ const resultDiv = document.getElementById('static-result');
+ resultDiv.innerHTML = '
加载中
';
+
+ try {
+ // 内存资源不需要鉴权,直接请求
+ const response = await fetch(`${memBase}/dynamic/info.json`);
+ if (response.ok) {
+ const json = await response.json();
+ resultDiv.innerHTML = `
+
+
内存生成资源访问成功
+
${JSON.stringify(json, null, 2)}
+
+ `;
+ } else {
+ resultDiv.innerHTML = `
请求失败: ${response.status} ${response.statusText}
`;
+ }
+ } catch (error) {
+ resultDiv.innerHTML = `
请求失败: ${error.message}
`;
+ }
+ }