原始 apk: 保护生态apk
自助 激活码
技术选型
由于平台更新速度快,为了方便更新,维护,修复bug等。采用 autojs
软件源码
如果有任何问题欢迎交流。源码如下:
"ui";
storage = storages.create("界面配置");//初始化一个可以保存界面配置的文本 ,这里的文本名称为:界面配置
os = false;
ini()
恰恰ui()
function 恰恰ui() {
ui.layout(
<vertical bg="#B0E0E6" h="*" >;
<ScrollView>
<vertical id="恰恰设置" alpha="1" bg="#B0E0E6" layout_gravity="left" w="*" >
<text gravity="center" textColor="red" textSize="25sp" text="当前恰恰设置"></text>
<horizontal gravity="left" >
<checkbox id="恰恰_主动招呼" text="主动打招呼" textSize="15sp" checked={相亲数据.get("恰恰_主动招呼", true) == false ? false : true} />;
</horizontal>
<horizontal gravity="left" >
<checkbox id="恰恰_话术招呼" text="发消息" textSize="15sp" checked={相亲数据.get("恰恰_话术招呼", true) == false ? false : true} />;
<checkbox id="恰恰_视频招呼" text="打视频" textSize="15sp" checked={相亲数据.get("恰恰_视频招呼", false) == false ? false : true} />;
<checkbox id="飘屏" text="飘屏" textSize="15sp" checked={相亲数据.get("飘屏", false) == false ? false : true} />;
</horizontal>
<horizontal>
<text text="单个用户打招呼次数:" textStyle="bold" textSize="15" />
<input id="恰恰_招呼次数" hint="数字" textColor="#dd000000" >{相亲数据.get("恰恰_招呼次数", 1)}</input>;
<text text="次" />
</horizontal>
<horizontal gravity="left" >
<checkbox id="恰恰_新消息" text="新消息智能聊天" textSize="15sp" checked={相亲数据.get("恰恰_新消息", true) == false ? false : true} />;
<checkbox id="恰恰_接视频" text="自动接视频" textSize="15sp" checked={相亲数据.get("恰恰_接视频", false) == false ? false : true} />;
</horizontal>
<horizontal>
<text text="自动打视频对方未接听挂断时间:" textStyle="bold" textSize="15" />
<input id="挂断时间" hint="数字" textColor="#dd000000" >{相亲数据.get("挂断时间", 15)}</input>;
<text text="秒" />
</horizontal>
<horizontal>
<text text="发送等待时间:" textStyle="bold" textSize="15" />
<input id="恰恰_发送等待" hint="数字" textColor="#dd000000" >{相亲数据.get("恰恰_发送等待", 0)}</input>;
<text text="秒" />
</horizontal>
<horizontal>
<text text="发几个人后刷新一下:" textStyle="bold" textSize="15" />
<input id="恰恰_私信数量" hint="数字" textColor="#dd000000" >{相亲数据.get("恰恰_私信数量", 80)}</input>;
<text text="人" />
</horizontal>
<horizontal gravity="left" >;
<text text="回复消息查找页数:" textStyle="bold" textSize="15" />
<input id="查找页数" hint="数字" textColor="#dd000000" >{相亲数据.get("查找页数", 15)}</input>;
<text text="页;" />
</horizontal>
<horizontal>
<text text="处理新消息时允许时间:" textStyle="bold" textSize="15" />
<input id="恰恰_消息空闲" hint="数字" textColor="#dd000000" >{相亲数据.get("恰恰_消息空闲", 30)}</input>;
<text text="秒" />
</horizontal>
<checkbox id="日志显示" text="日志显示" textSize="18sp" checked={相亲数据.get("日志显示", true) == false ? false : true} />;
<button id="返回键" text="返回" textSize="30sp" style="Widget.AppCompat.Button.Colored" w="*" />;
<button id="恰恰_删除" text="删除用户数据" textSize="30sp" style="Widget.AppCompat.Button.Colored" w="*" />;
<button id="开始恰恰" text="开始恰恰" textSize="40sp" style="Widget.AppCompat.Button.Colored" w="*" />;
<button id="欢迎使用" text="欢迎使用" textSize="60sp" style="Widget.AppCompat.Button.Colored" w="*" />;
</vertical>
</ScrollView>
</vertical>
);
ui.返回键.on("click", () => {
back()
});
ui.恰恰_删除.on("click", () => {
相亲数据.remove("恰恰_namemod")
toastLog("删除用户招呼数据成功,现在将重新开始记录数据!")
});
ui.开始恰恰.on("click", () => {
toastLog("启动中。点一次就可以哦")
if (相亲数据.get("自定关键词话术")) {
关键词话术 = 相亲数据.get("自定关键词话术").split("\r\n");
} else if (相亲数据.get("关键词话术")) {
关键词话术 = 相亲数据.get("关键词话术").split("\r\n");
}
if (相亲数据.get("自定通用话术")) {
通用话术 = 相亲数据.get("自定通用话术")
} else if (相亲数据.get("通用话术")) {
通用话术 = 相亲数据.get("通用话术")
}
if (相亲数据.get("自定主动话术")) {
主动话术 = 相亲数据.get("自定主动话术")
} else if (相亲数据.get("主动话术")) {
主动话术 = 相亲数据.get("主动话术")
}
当前app = getAppName("com.qiaqiachat.vip")
if (getAppName("com.qiaqiachat.vip")) {
当前app = getAppName("com.qiaqiachat.vip")
} else {
toastLog("您没有安装恰恰,脚本停止!")
exit()
}
当前app版本 = 应用版本("com.qiaqiachat.vip")
相亲数据.put("恰恰_主动招呼", true);
相亲数据.put("恰恰_新消息", ui.恰恰_新消息.checked);
相亲数据.put("恰恰_视频招呼", ui.恰恰_视频招呼.checked);
相亲数据.put("恰恰_话术招呼", ui.恰恰_话术招呼.checked);
相亲数据.put("飘屏", ui.飘屏.checked);
相亲数据.put("恰恰_接视频", ui.恰恰_接视频.checked);
相亲数据.put("恰恰_发送等待", ui.恰恰_发送等待.text());
相亲数据.put("恰恰_消息空闲", ui.恰恰_消息空闲.text());
相亲数据.put("恰恰_招呼次数", ui.恰恰_招呼次数.text());
相亲数据.put("恰恰_私信数量", ui.恰恰_私信数量.text());
相亲数据.put("挂断时间", ui.挂断时间.text());
相亲数据.put("查找页数", ui.查找页数.text());
相亲数据.put("日志显示", ui.日志显示.checked);
// jihuomaCheck(cacheCode)
huidiao = true
setTimeout(function () {
if (huidiao == true) {
threads.start(function () {
home()
悬浮窗()
if (相亲数据.get("日志显示", true)) {
日志显示()
setInterval(() => {
window.setSize(device.width, device.height / 4)
window.setPosition(0, Math.round(1330 * h / 1920))
window.setTouchable(false);
}, 1000);
}
});
threads.start(function () {
main(当前app, 当前app版本)
});
}
}, 1000);
});
}
//下拉框保存界面配置
// function 存储数据2() {
// storage.put("sp2", ui.sp2.getSelectedItemPosition());//保存id为 sp1 的下拉框选项 到界面配置文本
// }
/*
如果读取下拉框sp1 在界面配置文本中不等于 undefined 则 设置下拉框sp1的选中项为 读取下拉框sp1保存的值
*/
function main(应用名称, 版本号) {
主线程 = threads.start(function () {
home()
// try {
while (true) {
log("xxxx")
启动应用(当前app, 当前app版本)
开始恰恰()
}
// } catch (error) {
// console.error("主线程,出现未知异常!")
// }
});
// 检测线程 = threads.start(function () {
// while (true) {
// // try {
// 前台检测(应用名称, 版本号)
// // } catch (error) {
// // console.error("前台检测线程,出现未知异常!")
// // }
// }
// });
}
function 开始恰恰() {
console.info("开始运行恰恰...");
sleep(2000)
var 招呼计数 = 0
var 私信条数 = 0
var lcs = 0
var lcsx=0
var 首次启动 = true
var x = device.width;
var y = device.height;
threads.start(function () {
while (true) {
xhkvideo()
if (相亲数据.get("飘屏", true)) {
if (id("gift_type_tv").text("充值").exists()) {
var cz = id("gift_type_tv").text("充值").findOnce()
if (cz) {
console.info("点击充值");
try {
cz.parent().parent().click()
sleep(1000)
} catch (error) {
console.info("点击充值...");
}
sleep(1000)
}
while (id("count_time_tv").exists() && id("head_iv").exists()) {
if (相亲数据.get("恰恰_接视频", false)) {
if (id("accept_tv").exists()) {
if (cj = id("accept_tv").findOne(5000)) {
try {
console.info("接视频");
cj.click();
sleep(2000)
} catch (error) {
console.info("接视频...");
}
}
var node = id("accept_tv").findOne(1000)
if (node) {
点击(node)
sleep(2000)
}
}
}
console.info("通话中!");
sleep(2000)
}
私信界面();
恰恰返回首页();
}
}
if (text("音乐").exists()&&text("恰恰").exists()||text("保护生态").exists()&&text("恰恰").exists()||id("search_box").exists()) {
console.info("异常闪退");
app.launchPackage("com.qiaqiachat.vip")
sleep(5000)
}
if (id("accept_tv").exists()) {
if (相亲数据.get("恰恰_接视频", false)) {
if (id("accept_tv").exists()) {
if (cj=id("accept_tv").findOne(5000)) {
try {
console.info("接视频");
cj.click();
sleep(2000)
} catch (error) {
console.info("接视频...");
}
}
var node = id("accept_tv").findOne(1000)
if (node) {
点击(node)
sleep(2000)
}
}
}
while (id("accept_tv").exists() || id("call_hang_up_tv").exists()) {
sleep(2000)
console.info("正在等待接通视频或正在视频通话中!");
if (相亲数据.get("恰恰_接视频", false)) {
if (id("accept_tv").exists()) {
if (cj=id("accept_tv").findOne(5000)) {
try {
console.info("接视频");
cj.click();
sleep(2000)
} catch (error) {
console.info("接视频...");
}
}
var node = id("accept_tv").findOne(1000)
if (node) {
点击(node)
sleep(2000)
}
}
}
}
是否检测 = true
}
while (id("count_time_tv").exists()&&id("head_iv").exists()) {
if (相亲数据.get("恰恰_接视频", false)) {
if (id("accept_tv").exists()) {
if (cj=id("accept_tv").findOne(5000)) {
try {
console.info("接视频");
cj.click();
sleep(2000)
} catch (error) {
console.info("接视频...");
}
}
var node = id("accept_tv").findOne(1000)
if (node) {
点击(node)
sleep(2000)
}
}
}
console.info("通话中!");
sleep(2000)
}
if (id("one_key_send_tv").text("一键群发").exists()) {
if (cj = id("one_key_send_tv").text("一键群发").findOne(5000)) {
try {
console.info("一键群发");
cj.click();
sleep(2000)
} catch (error) {
console.info("一键群发...");
}
}
}
if (id("close_iv").depth(10).exists() && text("本次通话已结束").exists()) {
if (cj=id("close_iv").depth(10).findOne(5000)) {
try {
console.info("关闭");
cj.click();
sleep(2000)
} catch (error) {
console.info("关闭...");
}
}
}
if (text("提交评论").id("btnScore").exists()) {
log("通话结束")
if (text("提交评论").id("btnScore").findOne(1000)) {
back();
sleep(1000)
}
}
if (id("close_iv").exists() && id("one_key_send_tv").text("一键群发").exists()) {
if (cj=id("close_iv").findOne(5000)) {
try {
console.info("关闭");
cj.click();
sleep(2000)
} catch (error) {
console.info("关闭...");
}
sleep(1000)
var cj=id("close_iv").findOne(1000)
if(cj){
点击(cj)
}
console.info("关闭");
sleep(2000)
}
}
if (id("btnCancel").text("我知道了").exists()) {
if (cj = id("btnCancel").text("我知道了").findOne(1000)) {
try {
console.info("我知道了");
cj.click();
sleep(2000)
} catch (error) {
console.info("我知道了。。。");
}
}
}
}
});
xhkvideo()
if (相亲数据.get("恰恰_主动招呼", true)) {
if (相亲数据.get("恰恰_话术招呼", true) || 相亲数据.get("恰恰_视频招呼", true)) {
console.info("正在处理主动打招呼...");
while (true) {
恰恰返回首页();
if (id("private_chat_tv").depth(16).visibleToUser(true).findOne(5000)) {
console.info("在打招呼界面");
xhkvideo()
while (true) {
xhkvideo()
var nodes = id("private_chat_tv").depth(16).visibleToUser(true).find()
if (!nodes.empty()) {
console.info("共有男神" + nodes.size() + "个");
for (var ii = 0; ii < nodes.length; ii++) {
if (相亲数据.get("恰聊_新消息", true)) {
console.info("检测新消息");
huifuxiaoxi();
}
sleep(500);
var user = id("private_chat_tv").depth(16).visibleToUser(true).find()
if (!user.empty()) {
var dangqian = user.size()
log("第" + [ii + 1] + "个" + "现在有:" + dangqian + "个")
if (ii >= dangqian) {
console.info("人数超过");
break;
}
var nan = id("private_chat_tv").depth(16).visibleToUser(true).findOnce()
if (nan) {
if (id("private_chat_tv").depth(16).visibleToUser(true).findOne(2000)) {
try {
log("点击第" + [ii + 1] + "个" + "现在有:" + dangqian + "个")
user[ii].click()
sleep(1000)
} catch (error) {
log("点击男神。。。。")
}
}
} else {
恰恰返回首页()
}
xhkvideo()
私信条数 = 私信条数 + 1
私信界面()
聊天界面();
恰恰返回();
恰恰返回();
while (true) {
if (text("首页").findOne(5000) && text("消息").exists()||text("本次通话已结束").exists()) {
console.info("首页界面确认");
break;
}
if (text("音乐").exists()&&text("恰恰").exists()||text("保护生态").exists()&&text("恰恰").exists()||id("search_box").exists()) {
console.info("异常闪退");
app.launchPackage("com.qiaqiachat.vip")
sleep(5000)
}
恰恰返回();
}
} else {
xhkvideo()
log("未在首页")
}
}
} else {
xhkvideo()
console.info("未在首页界面");
break;
}
swipe((device.width / 10) * 3, (device.height / 10) * 8, (device.width / 10) * 3, (device.height / 10) * 2, 1000)
sleep(1000)
swipe((device.width / 10) * 3, (device.height / 10) * 8, (device.width / 10) * 3, (device.height / 10) * 2, 1000)
if (textStartsWith("正在加载").exists()) {
console.info("正在加载。。");
swipe((device.width / 10) * 3, (device.height / 10) * 8, (device.width / 10) * 3, (device.height / 10) * 0, 1000)
sleep(5000)
}
lcs++
if (私信条数 >= 相亲数据.get("恰恰_私信数量", 30)) {
for (var ix = 0; ix < lcs + 4; ix++) {
swipe((device.width / 10) * 3, (device.height / 10) * 3, (device.width / 10) * 3, (device.height / 10) * 10, 800)
sleep(1000)
console.info("已经达到设定的私信人数,返回刷新...");
}
sleep(3000)
私信条数 = 0
lcs = 0
}
}
}
}
}
//恰恰视频招呼
}
function 私信界面(){
var sx = text("私信").depth(10).findOnce()
if (sx) {
console.info("点击私信");
点击(sx)
sleep(1000)
聊天界面();
}
}
function 聊天界面() {
if (id("input_et").findOne(5000)) {
xhkvideo()
var name = id("middle_title").findOne(5000)
if (name && name.text().indexOf("系统消息") == -1 && name.text().indexOf("在线客服") == -1 && name.text().indexOf("恰恰") == -1) {
xhkvideo()
console.info(name.text());
if (idEndsWith("_head_iv").depth(11).findOne(1000)) {
xhkvideo()
do {
var a = idEndsWith("_head_iv").depth(11).find()
} while (a.length <= 0)
var name_id = a[a.length - 1];
if (name_id.bounds().centerX() < device.width / 2 && id("left_text_type_tv").exists()) {
xhkvideo()
do {
var a = id("left_text_type_tv").find();
} while (a.length <= 0)
var 对方内容 = a[a.length - 1].text()
var 回复内容 = 话术分析(对方内容, "被动")
var 回复内容1 = 话术分析1(对方内容, "被动")
if (id("input_et").findOne(5000)) {
if (相亲数据.get('用自定义发送', false)) {
id("input_et").findOne(5000).setText(String(回复内容1[1]))
console.info("对方的内容:" + 对方内容 + ",现在使用自定义:" + 回复内容1[0] + "回复,回复内容:" + 回复内容1[1])
} else {
console.info("对方的内容:" + 对方内容 + ",现在使用:" + 回复内容[0] + "回复,回复内容:" + 回复内容[1])
id("input_et").findOne(5000).setText(String(回复内容[1]))
}
sleep(1000)
if (text("发送").id("send_tv").findOne(5000)) {
if (cj = text("发送").id("send_tv").findOne(1000)) {
点击(cj)
}
console.info("发送话术已完成");
sleep(1000)
}
xhkvideo()
}
} else {
if (xhkdate(name.text()) <= 相亲数据.get("恰恰_招呼次数", 1) - 1) {
恰恰回复方式();
} else {
console.info("此用户打招呼次数已达到设置次数,本次不操作!");
sleep(1000)
}
}
} else {
恰恰回复方式();
}
} else {
console.info("难道碰上客服小姐姐了吗?");
}
}
}
function 恰恰回复方式() {
if (相亲数据.get("恰恰_话术招呼", true)) {
var 对方内容 = true
var 回复内容 = 话术分析(true, "主动")
var 回复内容1 = 话术分析1(true, "主动")
if (id("input_et").findOne(5000)) {
if (相亲数据.get('用自定义发送', true)) {
id("input_et").findOne(5000).setText(String(回复内容1[1]))
console.info("对方的内容:" + 对方内容 + ",现在使用自定义:" + 回复内容1[0] + "回复,回复内容:" + 回复内容1[1])
} else {
console.info("对方的内容:" + 对方内容 + ",现在使用:" + 回复内容[0] + "回复,回复内容:" + 回复内容[1])
id("input_et").findOne(5000).setText(String(回复内容[1]))
}
sleep(1000)
if (text("发送").id("send_tv").findOne(5000)) {
if (cj = text("发送").id("send_tv").findOne(1000)) {
点击(cj)
}
console.info("发送话术已完成");
sleep(1000)
for (var 等待时间 = 相亲数据.get("恰恰_发送等待", 3); 等待时间 >= 0; 等待时间--) {
sleep(1000)
xhkvideo()
console.info("发送完成等待" + 等待时间 + "秒后继续");
}
}
}
}
if (相亲数据.get("恰恰_视频招呼", true)) {
if (cj = id("video_tv").findOne(5000)) {
try {
log("点击视频")
cj.click()
sleep(2000);
} catch (error) {
log("点击视频。。。")
}
}
if (text("您正在发起视频通话…").findOne(3000) && id("call_hang_up_tv").exists()) {
sleep(500)
console.info("正在等待对方接通视频!或者正在视频中a");
for (var 等待时间 = 相亲数据.get("挂断时间", 15); 等待时间 >= 0; 等待时间--) {
sleep(1000)
console.info("等待对方接听" + 等待时间 + "秒后未接就挂断");
if (!text("您正在发起视频通话…").findOne(3000) && !id("call_hang_up_tv").exists()) {
break;
}
}
if (text("您正在发起视频通话…").findOne(3000) && id("call_hang_up_tv").exists()) {
if (id("call_hang_up_tv").exists()) {
id("call_hang_up_tv").findOne(2000).click();
sleep(1000);
}
}
xhkvideo()
sleep(1000)
} else {
console.info("对方设置了勿扰,给他发个消息吧");
var 对方内容 = true
var 回复内容 = 话术分析(true, "主动")
var 回复内容1 = 话术分析1(true, "主动")
if (id("input_et").findOne(5000)) {
if (相亲数据.get('用自定义发送', true)) {
id("input_et").findOne(5000).setText(String(回复内容1[1]))
console.info("对方的内容:" + 对方内容 + ",现在使用自定义:" + 回复内容1[0] + "回复,回复内容:" + 回复内容1[1])
} else {
console.info("对方的内容:" + 对方内容 + ",现在使用:" + 回复内容[0] + "回复,回复内容:" + 回复内容[1])
id("input_et").findOne(5000).setText(String(回复内容[1]))
}
sleep(1000)
if (text("发送").id("send_tv").findOne(5000)) {
if (cj = text("发送").id("send_tv").findOne(1000)) {
点击(cj)
}
console.info("发送话术已完成");
sleep(1000)
for (var 等待时间 = 相亲数据.get("恰恰_发送等待", 3); 等待时间 >= 0; 等待时间--) {
sleep(1000)
xhkvideo()
console.info("发送完成等待" + 等待时间 + "秒后继续");
}
}
}
}
}
}
function huifuxiaoxi() {
var msg = false
if (id("red_count_tv").depth(10).findOne(100)) {
if (Number(id("red_count_tv").depth(10).findOne(1000).text().replace("+", "")) >= 1) {
msg = true
if(text("消息").id("message_tv").findOne(2000)){
text("消息").id("message_tv").findOne(2000).click();
console.info("点击消息");
sleep(1000);
}
} else {
msg = false
}
}
if (msg&&text("首页").findOne(5000) && text("消息").exists()&& 相亲数据.get("恰恰_新消息", true)) {
var 滑动 = false
var 计时线程 = threads.start(function () {
sleep(相亲数据.get("恰恰_消息空闲", 30) * 1000)
});
console.info("有新消息,正在处理新消息...");
if (text("清空").findOne(5000) && text("消息").exists()) {
console.info("在消息界面");
var msg = false
if (id("red_count_tv").depth(10).findOne(100)) {
if (Number(id("red_count_tv").depth(10).findOne(1000).text().replace("+", "")) >= 1) {
msg = true
} else {
msg = false
}
}
while (msg) {
xhkvideo()
sleep(1000)
if (id("number_tv").depth(16).boundsInside(x * 0.05, y * 0.1, x-1, y * 0.93).exists()) {
console.info("有新消息,正在处理新消息2...");
if (cj = id("number_tv").depth(16).boundsInside(x * 0.05, y * 0.1, x-1, y * 0.93).findOne(1000)) {
xhkvideo()
click(cj.bounds().centerX() - 100, cj.bounds().centerY());
console.info("点击消息红点");
sleep(1000)
}
var nan = id("clear_tv").text("清空").visibleToUser(true).findOnce()
if (nan) {
sleep(1000)
}
私信条数 = 私信条数 + 1
聊天界面();
恰恰返回();
恰恰返回();
while (true) {
if(text("消息").exists()&&text("首页").exists()||text("本次通话已结束").exists()){
break;
}
恰恰返回();
}
var 计时线程 = threads.start(function () {
sleep(相亲数据.get("恰恰_消息空闲", 30) * 1000)
});
} else {
if (计时线程.isAlive() == false) {
console.info("已达到设定的消息处理时间");
恰恰返回首页();
break
}
xhkvideo()
if (滑动 == false) {
if (恰恰Stopdingbu()) {
xhkvideo()
滑动 = true;
xhkvideo()
}
} else {
if (恰恰Stopdibu()) {
xhkvideo()
滑动 = false;
xhkvideo()
}
}
sleep(1000)
}
if (id("red_count_tv").depth(10).findOne(100)) {
try {
if (Number(id("red_count_tv").depth(10).findOne(1000).text().replace("+", "")) >= 1) {
msg = true
console.info("还有消息");
} else {
msg = false
console.info("没有消息了");
恰恰返回首页();
}
} catch (error) {
console.info("还有消息....");
}
} else {
msg = false
console.info("没有消息了");
恰恰返回首页();
}
}
}
};
}
function 恰恰返回() {
var dksd = 0
if (text("首页").findOnce() &&text("消息").findOnce()) {
dksd = 1
}
if (dksd == 0) {
if (id("left_fl").findOnce() || id("left_image").findOnce()|| id("input_et").findOnce()|| id("one_back_iv").findOnce()||text("本次通话已结束").exists()) {
console.info("返回");
back()
sleep(1000)
}
}
}
function 恰恰返回首页(){
while (true) {
if (相亲数据.get("恰恰_接视频", false)) {
if (id("accept_tv").exists()) {
if (cj=id("accept_tv").findOne(5000)) {
try {
console.info("点击接听");
cj.click();
sleep(1000);
} catch (error) {
console.info("点击接听....");
}
}
var node = id("accept_tv").findOne(1000)
if (node) {
点击(node)
sleep(2000)
}
}
}
if (text("首页").findOne(5000)&&text("消息").exists()) {
sleep(1000)
if (cj=id("home_tv").text("首页").findOnce()) {
try {
console.info("点击首页");
cj.click();
sleep(1000);
} catch (error) {
console.info("点击首页....");
}
}
if (cj = id("iv_top").findOnce()) {
try {
toastLog("点击置顶")
cj.click()
sleep(1000);
} catch (error) {
console.info("点击首页....");
}
}
if (id("male_user_tv").text("男生").visibleToUser(true).exists()) {
if (cj = id("male_user_tv").text("男生").visibleToUser(true).findOne(1000)) {
try {
log("点击男神")
cj.click()
sleep(1000);
} catch (error) {
log("点击男神。。")
}
}
}
sleep(1000);
break;
};
恰恰返回();
}
}
function xhkvideo() {
while (id("count_time_tv").exists()&&id("local_video_view").exists()) {
console.info("通话中!");
if (相亲数据.get("恰恰_接视频", false)) {
if (id("accept_tv").exists()) {
if (cj=id("accept_tv").findOne(5000)) {
try {
console.info("点击接听");
cj.click();
sleep(1000);
} catch (error) {
console.info("点击接听....");
}
}
var node = id("accept_tv").findOne(1000)
if (node) {
点击(node)
sleep(2000)
}
}
}
}
if (相亲数据.get("恰恰_接视频", false)) {
if (id("accept_tv").exists()) {
if (cj=id("accept_tv").findOne(5000)) {
try {
console.info("点击接听");
cj.click();
sleep(1000);
} catch (error) {
console.info("点击接听....");
}
}
var node = id("accept_tv").findOne(1000)
if (node) {
点击(node)
sleep(2000)
}
}
}
if (相亲数据.get("飘屏", true)) {
if (id("gift_type_tv").text("充值").visibleToUser(true).exists()) {
var cz = id("gift_type_tv").text("充值").findOnce()
if (cz) {
console.info("点击充值");
try {
cz.parent().parent().click()
sleep(1000)
} catch (error) {
console.info("点击充值...");
}
sleep(1000)
}
私信界面();
恰恰返回首页();
}
}
}
function xhkdate(namemod) {
if (!相亲数据.get("恰恰_namemod")) {
相亲数据.put("恰恰_namemod", [["风粒子", 1]]);
}
var mod = 相亲数据.get("恰恰_namemod")
for (var ia = 0; ia < mod.length; ia++) {
if (mod[ia][0] == namemod) {
if (mod[ia][1] >= 相亲数据.get("恰恰_招呼次数", 1)) {
return mod[ia][1]
} else {
mod[ia][1]++
相亲数据.put("恰恰_namemod", mod);
return mod[ia][1] - 1
}
}
}
mod.push([namemod, 1])
相亲数据.put("恰恰_namemod", mod);
return 0
}
function 恰恰Stopdibu() {//恰恰到底
xhkvideo()
var z = id("nick_tv").depth(16).find()//名id
if (!z.empty()) {
if (!z.empty()) {
var hdq = z[z.length - 1].getText()+"";
console.info(hdq)
}
swipe((device.width / 10) * 3, (device.height / 10) * 8.5, (device.width / 10) * 3, (device.height / 10) * 0, 1000)
sleep(500)
var d = id("nick_tv").depth(16).find()//名字id
if (!d.empty()) {
var hdh = d[d.length - 1].getText()+"";
console.info(hdh)
}
lcsx++
if (lcsx >= 相亲数据.get("查找页数", 15)) {
console.info("已达到您预设查找页数" + 相亲数据.get("查找页数", 15) + "现在往回翻页");
for (let i = 0; i < Number(lcsx + 2); i++) {
sleep(500)
swipe(x / 2, y * 0.4, x / 2, y * 0.99, 500)
sleep(500)
}
lcsx = 0
return true;
}
if (hdq == hdh) {
console.info("到底了")
return true;
} else {
return false;
}
}
}
function 恰恰Stopdingbu() {//恰恰到顶
xhkvideo()
var z = id("nick_tv").depth(16).find()//名字id
if (!z.empty()) {
if (!z.empty()) {
var hdq = z[0].getText()+"";
console.info(hdq)
}
swipe((device.width / 10) * 3, (device.height / 10) * 3, (device.width / 10) * 3, (device.height / 10) * 10, 800)
if(textContains("正在刷新").exists()){
console.info("正在刷新")
sleep(2000)
}
sleep(1000)
var d = id("nick_tv").depth(16).find()//名字id
if (!d.empty()) {
var hdh = d[0].getText()+"";
console.info(hdh)
}
if (hdq == hdh) {
console.info("到顶了")
return true;
} else {
return false;
}
}
}
}
function json存值(prop, val) {
str1 = 相亲数据.get("聊天数据", {})
if (typeof val === "undefined") {
delete str1[prop];
} else {
str1[prop] = val;
相亲数据.put("聊天数据", str1);
return str1
}
}
function 话术分析(内容, 类型) {
if (内容 == true && 类型 != "主动" || 内容 == false && 类型 != "主动") {
var a = 通用话术.split("\n")
return ["通用话术", a[random(0, a.length - 1)]]
} else if (类型 == "主动") {
var a = 主动话术.split("\n")
return ["主动话术", a[random(0, a.length - 1)]]
}
else {
for (var i = 0; i < 关键词话术.length; i++) {
if (关键词话术[i] != "undefined" && 关键词话术[i] != "") {
var a = 关键词话术[i].split("--")
if (内容.indexOf(a[0].replace(/\n/g, "")) > -1) {
return ["关键词话术", a[random(1, a.length - 1)]]
}
}
}
var a = 通用话术.split("\n")
return ["通用话术", a[random(0, a.length - 1)]]
}
}
function 话术分析1(内容, 类型) {
if (内容 == true && 类型 != "主动" || 内容 == false && 类型 != "主动") {
var a = 通用话术1.split("--")
return ["通用话术1", a[random(0, a.length - 1)]]
} else if (类型 == "主动") {
var a = 主动发送.split("--")
return ["主动发送", a[random(0, a.length - 1)]]
}
else {
for (var i = 0; i < 主话术.length; i++) {
if (主话术[i] != "undefined" && 主话术[i] != "") {
var a = 主话术[i].split("--")
if (内容.indexOf(a[0]) > -1) {
return ["主话术", a[random(1, a.length - 1)]]
}
}
}
var a = 通用话术1.split("--")
return ["通用话术1", a[random(0, a.length - 1)]]
}
}
function 随机滑动(y1, y2, time) {
gesture(time, [random(500, 700), random(Math.round(y1 * h / 1920), Math.round(y1 * h / 1920) - 50)], [random(500, 700), h / 2], [random(500, 700), random(Math.round(y2 * h / 1920), Math.round(y2 * h / 1920) - 50)])
};
function 启动应用(应用名称, 版本号) {
while (true) {
if (app.launchApp(应用名称)) {
while (app.getPackageName(应用名称) != currentPackage()) {
app.launchApp(应用名称)
log("正在启动:" + 应用名称);
sleep(2000);
if (app.getPackageName(应用名称) == currentPackage()) {
break
}
}
log("成功启动:" + 应用名称);
// while (应用版本(app.getPackageName(应用名称)) != 版本号) {
// toastLog(应用名称 + "版本不正确,请安装" + 版本号);
// sleep(2000);
// }
break
} else {
toastLog("没有安装:" + 应用名称 + ",请安装" + 应用名称 + 版本号);
sleep(2000)
}
}
}
function 应用版本(package_name) {
let pkgs = context.getPackageManager().getInstalledPackages(0).toArray();
for (let i in pkgs) {
if (pkgs[i].packageName.toString() === package_name) return pkgs[i].versionName;
}
}
function 前台检测(应用名称) {
是否检测 = true
sleep(1000 * 30)
while (true) {
// var a = textMatches(/^[\s\S]*.*[^\s][\s\S]*$/).visibleToUser(true).find()
// if (a) {
// var b = ""
// for (var i = 0; i <= a.length - 1; i++) {
// if (a[i].text().indexOf("秒") == -1 && a[i].text().indexOf(":") == -1 && a[i].text().indexOf("再按一次") == -1) {
// b = b + a[i].text()
// }
// }
// }
// sleep(1000 * 120)
// var a = textMatches(/^[\s\S]*.*[^\s][\s\S]*$/).visibleToUser(true).find()
// if (a) {
// var b1 = ""
// for (var i = 0; i <= a.length - 1; i++) {
// if (a[i].text().indexOf("秒") == -1 && a[i].text().indexOf(":") == -1 && a[i].text().indexOf("再按一次") == -1) {
// b1 = b1 + a[i].text()
// }
// }
// }
// sleep(1000 * 120)
// var a = textMatches(/^[\s\S]*.*[^\s][\s\S]*$/).visibleToUser(true).find()
// if (a) {
// var b2 = ""
// for (var i = 0; i <= a.length - 1; i++) {
// if (a[i].text().indexOf("秒") == -1 && a[i].text().indexOf(":") == -1 && a[i].text().indexOf("再按一次") == -1) {
// b2 = b2 + a[i].text()
// }
// }
// }
if (是否检测 == true) {
if (currentPackage() != app.getPackageName(应用名称) || 主线程.isAlive() == false) {
home()
toastLog("当前app:" + 应用名称 + "运行异常,已重启运行!")
主线程.interrupt()
是否检测 = true
主线程 = threads.start(function () {
home()
try {
启动应用(当前app, 当前app版本)
开始恰恰()
} catch (error) {
console.error("主线程,出现未知异常!")
}
});
} else {
log("脚本运行中!")
sleep(30000)
}
}
}
}
function 悬浮窗() {
幕布()
悬浮窗 = floaty.window(
<horizontal id="horizontal" margin="5dp" gravity="center">
<button id="启动停止" width="40" height="40" margin="1dp" bg="#4FFF74" textSize="16sp" text="停止" textColor="#780EF1" />
<button id="退出" width="40" height="40" margin="1dp" bg="#4FFF74" textSize="16sp" text="退出" textColor="#780EF1" />
<button id="设置" width="40" height="40" margin="1dp" bg="#4FFF74" textSize="16sp" text="幕布" textColor="#780EF1" />
</horizontal>
);
全局_显示悬浮窗按钮 = 悬浮窗
悬浮窗.setPosition(device.width / 3, -50)
悬浮窗.setSize(-2, -2)
悬浮窗.exitOnClose();
setInterval(() => { }, 1000);
var 启动停止_x = 0, 启动停止_y = 0, 退出_x, 退出_y;
var 启动停止_windowX, 启动停止_windowY, 退出_windowX, 退出_windowY;
悬浮窗.启动停止.setOnTouchListener(function (view, event) {
switch (event.getAction()) {
case event.ACTION_DOWN:
启动停止_x = event.getRawX();
启动停止_y = event.getRawY();
启动停止_windowX = 悬浮窗.getX();
启动停止_windowY = 悬浮窗.getY();
return true;
case event.ACTION_MOVE:
//移动手指时调整悬浮窗位置
悬浮窗.setPosition(启动停止_windowX + (event.getRawX() - 启动停止_x),
启动停止_windowY + (event.getRawY() - 启动停止_y));
return true;
case event.ACTION_UP:
//手指弹起时如果偏移很小则判断为点击
if (Math.abs(event.getRawY() - 启动停止_y) < 5 && Math.abs(event.getRawX() - 启动停止_x) < 5) {
if (悬浮窗.启动停止.getText() == '启动') {
悬浮窗.启动停止.setText('停止');
主线程 = threads.start(function () {
while (true) {
启动应用(当前app, 当前app版本)
if (当前app == getAppName("com.qiaqiachat.vip")) {
开始恰恰()
}
}
});
// if (相亲数据.get("前台检测x", true)) {
// toastLog("您当前开启前台检测,出现异常会自动重新开始")
// 检测线程 = threads.start(function () {
// 前台检测(当前app, 当前app版本)
// });
// }
toastLog("我又启动了")
} else {
悬浮窗.启动停止.setText('启动');
toastLog("停止脚本")
threads.shutDownAll()
}
}
return true;
}
return true;
});
//监听退出按钮消息//
悬浮窗.退出.setOnTouchListener(function (view, event) {
switch (event.getAction()) {
case event.ACTION_DOWN:
退出_x = event.getRawX();
退出_y = event.getRawY();
退出_windowX = 悬浮窗.getX();
退出_windowY = 悬浮窗.getY();
return true;
case event.ACTION_MOVE:
//移动手指时调整悬浮窗位置
悬浮窗.setPosition(退出_windowX + (event.getRawX() - 退出_x),
退出_windowY + (event.getRawY() - 退出_y));
return true;
case event.ACTION_UP:
//手指弹起时如果偏移很小则判断为点击
if (Math.abs(event.getRawY() - 退出_y) < 5 && Math.abs(event.getRawX() - 退出_x) < 5) {
toast("程序已退出")
悬浮窗.close()
engines.stopAll()
}
return true;
}
return true;
});
悬浮窗.设置.setOnTouchListener(function (view, event) {
switch (event.getAction()) {
case event.ACTION_DOWN:
退出_x = event.getRawX();
退出_y = event.getRawY();
退出_windowX = 悬浮窗.getX();
退出_windowY = 悬浮窗.getY();
return true;
case event.ACTION_MOVE:
//移动手指时调整悬浮窗位置
悬浮窗.setPosition(退出_windowX + (event.getRawX() - 退出_x),
退出_windowY + (event.getRawY() - 退出_y));
return true;
case event.ACTION_UP:
//手指弹起时如果偏移很小则判断为点击
if (Math.abs(event.getRawY() - 退出_y) < 5 && Math.abs(event.getRawX() - 退出_x) < 5) {
if (os == false) {
dw = device.width; dh = device.height / 2; os = true
} else {
dw = 0; dh = 0; os = false
}
setInterval(() => {
win.setSize(dw, dh)
win.setPosition(0, 1)
win.setTouchable(false);
}, 1000);
}
return true;
}
return true;
}
);
悬浮窗///
}
function 幕布() {
// var os = false
win = floaty.rawWindow(
<vertical id="wins" alpha="1" gravity="center" visibility="visible" bg="#4CAF50" >
{/* <text gravity="center" id="tttt" text="脚本运行日志" textSize="15sp" textColor="white" /> */}
<com.stardust.autojs.core.console.ConsoleView id="console" h="*" />
</vertical >
);
ui.run(() => {
// win.console.setConsole(runtime.console);
win.input_container.setVisibility(android.view.View.GONE);
});
}
function ini() {
相亲数据 = storages.create("相亲数据");
if (相亲数据.get("自定主动话术")) {
主动话术 = 相亲数据.get("自定主动话术", "")
} else {
主动话术 = 相亲数据.get("主动话术", "出现错误,请重启软件重新加载!")
}
if (相亲数据.get("自定通用话术")) {
通用话术 = 相亲数据.get("自定通用话术", "")
} else {
通用话术 = 相亲数据.get("通用话术", "出现错误,请重启软件重新加载!")
}
if (相亲数据.get("自定关键词话术")) {
关键词话术 = 相亲数据.get("自定关键词话术", "")
} else {
关键词话术 = 相亲数据.get("关键词话术", "出现错误,请重启软件重新加载!")
}
// // if (files.copy("./主话术.txt", "/sdcard/主话术.txt")) {
if (files.exists("/sdcard/主话术.txt")) {
var 文本话术 = files.read("/sdcard/主话术.txt", encoding = "utf-8")
主话术 = 文本话术.split("\r\n");
} else {
while (!files.copy("./主话术.txt", "/sdcard/主话术.txt")) {
toast("没有在手机根目录下找到主话术.txt文件,请确认话术文件存在");
sleep(2000)
}
}
// // }
// // if (files.copy("./通用话术.txt", "/sdcard/通用话术.txt")) {
if (files.exists("/sdcard/通用话术.txt")) {
var 文本话术 = files.read("/sdcard/通用话术.txt", encoding = "utf-8")
通用话术1 = 文本话术
} else {
while (!files.copy("./通用话术.txt", "/sdcard/通用话术.txt")) {
toast("没有在手机根目录下找到通用话术.txt文件,请确认话术文件存在");
sleep(2000)
}
}
// // }
// // if (files.copy("./主动发送.txt", "/sdcard/主动发送.txt")) {
if (files.exists("/sdcard/主动发送.txt")) {
var 文本话术 = files.read("/sdcard/主动发送.txt", encoding = "utf-8")
主动发送 = 文本话术
} else {
while (!files.copy("./主动发送.txt", "/sdcard/主动发送.txt")) {
toast("没有在手机根目录下找到主动发送.txt文件,请确认话术文件存在");
sleep(2000)
}
}
// // }
h = device.height
w = device.width
// device.keepScreenDim
threads.start(function () {
auto.waitFor();
});
}
function 日志显示(){
window = floaty.rawWindow(
<vertical id="win" gravity="center" visibility="visible" bg="#60000000" >
{/* <text gravity="center" id="tttt" text="脚本运行日志" textSize="0sp" textColor="#f44336" /> */}
<com.stardust.autojs.core.console.ConsoleView id="console" h="*" />
</vertical >
);
let c = new android.util.SparseArray();
let Log = android.util.Log;
c.put(Log.VERBOSE, new java.lang.Integer(colors.parseColor("#00FFD7")));
c.put(Log.DEBUG, new java.lang.Integer(colors.parseColor("#00FFD7")));
c.put(Log.INFO, new java.lang.Integer(colors.parseColor("#ff64dd17")));
c.put(Log.WARN, new java.lang.Integer(colors.parseColor("#ff2962ff")));
c.put(Log.ERROR, new java.lang.Integer(colors.parseColor("#ffd50000")));
c.put(Log.ASSERT, new java.lang.Integer(colors.parseColor("#ffff534e")));
window.console.setColors(c);
ui.run(() => {
window.console.setConsole(runtime.console);
window.input_container.setVisibility(android.view.View.GONE);
});
}
function 点击(节点) {
var nodex = 节点.bounds().centerX()
var nodey = 节点.bounds().centerY()
if (nodex > 0 && nodey > 0) {
click(nodex, nodey)
}
}
function 随机滑动(y1, y2, time) {
h = device.height
w = device.width
gesture(time, [random(300, 500), random(Math.round(y1 * h / 1920), Math.round(y1 * h / 1920) - 50)], [random(300, 600), h / 2], [random(300, 600), random(Math.round(y2 * h / 1920), Math.round(y2 * h / 1920) - 50)])
};
//滑动功能函数
function bezier_curves(cp, t) {
cx = 3.0 * (cp[1].x - cp[0].x);
bx = 3.0 * (cp[2].x - cp[1].x) - cx;
ax = cp[3].x - cp[0].x - cx - bx;
cy = 3.0 * (cp[1].y - cp[0].y);
by = 3.0 * (cp[2].y - cp[1].y) - cy;
ay = cp[3].y - cp[0].y - cy - by;
tSquared = t * t;
tCubed = tSquared * t;
result = {
"x": 0,
"y": 0
};
result.x = (ax * tCubed) + (bx * tSquared) + (cx * t) + cp[0].x;
result.y = (ay * tCubed) + (by * tSquared) + (cy * t) + cp[0].y;
return result;
};
//仿真随机带曲线滑动
//qx, qy, zx, zy, time 代表起点x,起点y,终点x,终点y,过程耗时单位毫秒
function sml_move(qx, qy, zx, zy, time) {
var xxy = [time];
var point = [];
var dx0 = {
"x": qx,
"y": qy
};
var dx1 = {
"x": random(qx - 100, qx + 100),
"y": random(qy, qy + 50)
};
var dx2 = {
"x": random(zx - 100, zx + 100),
"y": random(zy, zy + 50),
};
var dx3 = {
"x": zx,
"y": zy
};
for (var i = 0; i < 4; i++) {
eval("point.push(dx" + i + ")");
};
// log(point[3].x)
for (let i = 0; i < 1; i += 0.08) {
xxyy = [parseInt(bezier_curves(point, i).x), parseInt(bezier_curves(point, i).y)]
xxy.push(xxyy);
}
// log(xxy);
gesture.apply(null, xxy);
log("有问题联系: wx_zhibo8888")
};
平台
以上代码为自行编写 ,如果需要打包。采用autojs pro,将代码内容复制到autojs 中,即可直接运行
安装方式
- 下载apk
- 将 apk 通过数据线复制到手机中
- 打开手机文件管理器,找打刚才复制在手机中的目录
- 点击apk,进行安装
使用方式
安装apk后,点击apk 图标即可启动软件
- 启动软件
- 如果有授权弹窗,点击允许即可
- 然后在搜索框中,输入需要一对一聊天的平台
- 点击搜索选项
如果提示要求开启无障碍权限。点击确定后,你需要找到软件对应的无障碍服务,并点击开启