目前只支持群聊,实现方案可能也不是最好的,一些参数可能需要根据手机的情况做些调整。。。

里面的图灵机器人直接引用了论坛里 @O了吗 的‘QQ机器人’中的代码,在此感谢。。。


"auto";

//设置无障碍模式 fast为启用缓存
auto();

//暂时只支持群聊
toast("打开微信群聊天界面");

/**
 * a4 : 聊天界面 时间控件 id
 * apt: 聊天列表页 聊天摘要
 * jg:聊天界面 头像
 * aec > ae2:聊天界面  聊天图片
 * jh : 聊天昵称
 * ji:
 * y:头像和消息的父级  一个消息块
 * 
 * aab : 聊天界面 输入框
 * hj: 聊天界面 标题栏
 */

//console.log(text('微信').find());
//console.log(id('aab').exists());
//console.log(id('aps').findOne());
//log(id('ji').findOnce(id('ji').find().size()-1).parent().children().findOne(id('jh')));

var wait = 0;

while(1){
    var msg = getMsg();
    log(msg); 
    if(msg){
        sendMsg(ai(msg[1]));
        wait = 0;
    }else{
        sleep(1000); //没有新消息 等待1秒  ***这里可以根据情况调整***
        wait += 1000;

        //5秒点击一次 保持屏幕常亮
        if(wait > 5000){
            if(id('ji').exists())
            id('ji').findOne().click(); 
            wait = 0;
        }
    }
}


function getMsg(){

    if(currentActivity() != 'com.tencent.mm.ui.LauncherUI'){
        //不在聊天Activity

        //先判断是否在微信中
        if(currentActivity().search('com.tencent.mm') == -1){
            //当前 APP 不是微信
            return false;
            //app.launch("com.tencent.mm");
        }
        //不在聊天Activity ,则有可能是文字详情界面  点击任意区域回到聊天界面(点状态栏区域比较保险)
        press(1 ,1,1);
        sleep(100); //这个时间根据手机的响应速度可能要稍微调整 ***这里可以根据情况调整***
    }
    if(!id('aab').exists()  || !id('ji').exists()){
        //没有找到输入框则表示当前界面不是聊天窗口
        return false;
    }


    //最后一条文字信息的兄弟元素,即信息内容和昵称 ,如果没有昵称则这条信息是自己发出的
    var ji_jh = id('ji').findOnce(id('ji').find().size()-1).parent().children();
    //昵称
    var jh = ji_jh.findOne(id('jh'));
    if(jh == null)return false;
    //信息内容
    var ji = ji_jh.findOne(id('ji'));

    //微信的聊天文本不能直接获取到 这里模拟双击在文本详情界面获取内容
    //获取文字区域 模拟双击
    var last_ji_rect = ji.bounds();
    console.log(press(last_ji_rect.centerX() ,last_ji_rect.centerY(),1));
    sleep(40); //双击间隔时间  ***这里可以根据情况调整***
    console.log(press(last_ji_rect.centerX() ,last_ji_rect.centerY(),1));


    var afv = id('afv').findOne().text();
    press(last_ji_rect.centerX() ,last_ji_rect.centerY(),1);
    return [jh.text() ,afv];
}

function sendMsg(str){
    //设置输入框文本
    id('aab').setText(str);

    //获取标题栏区域并点击,解决发送按钮获取不到的问题
    var hj = id('hj').findOne().bounds();
    click(hj.centerX(), hj.centerY());

    //点击发送
    id('aah').click();
}

function ai(msg) {
    var url = "http://www.tuling123.com/openapi/api";
    id1 = "llmjk";
    var res = http.post(url, {
      key: "65458a5df537443b89b31f1c03202a80", //图灵
      //key: "e0fcda33be9847c8b8534abe51b4b095", //唐嫣
      // key: "b4438ca194064134afa28f686fbd04a5", //my图灵
      info: msg,
      userid: "1",
    });
    var html = res.body.string();
    eval("b=" + html);
    return b.text;
  }
最后由 dubox 编辑
  • 3
    帖子
  • 1455
    浏览

与 Auto.js 的连接断开,我们正在尝试重连,请耐心等待