Procházet zdrojové kódy

调试输出修改+参数传输BUG

枫林 před 3 měsíci
rodič
revize
eccdd33237
5 změnil soubory, kde provedl 84 přidání a 70 odebrání
  1. 1 1
      src/config/load.yml
  2. 16 1
      src/config/permission.yml
  3. 8 11
      src/lib/Plugins.ts
  4. 1 1
      src/lib/decorators.ts
  5. 58 56
      src/plugins/test.ts

+ 1 - 1
src/config/load.yml

@@ -1,4 +1,4 @@
 isuplad: false
-name: sakulin.ts
+name: test.ts
 id: 1814872986
 isGroupMessage: false

+ 16 - 1
src/config/permission.yml

@@ -9,7 +9,7 @@ users:
         enable: true
         commands:
           help: true
-          param: false
+          param: true
       testupload:
         commands:
           help: true
@@ -26,6 +26,21 @@ users:
           ping: true
           help: true
           图: true
+  '914085636':
+    plugins:
+      saku:
+        commands:
+          help: true
+      reload:
+        commands:
+          help: true
+      downloadPlugins:
+        commands:
+          help: true
+          plugins: true
+          download: true
+          logs: true
+          downloadlog: true
   default:
     plugins:
       test:

+ 8 - 11
src/lib/Plugins.ts

@@ -632,12 +632,11 @@ async function parseCommandParams(message: string, context: PrivateFriendMessage
     const cmdArgs = message.split(/\s+/).filter(Boolean);
 
     // 移除命令前缀和命令名
-    const cmdPrefix = '#';
     const parts = message.split(/\s+/);
     const paramArgs = parts.slice(2); // 跳过 #test param 这两个部分
 
     // 调试日志
-    botlogger.info('DEBUG - 命令参数:', JSON.stringify({
+    botlogger.info('DEBUG - 命令参数:' + JSON.stringify({
         message,
         cmdArgs,
         paramArgs,
@@ -648,23 +647,21 @@ async function parseCommandParams(message: string, context: PrivateFriendMessage
 
     // 添加参数
     if (paramArgs.length > 0) {
-        // 第一个参数作为字符串
-        params.push(paramArgs[0]);
-
-        // 第二个参数尝试转换为数字
-        if (paramArgs.length > 1) {
-            const num = Number(paramArgs[1]);
+        for (let i = 0; i < paramArgs.length; i++) {
+            //数字转化
+            const num = Number(paramArgs[i]);
             if (!isNaN(num)) {
                 params.push(num);
             }
-        }
+            params.push(paramArgs[i]);
+            
+        }  
     }
-
     // 添加 context 参数
     params.push(context);
 
     // 调试日志
-    botlogger.info('DEBUG - 最终参数:', JSON.stringify({
+    botlogger.info('DEBUG - 最终参数:' + JSON.stringify({
         params: params.slice(0, -1), // 不显示 context
         paramCount: params.length,
         paramArgs

+ 1 - 1
src/lib/decorators.ts

@@ -177,7 +177,7 @@ export function plugins(config: PluginConfig): ClassDecorator {
                             sendText: false,
                             render: {
                                 width: 800,
-                                height: 600,
+                                height: 1600,
                                 type: 'png',
                                 quality: 100,
                                 fullPage: false,

+ 58 - 56
src/plugins/test.ts

@@ -1,57 +1,59 @@
-import { param, ParamType, plugins, runcod, schedule } from '../lib/decorators.js';
-import path from 'path';
-import 'reflect-metadata';
-import { fileURLToPath } from 'node:url';
-import { qqBot } from '../app.js';
-import botlogger from '../lib/logger.js';
-
-@plugins({
-    id: "test", //插件ID,必须唯一,不能重复
-    name: "测试插件", //插件名称,用于显示在菜单中
-    version: "1.0.0", //插件版本号,用于显示在菜单中
-    describe: "测试功能", //插件描述,用于显示在菜单中
-    author: "枫叶秋林",//插件作者,用于显示在菜单中
-    help: { //插件帮助信息,用于显示在菜单中
-        enabled: true, //是否启用帮助信息
-        description: "显示帮助信息" //帮助信息描述
-    }
-})
-export class Test {
-    @runcod(["param"], "参数实例")//命令装饰器,用于注册命令
-    async param(
-        @param("参数1", ParamType.String) param1: string,//参数装饰器,用于解析参数
-        @param("参数2", ParamType.Number) param2: number,//参数装饰器,用于解析参数
-    ): Promise<any> {
-        if (!param1 || !param2) {
-            return "请输入正确的参数格式: #test param <字符串> <数字>";//返回错误信息,用于显示在菜单中
-        }
-        const __dirname = path.dirname(fileURLToPath(import.meta.url)); //获取当前文件的目录名
-        // 返回带模板的响应
-        return {
-            param1,//参数1,用于显示在菜单中
-            param2,//参数2,用于显示在菜单中
-            template: { // 模板配置,用于发送图片内容
-                enabled: true,//是否启用模板,启用将发送图片内容
-                sendText: false,//是否发送文本,启用将发送文本内容,如果都启用则发送两条消息
-                path: path.resolve(__dirname, '..', 'resources', 'test', 'param.html'),//模版路径,推荐按规范放置在resources目录下
-                render: {//浏览器默认参数设置,用于打开浏览器的设置
-                    width: 600, // 模板宽度
-                    height: 300,// 模板高度
-                    type: 'png',// 模板类型
-                    quality: 100,// 模板质量
-                    fullPage: false,// 是否全屏
-                    background: true// 是否背景
-                }
-            },
-            toString() { //重写toString方法,用于返回文本内容,启用sendText时将发送文本内容,不启用时将发送图片内容,图片发送失败时发送文字内容
-                return `参数1(字符串): ${param1}\n参数2(数字): ${param2}`;
-            }
-        };
-    }
-
-    @schedule('* */30 * * * *') // 每30分钟执行一次
-    async testschedule() {
-        botlogger.info("定时任务测试")
-    }
-
+//PLUGIN test.ts
+
+import { param, ParamType, plugins, runcod, schedule } from '../lib/decorators.js';
+import path from 'path';
+import 'reflect-metadata';
+import { fileURLToPath } from 'node:url';
+import { qqBot } from '../app.js';
+import botlogger from '../lib/logger.js';
+
+@plugins({
+    id: "test", //插件ID,必须唯一,不能重复
+    name: "测试插件", //插件名称,用于显示在菜单中
+    version: "1.0.0", //插件版本号,用于显示在菜单中
+    describe: "测试功能", //插件描述,用于显示在菜单中
+    author: "枫叶秋林",//插件作者,用于显示在菜单中
+    help: { //插件帮助信息,用于显示在菜单中
+        enabled: true, //是否启用帮助信息
+        description: "显示帮助信息" //帮助信息描述
+    }
+})
+export class Test {
+    @runcod(["param"], "参数实例")//命令装饰器,用于注册命令
+    async param(
+        @param("参数1", ParamType.String) param1: string,//参数装饰器,用于解析参数
+        @param("参数2", ParamType.Number) param2: number,//参数装饰器,用于解析参数
+    ): Promise<any> {
+        if (!param1 || !param2) {
+            return "请输入正确的参数格式: #test param <字符串> <数字>";//返回错误信息,用于显示在菜单中
+        }
+        const __dirname = path.dirname(fileURLToPath(import.meta.url)); //获取当前文件的目录名
+        // 返回带模板的响应
+        return {
+            param1,//参数1,用于显示在菜单中
+            param2,//参数2,用于显示在菜单中
+            template: { // 模板配置,用于发送图片内容
+                enabled: true,//是否启用模板,启用将发送图片内容
+                sendText: false,//是否发送文本,启用将发送文本内容,如果都启用则发送两条消息
+                path: path.resolve(__dirname, '..', 'resources', 'test', 'param.html'),//模版路径,推荐按规范放置在resources目录下
+                render: {//浏览器默认参数设置,用于打开浏览器的设置
+                    width: 600, // 模板宽度
+                    height: 300,// 模板高度
+                    type: 'png',// 模板类型
+                    quality: 100,// 模板质量
+                    fullPage: false,// 是否全屏
+                    background: true// 是否背景
+                }
+            },
+            toString() { //重写toString方法,用于返回文本内容,启用sendText时将发送文本内容,不启用时将发送图片内容,图片发送失败时发送文字内容
+                return `参数1(字符串): ${param1}\n参数2(数字): ${param2}`;
+            }
+        };
+    }
+
+    @schedule('* */30 * * * *') // 每30分钟执行一次
+    async testschedule() {
+        botlogger.info("定时任务测试")
+    }
+
 }