auto.waitFor();

const{ loopSecond,loopBreak,commentText}= hamibot.env;

console.show();
let comments = commentText.split("\n");
function deepCopy(obj) {
return JSON.parse(JSON.stringify(obj));
}
let queue = deepCopy(comments);
// alert(queue);

while(true) {
if(queue.length===0){
queue = deepCopy(comments);
//console.log('重置队列');
sleep(loopBreak*100); // 原1000→改为100,重置间隔缩短10倍
}

let comment = queue.shift();
if (!comment || comment.trim() === "") {
//console.log("跳过空评论");
sleep(loopSecond*100); // 原1000→改为100,空评论间隔缩短10倍
continue;
}

// 极速激活输入框逻辑(保持不变)
let isInputActivated = false;
try {
let inputElement = text('说点什么...').findOne(200);
if(inputElement){
let position = inputElement.bounds();
click(position.centerX(), position.centerY());
sleep(100);
isInputActivated = true;
console.log("冲(极速模式)");
}
} catch (e) {
//console.log("激活失败,重试1次");
sleep(100);
try {
let inputElement = text('说点什么...').findOne(200);
if(inputElement){
click(inputElement.bounds().centerX(), inputElement.bounds().centerY());
sleep(100);
isInputActivated = true;
}
} catch (err) {
console.log("输入框激活失败,跳过本次");
}
}

// 输入+发送逻辑(保持不变)
if (isInputActivated) {
try {
let editText = className('EditText').findOne(200);
if(editText){
editText.setText("");
editText.setText(comment);
//console.log("输入评论:" + comment);
}
let sendBtn = text("发送").findOne(200);
if(sendBtn){
sendBtn.click();
//console.log("发送评论:" + comment);
}
} catch (e) {
console.log("输入/发送失败:" + e.message);
}
}

//console.log("间隔"+loopSecond);
sleep(loopSecond*100); // 原1000→改为100,发送间隔缩短10倍
}这是我的代码,想加一个音量键控制启动

已存档
HAMI_2787138343 · 28 天前

回答

Hamibot AI
1
· 28 天前

为了给你的脚本添加音量键控制启动功能,我会修改代码,使其在按下音量键(音量加或减)时开始执行主循环,再次按下时可以停止。以下是修改后的代码:

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

// 获取环境变量
const { loopSecond, loopBreak, commentText } = hamibot.env;
let comments = commentText.split("\n");
function deepCopy(obj) {
  return JSON.parse(JSON.stringify(obj));
}
let queue = deepCopy(comments);

// 运行状态标志
let running = false;

// 开启按键监听
events.observeKey();
events.on('key', function(keyEvent) {
  // 音量键 key code: 24(音量加), 25(音量减)
  if (keyEvent.keyCode === 24 || keyEvent.keyCode === 25) {
    running = !running; // 切换运行状态
    console.log("脚本状态: " + (running ? "开始运行" : "停止运行"));
    keyEvent.preventDefault(); // 阻止默认音量调整行为
  }
});

// 主循环
while (true) {
  if (running) {
    if (queue.length === 0) {
      queue = deepCopy(comments);
      sleep(loopBreak * 100); // 重置队列后的间隔
    }
    
    let comment = queue.shift();
    if (!comment || comment.trim() === "") {
      sleep(loopSecond * 100); // 空评论间隔
      continue;
    }

    // 极速激活输入框逻辑
    let isInputActivated = false;
    try {
      let inputElement = text('说点什么...').findOne(200);
      if (inputElement) {
        let position = inputElement.bounds();
        click(position.centerX(), position.centerY());
        sleep(100);
        isInputActivated = true;
        console.log("冲(极速模式)");
      }
    } catch (e) {
      sleep(100);
      try {
        let inputElement = text('说点什么...').findOne(200);
        if (inputElement) {
          click(inputElement.bounds().centerX(), inputElement.bounds().centerY());
          sleep(100);
          isInputActivated = true;
        }
      } catch (err) {
        console.log("输入框激活失败,跳过本次");
      }
    }

    // 输入和发送逻辑
    if (isInputActivated) {
      try {
        let editText = className('EditText').findOne(200);
        if (editText) {
          editText.setText("");
          editText.setText(comment);
        }
        let sendBtn = text("发送").findOne(200);
        if (sendBtn) {
          sendBtn.click();
        }
      } catch (e) {
        console.log("输入/发送失败:" + e.message);
      }
    }

    sleep(loopSecond * 100); // 发送间隔
  } else {
    sleep(100); // 当未运行时,短暂睡眠以减少CPU使用
  }
}

修改说明:

  1. 添加音量键监听:使用 events.observeKey()events.on('key', ...) 监听音量键(key code 24 和 25)。按下音量键时,切换 running 状态。
  2. 运行状态控制:通过 running 变量控制主循环的执行。当 runningtrue 时,执行评论发送逻辑;为 false 时,睡眠等待。
  3. 阻止默认行为keyEvent.preventDefault() 防止音量键调整设备音量。
  4. 主循环优化:将原来的无限循环重构为可中断的循环,根据 running 状态执行或睡眠。

使用方式:

  • 运行脚本后,脚本会等待无障碍服务并显示控制台。
  • 按下音量加或减键开始执行评论发送。
  • 再次按下音量键停止执行。
  • 环境变量 loopSecondloopBreakcommentText 仍然有效。

确保Hamibot具有无障碍服务和悬浮窗权限。如果有问题,检查按键监听是否正常工作(某些设备可能需要额外权限)。

ℹ️ 本回答由 AI 生成,内容仅供参考