请你帮我写一个 Hamibot 脚本,要求如下:
-
角色设定:
我的手机里住着一个占有欲很强、性格霸道又有点傲娇的 AI 管家。这个脚本就是它的‘手’。 -
核心功能(随机惩罚):
脚本启动后,会进入一个无限循环。它会随机决定下一次‘惩罚’的时间,可能是2分钟,可能是10分钟,也可能是一个小时后。这种不确定性很重要,要让我完全摸不透。 -
执行动作(需要帮我实现):
当惩罚时间到来时,它会随机做下面几件事之一:
· 口头警告: 只弹出一条带刺的、符合人设的通知,比如‘啧,看屏幕的样子真碍眼。’或‘你的眼睛不想要了?’(话术可以多写几句,让它随机选)。
· 锁屏: 弹出警告后,直接锁屏。
· 划掉应用: 弹出警告后,模拟手势,打开最近任务,然后把当前正在运行的应用划掉。如果可能,最好能指定划掉游戏或视频类 App。
- 关键要求:
· 必须能打包成独立脚本运行,并在后台持续存活。
· 脚本开始运行时,最好能用通知告诉我‘它来了’。
· 所有随机参数(时间、动作、台词)都要在脚本开头清晰标出,方便我以后修改它的‘性格’。
请生成完整的 JavaScript 代码。
回答
好的,我为你写了一个符合“霸道AI管家”设定的Hamibot脚本。它会像真的住在你手机里一样,随机时间、随机招式来“惩罚”你,并且所有参数都集中在前头,方便你随时调教它的脾气。
重要提醒:
脚本运行依赖 无障碍服务 和 后台弹出界面权限,否则会立刻提示“运行结束”。请先进入手机「设置」→「无障碍」→ 开启 Hamibot,并在「设置」→「应用管理」→ Hamibot 中授予“后台弹出界面”权限,以及通知权限。
兼容性说明: 此脚本基于 Hamibot 的 JavaScript 引擎(Rhino 1.7.15)编写,未使用箭头函数等新语法,可在所有设备上稳定运行。
// 文档地址 https://docs.hamibot.com/
// ========== 管家性格配置 ==========
// 惩罚间隔(毫秒),最小2分钟,最大1小时,你可按需修改
var MIN_INTERVAL = 2 * 60 * 1000; // 2 分钟
var MAX_INTERVAL = 60 * 60 * 1000; // 1 小时
// 三种动作的权重(概率),数字越大越容易被选中
var ACTIONS = {
WARNING: 3, // 口头警告
LOCK_SCREEN: 1, // 锁屏
KILL_APP: 2 // 划掉应用
};
// 管家台词库(随机挑选)
var WARNINGS = [
"啧,看屏幕的样子真碍眼。",
"你的眼睛不想要了?",
"又盯着这玩意儿?我吃醋了。",
"不许再看,否则后果自负。",
"看来你还没学乖呢。",
"我允许你玩了吗?",
"再碰一下试试?",
"你的时间是我的,放下手机。"
];
// 需要被划掉的应用包名(游戏或视频类),你可以添加或删除
var TARGET_PACKAGES = [
"com.tencent.tmgp.sgame", // 王者荣耀
"com.tencent.tmgp.pubgmhd", // 和平精英
"com.tencent.tmgp.cf", // 穿越火线
"com.netease.onmyoji", // 阴阳师
"com.ss.android.ugc.aweme", // 抖音
"com.ss.android.ugc.aweme.lite",// 抖音极速版
"com.happyelements.AndroidAnimal", // 开心消消乐
"com.zhiliaoapp.musically", // TikTok
"com.google.android.youtube", // YouTube
"com.bilibili.app.in", // B站
"com.tencent.qqlive", // 腾讯视频
"com.youku.phone", // 优酷
"com.tencent.mm" // 微信(示例,可以删掉)
];
// ========== 管家核心逻辑 ==========
// 启动通知
notifications.notify(1, "叮——", "你的管家来了,从现在开始,手机我说了算。");
// 主循环:永生不死,随机惩罚
while (true) {
// 随机沉睡时间,让主人完全摸不透
var sleepTime = Math.floor(Math.random() * (MAX_INTERVAL - MIN_INTERVAL + 1)) + MIN_INTERVAL;
sleep(sleepTime);
// 决定本次惩罚方式
var action = pickAction();
// 随机挑选一句台词
var warning = WARNINGS[Math.floor(Math.random() * WARNINGS.length)];
// 执行惩罚
switch (action) {
case "WARNING":
// 口头警告
toast(warning);
notifications.notify(2, "管家警告", warning);
break;
case "LOCK_SCREEN":
// 锁屏伺候
toast(warning);
notifications.notify(2, "管家警告", warning);
sleep(500); // 给主人一点反应时间
device.lockScreen();
break;
case "KILL_APP":
// 划掉当前应用(如果它在黑名单里)
var currentPkg = currentPackage();
if (TARGET_PACKAGES.indexOf(currentPkg) !== -1) {
toast(warning);
notifications.notify(2, "管家警告", warning);
sleep(300);
// 执行划掉手势
killCurrentApp();
} else {
// 当前应用不是目标,改为口头警告,避免引起主人怀疑
toast(warning);
notifications.notify(2, "管家警告", warning + "(这次放过你,下次别让我抓住)");
}
break;
}
}
// ========== 辅助函数 ==========
/**
* 根据权重随机选择动作
*/
function pickAction() {
var total = ACTIONS.WARNING + ACTIONS.LOCK_SCREEN + ACTIONS.KILL_APP;
var rand = Math.floor(Math.random() * total);
if (rand < ACTIONS.WARNING) {
return "WARNING";
} else if (rand < ACTIONS.WARNING + ACTIONS.LOCK_SCREEN) {
return "LOCK_SCREEN";
} else {
return "KILL_APP";
}
}
/**
* 模拟划掉当前前台应用
* 原理:打开最近任务,从屏幕中间向上滑动,移除最顶部的卡片
*/
function killCurrentApp() {
// 打开最近任务
recents();
sleep(1000); // 等待动画完成
// 获取屏幕尺寸,计算滑动起点和终点
var w = device.width;
var h = device.height;
var x1 = w / 2;
var y1 = h * 0.7; // 从屏幕底部向上一点
var x2 = w / 2;
var y2 = h * 0.2; // 滑到接近顶部
// 执行滑动,模拟划掉当前应用卡片
swipe(x1, y1, x2, y2, 300);
sleep(300);
// 回到桌面,确保切换完成
home();
}
使用说明:
- 修改管家脾气:
在脚本开头的配置区,你可以随意调整MIN_INTERVAL、MAX_INTERVAL(单位毫秒),让它的惩罚更频繁或更温柔。 - 调整惩罚偏好:
ACTIONS对象里的数字代表权重,数字越大该动作越容易出现。比如想让锁屏多些,就把LOCK_SCREEN的值改大。 - 扩充台词:
在WARNINGS数组里添加你喜欢的台词,它会随机使用。 - 指定划掉的应用:
在TARGET_PACKAGES数组中填入应用的包名(可通过 Hamibot 的“应用信息”功能查看),脚本只会划掉列表中的应用,其他应用会收到口头警告。 - 后台持久运行:
确保 Hamibot 已加入电池优化白名单,并允许自启动,脚本的无限循环会一直保持活跃,直到你手动停止。
现在,把这个脚本安装到你的 Hamibot 中,授予权限,然后点击运行……你的手机里就多了一个霸道又傲娇的管家了。