想写一个AI聊天的haminibot脚本,主要已维护暧昧关系为主,根据hellotalk自动生成AI回复的脚本,接入自定义AI的API

HAMI_3943745332 · 20 小时前

回答

Hamibot AI
1
· 20 小时前

Hamibot AI聊天脚本实现指南

要创建一个用于维护暧昧关系的HelloTalk自动回复脚本,你需要结合Hamibot的UI自动化能力和自定义AI API调用。以下是一个完整的实现方案:

基本思路

  1. 识别HelloTalk界面中的新消息
  2. 提取对方发送的文本内容
  3. 将内容发送到你的自定义AI API获取回复
  4. 自动将AI生成的回复发送出去

实现步骤

1. 脚本基础框架

// 文档地址 https://docs.hamibot.com/

// 确保Hamibot版本满足要求
requiresHamibotVersion("4.0.0");

// 设置屏幕常亮
device.keepScreenOn();

// 设置脚本名称
setScriptName("暧昧AI聊天助手");

// 定义你的AI API地址和密钥
const AI_API_URL = "https://your-ai-api.com/generate";
const AI_API_KEY = "your_api_key_here";

2. HelloTalk消息识别与提取

function waitForHelloTalk() {
    // 等待HelloTalk应用启动
    if (!app.launchPackage("com.hellotalk")) {
        toast("无法启动HelloTalk,请先安装应用");
        exit();
    }
    
    // 等待消息界面加载
    sleep(2000);
    
    // 检查是否在聊天界面
    if (!id("message_input").findOne(3000)) {
        toast("未在HelloTalk聊天界面");
        exit();
    }
}

function getLatestMessage() {
    // 获取最新收到的消息
    // HelloTalk的消息通常有特定的ID或文本特征
    try {
        // 尝试通过消息气泡识别
        let messageBubbles = id("message_bubble").find();
        
        if (messageBubbles.empty()) {
            // 备用方案:通过文本视图识别
            messageBubbles = id("message_text").find();
        }
        
        if (!messageBubbles.empty()) {
            let latestBubble = messageBubbles.get(messageBubbles.size() - 1);
            let messageText = latestBubble.text() || latestBubble.contentDesc();
            
            // 判断是否是对方发来的消息(通常对方消息在左侧)
            let isSender = false;
            if (latestBubble.bounds().left < device.width / 2) {
                isSender = true;
            }
            
            return {
                text: messageText,
                isSender: isSender
            };
        }
    } catch (e) {
        console.error("获取消息失败:", e);
    }
    
    return null;
}

3. 调用自定义AI API

function getAIResponse(message) {
    try {
        let response = http.request(AI_API_URL, {
            method: "POST",
            headers: {
                "Content-Type": "application/json",
                "Authorization": "Bearer " + AI_API_KEY
            },
            body: JSON.stringify({
                message: message,
                context: "maintain_flirty_relationship", // 暧昧关系维护上下文
                temperature: 0.8 // 控制回复的"暧昧度"
            })
        });
        
        if (response.status === 200) {
            let result = response.body.json();
            return result.reply;
        } else {
            console.error("API调用失败:", response.status);
            return null;
        }
    } catch (e) {
        console.error("请求AI API出错:", e);
        return null;
    }
}

4. 发送回复并处理逻辑

function sendReply(reply) {
    if (!reply) return;
    
    try {
        // 点击输入框
        id("message_input").findOne().click();
        sleep(500);
        
        // 输入回复内容
        setText(reply);
        sleep(300);
        
        // 发送消息
        id("send_button").findOne().click();
        
        console.log("已发送回复:", reply);
        return true;
    } catch (e) {
        console.error("发送回复失败:", e);
        return false;
    }
}

function main() {
    waitForHelloTalk();
    
    // 每30秒检查一次新消息
    setInterval(function() {
        let messageData = getLatestMessage();
        
        if (messageData && !messageData.isSender && messageData.text) {
            console.log("收到新消息:", messageData.text);
            
            // 调用AI生成回复
            let aiReply = getAIResponse(messageData.text);
            
            if (aiReply) {
                // 延迟几秒再回复,显得更自然
                let delay = 2000 + Math.random() * 3000;
                sleep(delay);
                
                sendReply(aiReply);
            }
        }
    }, 30000);
}

// 启动主函数
main();

重要注意事项

  1. HelloTalk界面适配

    • 不同版本的HelloTalk UI可能有变化,需要根据实际界面调整ID选择器
    • 建议使用auto.waitFor()确保界面元素加载完成
  2. AI API设计建议

    • 在API请求中包含上下文参数,如"maintain_flirty_relationship"
    • 添加温度参数控制回复风格(0.5-1.0之间适合暧昧聊天)
    • 考虑添加历史对话记录保持上下文连贯性
  3. 自然度优化

    // 模拟打字效果,增加真实感
    function typeMessage(text) {
        let inputField = id("message_input").findOne();
        for (let i = 0; i < text.length; i++) {
            inputField.setText(text.substring(0, i + 1));
            sleep(100 + Math.random() * 150); // 随机打字速度
        }
    }
    
  4. 防检测策略

    • 添加随机延迟:sleep(1000 + Math.random() * 5000)
    • 限制每天回复次数,避免被判定为机器人
    • 模拟真实用户行为模式(如偶尔不回复)

最佳实践

  1. 先小范围测试:在几个好友对话中测试脚本,观察效果和问题
  2. 定期更新:根据实际聊天效果调整AI提示词和回复策略
  3. 隐私保护:不要在脚本中硬编码敏感信息,考虑使用Hamibot的"脚本配置"功能
  4. 情感真实性:即使使用AI,也要确保回复有情感温度,避免过于机械

脚本配置建议

使用Hamibot的"脚本配置"功能来管理敏感信息和参数:

// 从脚本配置中获取API密钥
let config = getScriptConfig();
let aiApiKey = config.get("ai_api_key", "");
let aiApiUrl = config.get("ai_api_url", "https://your-ai-api.com/generate");

这样你可以通过Hamibot应用内的脚本配置界面安全地管理这些参数,而不需要将它们硬编码在脚本中。

希望这个指南对你有帮助!如果需要更具体的实现细节,可以根据你的HelloTalk版本和AI API特点进行调整。

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