配置模式复选框,单选框,以及多个复选框再脚本怎么使用

已存档
LiGo · 1 个月前
第 1 条补充
·
1 个月前

如果我要套用if判断怎么使用?

第 2 条补充
·
1 个月前

你们的配置模式我没有看懂是怎么使用的,应该怎么样引用到脚本里面,可以举个例子吗?

包括:
下拉选择
多个复选
单选
范围

回答

Hamibot AI
1
· 1 个月前

文档地址 https://docs.hamibot.com/

配置定义示例

[
  // 多选复选框
  {
    "label": "多选框",
    "type": "checkbox",
    "name": "multiCheck",
    "options": {
      "opt1": "选项一",
      "opt2": "选项二"
    }
  },
  // 单项复选框
  {
    "label": "单选框",
    "type": "checkbox",
    "name": "singleCheck"
  }
]

脚本调用方式

// 获取配置值
var multiSelect = hamibot.config.multiCheck; // 返回选中的键值数组
var singleSelect = hamibot.config.singleCheck; // 返回布尔值

// 创建对话框单选
var dialog = dialogs.build({
  title: "单选列表",
  items: ["A", "B", "C"],
  itemsSelectMode: "singleChoice"
})
.on("item_select", function(index, item) {
  toast("你选择了:" + item);
})
.show();

// 创建对话框多选
var multiDialog = dialogs.build({
  title: "多选列表",
  items: ["X", "Y", "Z"],
  itemsSelectMode: "multiChoice"
})
.on("multi_choice", function(indices, items) {
  toast("选中项:" + items.join(","));
})
.show();

关键参数说明

参数 类型 用途
multiCheck Array 获取多选复选框选中的键值数组
singleCheck Boolean 获取单项复选框的选中状态
itemsSelectMode String 设置对话框选择模式(singleChoice/multiChoice)
item_select 事件 - 单选时触发,返回(index,item)
multi_choice 事件 - 多选时触发,返回(indices,items)

注意:在脚本消息回调中处理选择结果时,建议使用传统函数表达式替代箭头函数以保证兼容性


补充回答 1

文档地址 https://docs.hamibot.com/

// 示例:基于配置的条件判断
if(hamibot.config.singleCheck) {
  toast("单项复选框已勾选");
} else {
  toast("单项复选框未勾选");
}

// 判断多选框是否包含指定选项
var selectedOptions = hamibot.config.multiCheck || [];
if(selectedOptions.indexOf("opt1") >= 0) {
  toast("多选框选择了选项一");
}

// 对话框选择条件处理
dialogs.build({
  title: "请选择",
  items: ["选项A", "选项B"],
  itemsSelectMode: "singleChoice"
})
.on("item_select", function(index, item) {
  if(item == "选项A") {
    toast("你选择了主选项");
  } else if(index == 1) {
    toast("次选项被选中");
  }
})
.show();

常用判断模式

// 单值判断
if(hamibot.config.checkboxName) { 
  // 处理逻辑
}

// 多值存在判断
if((hamibot.config.checkboxName || []).indexOf("key") >= 0) {
  // 处理逻辑
}

// 数量判断
if((hamibot.config.checkboxName || []).length > 1) {
  toast("至少选择了2个选项");
}

// 组合判断
if(hamibot.config.optionA && (hamibot.config.optionB || []).length > 0) {
  // 当选项A开启且选项B有选中项时执行
}

注意:在Rhino引擎中使用数组方法时,请确保使用兼容的写法。多选框配置值始终以数组形式存储,判断前建议使用 || [] 设置默认空数组。


补充回答 2

文档地址 https://docs.hamibot.com/

完整配置定义与使用示例

[
  // 下拉选择
  {
    "label": "操作模式",
    "type": "select",
    "name": "mode",
    "options": {
      "normal": "常规模式",
      "advanced": "高级模式"
    },
    "default": "normal"
  },
  // 多个复选框
  {
    "label": "执行任务",
    "type": "checkbox",
    "name": "tasks",
    "options": {
      "clean": "清理缓存",
      "backup": "备份数据",
      "update": "更新系统"
    }
  },
  // 单选开关
  {
    "label": "夜间模式",
    "type": "checkbox",
    "name": "nightMode"
  },
  // 范围选择
  {
    "label": "重试次数",
    "type": "number",
    "name": "retry",
    "min": 1,
    "max": 5,
    "default": 3
  }
]

脚本调用方式

// 获取配置值
var mode = hamibot.config.mode;       // 字符串类型
var tasks = hamibot.config.tasks || []; // 数组类型
var isNight = hamibot.config.nightMode; // 布尔类型
var retryCount = hamibot.config.retry;  // 数字类型

// 下拉选择判断
if(mode === "advanced") {
  toast("当前运行高级模式");
} else {
  toast("当前运行常规模式");
}

// 多选处理
if(tasks.indexOf("clean") >= 0) {
  toast("将执行清理缓存");
}
if(tasks.length === 0) {
  toast("未选择任何任务");
}

// 单选开关处理
if(isNight) {
  toast("夜间模式已开启");
  // 执行暗色界面处理...
} else {
  toast("日间模式运行");
}

// 范围值使用
for(var i=0; i<retryCount; i++) {
  toast("第" + (i+1) + "次尝试");
  // 执行重试逻辑...
}

配置值类型说明

配置类型 返回类型 示例值
select string "normal"
checkbox (单个) boolean true
checkbox (多个) array ["clean", "update"]
number (范围) number 3

关键注意点

  1. 默认值处理:建议为所有配置项设置default字段,避免undefined错误
  2. 类型安全:使用|| []处理可能为undefined的数组
  3. 数值验证:范围输入会自动限制输入值在min/max之间
  4. 选项映射:下拉选择的value是对象key(如"normal"),而非显示文本

在Rhino引擎中,建议使用传统循环语句代替Array.from等新特性。处理多选时应始终使用数组方法进行存在性判断。

ℹ️ 本回答由 AI 生成,内容仅供参考