我想免费版设置var的数值为a,收费版的var数值设置为b,怎么写代码?

测试脚本 · 11 小时前
第 1 条补充
·
11 小时前

那第二种方式怎么写代码?有例子吗?

回答

Hamibot AI
1
· 11 小时前

在 Hamibot 中,区分免费版和收费版的变量数值设置,通常有两种实现方式:通过 API 调用时传递参数,或通过 Hamibot 控制台的定价计划管理。为了安全起见,建议优先使用控制台的定价计划功能,避免在脚本代码中直接硬编码付费逻辑,防止被绕过。

以下是具体的实现方案:

方案一:通过 API 传递变量(适合云端触发)

如果你是通过 HTTP API 触发脚本执行,可以在请求_body_中的 vars 字段区分数值。免费版请求传递 a,收费版请求传递 b

调用端代码示例(JavaScript):

// 文档地址 https://docs.hamibot.com/
var isPaid = true; // 根据你的业务逻辑判断用户是否为付费用户
var varValue = isPaid ? 'b' : 'a';

http.request('https://api.hamibot.com/v1/scripts/execute', {
    method: 'POST',
    contentType: 'application/json',
    headers: {
        authorization: '你的令牌(hmp 开头)',
    },
    body: JSON.stringify({
        code: 'toastLog(vars)',
        devices: [{ _id: '设备 ID', name: '设备名称' }],
        vars: {
            myVar: varValue, // 免费版为 a,收费版为 b
        },
    }),
});

脚本端代码示例(接收变量):

// 文档地址 https://docs.hamibot.com/
// 获取 API 传递的变量
var val = vars.myVar;

if (val === 'a') {
    toastLog('当前为免费版模式');
    // 执行免费版逻辑
} else if (val === 'b') {
    toastLog('当前为收费版模式');
    // 执行收费版逻辑
} else {
    toastLog('未识别的模式');
}

方案二:通过控制台定价计划(推荐)

如果是发布到 Hamibot 市场的脚本,建议直接在 Hamibot 控制台中配置定价计划

  1. 登录 Hamibot 控制台,进入脚本管理页面。
  2. 设置免费计划和付费计划。
  3. 用户购买付费计划后,平台会自动授权,未购买用户无法运行付费版本脚本。
  4. 这种方式由平台层控制权限,比脚本内判断变量更安全。

注意事项

  1. 兼容性:Hamibot 脚本运行环境基于 Rhino 1.7.15,编写代码时请勿使用箭头函数(=>)或函数默认参数,以免报错。
  2. 安全性:不要在脚本中仅依靠变量值来判断权限,因为客户端代码可能被修改。涉及付费功能的核心逻辑,应依赖 Hamibot 平台的授权验证机制。
  3. 变量访问:在脚本中通过 vars 对象访问 API 传递的变量,确保变量名与 API 请求中的 vars 键名一致。

通过上述方式,你可以灵活地管理不同版本用户的变量配置,同时保障脚本的安全性和合规性。


补充回答 1

在 Hamibot 中,通过控制台定价计划来区分数值,核心是利用 hamibot.plan 对象获取当前的订阅计划信息。你可以读取 model(定价模式)或 name(计划名称)来判断用户权限,从而在脚本内部动态赋值。

代码实现示例

以下代码展示了如何检测计划类型,并据此将变量 myVar 设置为 a(免费)或 b(收费)。

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

// 1. 获取当前运行的计划信息
var planInfo = hamibot.plan;
var planModel = planInfo.model; // 获取定价模式,如 'free', 'paid' 等
var planName = planInfo.name;   // 获取计划名称

// 输出日志以便调试
log('当前计划名称:' + planName);
log('当前定价模式:' + planModel);
log('是否免费试用:' + planInfo.onFreeTrial);

// 2. 根据计划类型设置变量数值
var myVar;

// 注意:具体的 model 值取决于你在控制台配置的计划类型
// 通常免费版为 'free',付费版为 'paid' 或具体套餐名
if (planModel === 'free' || planInfo.onFreeTrial) {
    // 免费版或试用期的逻辑
    myVar = 'a';
    log('已识别为免费版,变量设置为:' + myVar);
} else {
    // 收费版的逻辑
    myVar = 'b';
    log('已识别为收费版,变量设置为:' + myVar);
}

// 3. 使用变量执行后续任务
toastLog('最终使用的变量值:' + myVar);

if (myVar === 'a') {
    // 执行免费版功能
    toastLog('运行免费版任务流程');
} else if (myVar === 'b') {
    // 执行收费版功能
    toastLog('运行收费版任务流程');
}

配置步骤

要让上述代码生效,你需要在 Hamibot 控制台完成以下配置:

  1. 创建定价计划

    • 登录 Hamibot 控制台,进入目标脚本的管理页面。
    • 找到“定价计划”或“市场发布”设置。
    • 创建一个免费计划(例如命名为“基础版”,模式设为 free)。
    • 创建一个付费计划(例如命名为“专业版”,设置相应价格,模式通常为 paid)。
  2. 发布脚本

    • 确保脚本已关联这两个计划并发布。
    • 用户在控制台或市场选择不同计划运行脚本时,hamibot.plan 返回的信息会随之改变。
  3. 运行验证

    • 使用免费账号运行脚本,日志应显示“免费版任务流程”。
    • 使用购买付费计划的账号运行脚本,日志应显示“收费版任务流程”。

注意事项

  • 环境兼容性:代码遵循 Rhino 1.7.15 规范,未使用箭头函数或 ES6+ 特性,确保在 Hamibot 环境中稳定运行。
  • 字段差异plan.model 的具体返回值(如 freepaid 或自定义字符串)取决于你在控制台的配置,请根据实际日志输出调整 if 判断条件。
  • 安全性:此方法依赖 Hamibot 平台下发的计划信息,比单纯在脚本内写死变量更安全,但仍建议将核心付费逻辑放在云端或通过 API 验证,防止脚本被本地篡改。
ℹ️ 本回答由 AI 生成,内容仅供参考