下载地址:https://www.pan38.com/dow/share.php?code=JCnzE 提取密码:1133
代码说明:1. 主模块包含核心发送逻辑 2. 工具模块提供辅助功能 3. 配置模块集中管理参数。使用时需配合Auto.js环境,注意设置合理间隔避免封号。
// 常量配置区域
const PLATFORMS = {
DOUYIN: 1,
KUAISHOU: 2,
XIAOHONGSHU: 3
};
// 消息发送核心函数
function sendBatchMessages(platform, messages, interval) {
if (!Array.isArray(messages)) {
throw new Error("消息必须为数组");
}
let successCount = 0;
let failCount = 0;
// 根据平台选择不同实现
switch(platform) {
case PLATFORMS.DOUYIN:
douyinSendHandler(messages, interval);
break;
case PLATFORMS.KUAISHOU:
kuaishouSendHandler(messages, interval);
break;
case PLATFORMS.XIAOHONGSHU:
xiaohongshuSendHandler(messages, interval);
break;
default:
throw new Error("不支持的平台类型");
}
return { success: successCount, failed: failCount };
}
// 抖音私信处理模块
function douyinSendHandler(messages, interval) {
launchApp("抖音");
sleep(3000);
// 进入私信界面
const dmBtn = id("direct_message").findOne(5000);
if (dmBtn) {
dmBtn.click();
sleep(2000);
} else {
throw new Error("无法找到私信入口");
}
// 遍历发送消息
messages.forEach((msg, index) => {
try {
// 查找用户
const searchBtn = id("search_user").findOne(3000);
searchBtn.click();
sleep(1000);
// 输入用户名
const input = className("EditText").findOne(3000);
input.setText(msg.user);
sleep(1500);
// 点击用户
const userItem = text(msg.user).findOne(3000);
if (userItem) {
userItem.click();
sleep(2000);
// 输入消息
const msgInput = className("EditText").findOne(3000);
msgInput.setText(msg.content);
sleep(1000);
// 发送按钮
const sendBtn = desc("发送").findOne(3000);
sendBtn.click();
sleep(interval || 3000);
successCount++;
} else {
failCount++;
console.log("用户未找到:", msg.user);
}
} catch (e) {
failCount++;
console.error("发送失败:", e);
}
// 返回私信列表
back();
sleep(1000);
});
}
// 防检测随机延迟
function randomDelay(base, range) {
const delay = base + Math.random() * range;
sleep(delay);
return delay;
}
// 模拟人类滑动
function humanScroll(direction, distance) {
const startX = device.width / 2;
const startY = device.height / 2;
let endX = startX, endY = startY;
if (direction === 'up') {
endY = startY - distance;
} else if (direction === 'down') {
endY = startY + distance;
} else if (direction === 'left') {
endX = startX - distance;
} else if (direction === 'right') {
endX = startX + distance;
}
swipe(startX, startY, endX, endY, 500 + Math.random() * 300);
randomDelay(800, 500);
}
// 检查元素是否存在
function checkElementExists(selector, timeout) {
const endTime = Date.now() + (timeout || 5000);
while (Date.now() < endTime) {
if (selector.exists()) return true;
sleep(500);
}
return false;
}
// 消息模板配置
const MESSAGE_TEMPLATES = {
DEFAULT: "你好,{username},我是{myName},{customMessage}",
PROMOTION: "【限时优惠】{product}正在特价中,点击了解详情:{link}",
FOLLOW_UP: "感谢关注!这是我的联系方式:{contact}"
};
// 平台特定配置
const PLATFORM_CONFIGS = {
DOUYIN: {
packageName: "com.ss.android.ugc.aweme",
mainActivity: ".main.MainActivity",
elementSelectors: {
searchInput: "com.ss.android.ugc.aweme:id/search_bar",
sendButton: "com.ss.android.ugc.aweme:id/send_button"
}
},
KUAISHOU: {
packageName: "com.kuaishou.nebula",
mainActivity: ".app.main.MainActivity",
elementSelectors: {
searchInput: "com.kuaishou.nebula:id/search_edit",
sendButton: "com.kuaishou.nebula:id/send_btn"
}
},
XIAOHONGSHU: {
packageName: "com.xingin.xhs",
mainActivity: ".activity.SplashActivity",
elementSelectors: {
searchInput: "com.xingin.xhs:id/search_bar",
sendButton: "com.xingin.xhs:id/send_btn"
}
}
};
// 用户黑名单
const BLACKLIST = [
"官方账号",
"客服",
"管理员"
];
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。