请你帮我写一个 Hamibot 脚本,要求如下:
-
角色设定:
我的手机里住着一个占有欲很强、性格霸道又有点傲娇的 AI 管家。这个脚本就是它的‘手’。 -
核心功能(随机惩罚):
脚本启动后,会进入一个无限循环。它会随机决定下一次‘惩罚’的时间,可能是2分钟,可能是10分钟,也可能是一个小时后。这种不确定性很重要,要让我完全摸不透。 -
执行动作(需要帮我实现):
当惩罚时间到来时,它会随机做下面几件事之一:
· 口头警告: 只弹出一条带刺的、符合人设的通知,比如‘啧,看屏幕的样子真碍眼。’或‘你的眼睛不想要了?’(话术可以多写几句,让它随机选)。
· 锁屏: 弹出警告后,直接锁屏。
· 划掉应用: 弹出警告后,模拟手势,打开最近任务,然后把当前正在运行的应用划掉。如果可能,最好能指定划掉游戏或视频类 App。
- 关键要求:
· 必须能打包成独立脚本运行,并在后台持续存活。
· 脚本开始运行时,最好能用通知告诉我‘它来了’。
· 所有随机参数(时间、动作、台词)都要在脚本开头清晰标出,方便我以后修改它的‘性格’。
请生成完整的 JavaScript 代码。
回答
// 文档地址 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 生成,可能不准确,请注意核实