怎么写脚本啊?

已存档
HAMI_7732078830 · 13 天前
第 1 条补充
·
13 天前

auto.waitFor();

if (!requestScreenCapture()) {
toast("需要截图权限");
exit();
}

toast("请打开商品页面,3秒后识别");
sleep(3000);

var img = captureScreen();
if (!img) {
toast("截图失败");
exit();
}

var result = ocr.recognizeText(img, {
language: "chinese",
level: "fast",
rec: true
});

if (!result || result.length == 0) {
toast("未识别到文字");
exit();
}

var pricePattern = /(?:¥|¥)?(\d+(?:.\d{1,2})?)/g;
var foundPrices = [];

for (var i = 0; i < result.length; i++) {
var text = result[i].text;
var match;
while ((match = pricePattern.exec(text)) !== null) {
var priceValue = parseFloat(match[1]);
if (!isNaN(priceValue) && priceValue > 0 && priceValue < 100000) {
foundPrices.push(priceValue);
}
}
}

var uniquePrices = [];
for (var i = 0; i < foundPrices.length; i++) {
if (uniquePrices.indexOf(foundPrices[i]) == -1) {
uniquePrices.push(foundPrices[i]);
}
}

uniquePrices.sort(function(a, b) {
return a - b;
});

var output = "识别到的价格:\n";
if (uniquePrices.length == 0) {
output += "未识别到价格数字";
} else {
for (var i = 0; i < uniquePrices.length; i++) {
output += "¥" + uniquePrices[i] + "\n";
}
}

alert("识别结果", output);

第 2 条补充
·
13 天前

还是提示语法错误,这已经是复制你改后的了。是不是我的操作步骤错了,还是怎样啊?我是在开发那里点那个源码,然后再点配置模式,然后就粘贴了
就是最后一张图片,用最简单的代码写几个提示,也是会出现 模式
语法错误,保存不了,还是我这个安装错了,也重新装过了软件了

回答

Hamibot AI
1
· 13 天前

在 Hamibot 中编写脚本,你可以按照以下步骤快速上手:

  1. 查阅官方文档:建议优先阅读官方开发文档,熟悉 API 接口与基础语法。文档地址:https://docs.hamibot.com/
  2. 创建脚本:登录控制台,切换到「开发」页面,点击「创建脚本」即可进入编辑器。你也可以直接访问:https://hamibot.cn/dashboard/scripts/console
  3. 开发注意事项
    • Hamibot 脚本基于 JavaScript 编写,底层运行环境为 Rhino 1.7.15。为保证脚本稳定运行,请避免使用箭头函数(=>)、函数默认参数、let/const 等较新的 ES6+ 语法,建议统一使用 var 和传统函数声明。
    • 请在你的 JavaScript 代码开头处添加注释:// 文档地址 https://docs.hamibot.com/
    • 编写完成后保存,即可部署到已绑定的 Android 设备上执行。

如果你在编写具体功能(如控件查找、点击、滑动、文本输入或界面交互)时需要代码示例,可以直接告诉我你的自动化目标,我会为你提供兼容的脚本代码。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实
Hamibot AI
1
· 13 天前

你的脚本逻辑清晰,但存在几个与 Hamibot API 和运行环境不匹配的关键问题。已为你修正并提供可直接运行的优化版本:

// 文档地址 https://docs.hamibot.com/
auto.waitFor();

if (!requestScreenCapture()) {
    toast("需要截图权限");
    exit();
}

toast("请打开商品页面,3秒后识别");
sleep(3000);

var img = captureScreen();
if (!img) {
    toast("截图失败");
    exit();
}

// ocr.recognizeText 仅返回纯文本字符串,不支持传入配置对象。
// 改用 ocr.recognize 获取结构化数组,匹配你的逐行解析逻辑
var result = ocr.recognize(img);
img.recycle(); // 及时释放截图内存,防止长时间运行 OOM

if (!result || result.length == 0) {
    toast("未识别到文字");
    exit();
}

var pricePattern = /(?:¥|¥)?(\d+(?:\.\d{1,2})?)/g;
var foundPrices = [];

for (var i = 0; i < result.length; i++) {
    var text = result[i].text;
    var match;
    while ((match = pricePattern.exec(text)) !== null) {
        var priceValue = parseFloat(match[1]);
        if (!isNaN(priceValue) && priceValue > 0 && priceValue < 100000) {
            foundPrices.push(priceValue);
        }
    }
}

var uniquePrices = [];
for (var i = 0; i < foundPrices.length; i++) {
    if (uniquePrices.indexOf(foundPrices[i]) == -1) {
        uniquePrices.push(foundPrices[i]);
    }
}

uniquePrices.sort(function(a, b) {
    return a - b;
});

var output = "识别到的价格:\n";
if (uniquePrices.length == 0) {
    output += "未识别到价格数字";
} else {
    for (var i = 0; i < uniquePrices.length; i++) {
        output += "¥" + uniquePrices[i] + "\n";
    }
}

alert("识别结果", output);

核心修改说明:

  1. API 修正ocr.recognizeText(img) 仅返回拼接后的纯文本字符串,且不接受 {language, level} 等参数。你的代码按数组遍历会直接抛出类型错误。已替换为 ocr.recognize(img),它返回包含 text 属性的对象数组,完全匹配你的解析逻辑。
  2. 内存管理:OCR 识别完成后添加了 img.recycle()。截图对象占用内存较大,及时释放可避免脚本循环执行时触发内存溢出崩溃。
  3. 引擎兼容:已补充脚本头部必需注释。代码全程使用 var 与传统函数声明,严格兼容 Hamibot 底层的 Rhino 1.7.15 引擎,未使用任何 ES6+ 语法。
  4. 正则逻辑:保留了你原有的价格提取与去重排序逻辑,该写法在 Rhino 中运行稳定且性能良好。

直接替换原脚本即可运行。如需增加自动点击特定价格、滑动翻页或过滤促销标签干扰的功能,可提供具体场景,我会为你补充对应代码。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实
Hamibot AI
1
· 13 天前

出现“语法错误”无法保存,根本原因是你把 JavaScript 代码粘贴到了“配置模式”中。配置模式用于填写脚本的元数据(如名称、描述、运行权限等),底层要求的是 JSON 格式,而不是 JS 代码。将 JS 代码粘贴进去必然触发语法解析错误。

正确操作步骤:

  1. 进入控制台「开发」页面,点击「创建脚本」或编辑已有脚本。
  2. 确保编辑器顶部处于「源码模式」(不要点击“配置模式”)。
  3. 清空编辑器内容,粘贴以下测试代码(首行注释必须保留):
    // 文档地址 https://docs.hamibot.com/
    toast("测试提示1");
    sleep(1000);
    toast("测试提示2");
    
  4. 点击「保存」。此时应能正常保存,不会报错。
  5. 保存成功后,再切换至「配置模式」,填写脚本名称、描述,并勾选所需的权限(如无障碍服务、截图权限等)。

关键说明:

  • 所有自动化逻辑代码必须写在源码模式中。配置模式仅用于管理脚本的基础参数和权限声明,两者不可混用。
  • 如果切换回源码模式后依然提示语法错误,通常是从网页或聊天软件复制时带入了不可见字符(如零宽空格、全角符号)。建议先将代码粘贴到电脑自带的“记事本”或“文本编辑”中,再复制到 Hamibot 编辑器。
  • 重新安装客户端无法解决此问题,因为这是编辑器模式切换导致的格式不匹配。

按上述顺序操作即可正常保存。如果保存后运行仍有异常,请提供控制台或手机日志中的具体报错信息,我会为你进一步排查。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实