回答
在 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 控制台中配置定价计划。
- 登录 Hamibot 控制台,进入脚本管理页面。
- 设置免费计划和付费计划。
- 用户购买付费计划后,平台会自动授权,未购买用户无法运行付费版本脚本。
- 这种方式由平台层控制权限,比脚本内判断变量更安全。
注意事项
- 兼容性:Hamibot 脚本运行环境基于 Rhino 1.7.15,编写代码时请勿使用箭头函数(
=>)或函数默认参数,以免报错。 - 安全性:不要在脚本中仅依靠变量值来判断权限,因为客户端代码可能被修改。涉及付费功能的核心逻辑,应依赖 Hamibot 平台的授权验证机制。
- 变量访问:在脚本中通过
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 控制台完成以下配置:
-
创建定价计划:
- 登录 Hamibot 控制台,进入目标脚本的管理页面。
- 找到“定价计划”或“市场发布”设置。
- 创建一个免费计划(例如命名为“基础版”,模式设为
free)。 - 创建一个付费计划(例如命名为“专业版”,设置相应价格,模式通常为
paid)。
-
发布脚本:
- 确保脚本已关联这两个计划并发布。
- 用户在控制台或市场选择不同计划运行脚本时,
hamibot.plan返回的信息会随之改变。
-
运行验证:
- 使用免费账号运行脚本,日志应显示“免费版任务流程”。
- 使用购买付费计划的账号运行脚本,日志应显示“收费版任务流程”。
注意事项
- 环境兼容性:代码遵循 Rhino 1.7.15 规范,未使用箭头函数或 ES6+ 特性,确保在 Hamibot 环境中稳定运行。
- 字段差异:
plan.model的具体返回值(如free、paid或自定义字符串)取决于你在控制台的配置,请根据实际日志输出调整if判断条件。 - 安全性:此方法依赖 Hamibot 平台下发的计划信息,比单纯在脚本内写死变量更安全,但仍建议将核心付费逻辑放在云端或通过 API 验证,防止脚本被本地篡改。
ℹ️ 本回答由 AI 生成,内容仅供参考