请你帮我写一个 Hamibot 脚本,要求如下:

  1. 角色设定:
    我的手机里住着一个占有欲很强、性格霸道又有点傲娇的 AI 管家。这个脚本就是它的‘手’。

  2. 核心功能(随机惩罚):
    脚本启动后,会进入一个无限循环。它会随机决定下一次‘惩罚’的时间,可能是2分钟,可能是10分钟,也可能是一个小时后。这种不确定性很重要,要让我完全摸不透。

  3. 执行动作(需要帮我实现):
    当惩罚时间到来时,它会随机做下面几件事之一:

· 口头警告: 只弹出一条带刺的、符合人设的通知,比如‘啧,看屏幕的样子真碍眼。’或‘你的眼睛不想要了?’(话术可以多写几句,让它随机选)。
· 锁屏: 弹出警告后,直接锁屏。
· 划掉应用: 弹出警告后,模拟手势,打开最近任务,然后把当前正在运行的应用划掉。如果可能,最好能指定划掉游戏或视频类 App。

  1. 关键要求:

· 必须能打包成独立脚本运行,并在后台持续存活。
· 脚本开始运行时,最好能用通知告诉我‘它来了’。
· 所有随机参数(时间、动作、台词)都要在脚本开头清晰标出,方便我以后修改它的‘性格’。

请生成完整的 JavaScript 代码。

HAMI_1240515395 · 8 小时前

回答

Hamibot AI
1
· 8 小时前
// 文档地址 https://docs.hamibot.com/

/*
 * 霸道管家惩罚脚本
 * 启动后会在随机时间执行随机惩罚(口头警告、锁屏、划掉应用)
 * 请确保已授予 Hamibot 无障碍服务和后台弹出权限
 * 可通过修改下方配置区调节管家的“性格”
 */

// ==================== 配置区(可随心修改) ====================

// 候选等待时间(单位:分钟),脚本会随机从中选取一个
var WAIT_TIME_MINUTES = [2, 5, 10, 30, 60];

// 可选惩罚动作:warning(口头警告)、lock(锁屏)、kill(划掉应用)
var ACTIONS = ["warning", "lock", "kill"];

// 口头警告话术池,会随机抽取一条
var WARNING_MESSAGES = [
    "啧,看屏幕的样子真碍眼。",
    "你的眼睛不想要了?",
    "谁允许你一直盯着屏幕?",
    "手放下,别碰它。",
    "再玩下去我可要生气了。",
    "是手机重要还是我重要?",
    "再这样我就不理你了……哼。",
    "罚你立刻把手机放下。",
    "看这么久,眼睛不累吗?笨蛋。",
    "再不听话我就把它锁了。"
];

// 执行划掉应用时,是否只针对游戏/视频类 App(true 则会检查当前应用包名)
var ONLY_KILL_GAME_VIDEO = true;

// 被认为是游戏或视频的应用包名关键词(部分匹配,不区分大小写)
var TARGET_APP_KEYWORDS = [
    "game", "txvideo", "youku", "douyutv", "bilibili",
    "com.tencent.tmgp", "com.netease", "com.tencent.ig",
    "com.kugou.android", "com.ss.android.ugc.aweme"
];

// 是否在脚本启动时发送通知“它来了”
var NOTIFY_ON_START = true;

// ==================== 配置区结束 ====================

// 工具函数
function randomInt(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

function randomChoice(array) {
    return array[randomInt(0, array.length - 1)];
}

// 检查当前前台应用是否为游戏/视频类
function isGameOrVideo() {
    var pkg = currentPackage();
    if (!pkg) {
        return false;
    }
    pkg = pkg.toLowerCase();
    for (var i = 0; i < TARGET_APP_KEYWORDS.length; i++) {
        if (pkg.indexOf(TARGET_APP_KEYWORDS[i].toLowerCase()) !== -1) {
            return true;
        }
    }
    return false;
}

// 执行惩罚动作
function act(action) {
    var msg = randomChoice(WARNING_MESSAGES);
    // 先弹出警告通知
    notify(msg);

    if (action === "warning") {
        // 仅口头警告,通知已弹出
        return;
    }

    if (action === "lock") {
        sleep(1500); // 等通知显示一下
        device.lockScreen();
        return;
    }

    if (action === "kill") {
        // 如果只针对游戏/视频,且当前前台应用不是目标,则跳过划掉
        if (ONLY_KILL_GAME_VIDEO && !isGameOrVideo()) {
            return;
        }

        sleep(2000);
        // 打开最近任务
        recentApps();
        sleep(1000);

        // 从屏幕底部向上滑动,划掉最前面的应用(通用手势,大部分手机适用)
        var w = device.width;
        var h = device.height;
        swipe(w / 2, h * 0.9, w / 2, h * 0.1, 500);
        sleep(500);
        // 回到桌面
        home();
    }
}

// 主循环
function main() {
    // 启动通知
    if (NOTIFY_ON_START) {
        notify("它来了。");
    }

    // 无限循环,持续运作
    while (true) {
        // 随机选择等待时间(分钟转毫秒)
        var waitMinutes = randomChoice(WAIT_TIME_MINUTES);
        var waitMs = waitMinutes * 60 * 1000;
        sleep(waitMs);

        // 随机选择动作
        var action = randomChoice(ACTIONS);
        act(action);
    }
}

// 启动脚本
main();
ℹ️ 内容由 AI 生成,可能不准确,请注意核实