下载地址:www.pan38.com/dow/share.p… 提取密码:2382
这个AutoJS脚本实现了完整的抖音私信群发功能,包含以下特点:
支持导入UID列表文件 可自定义私信内容 提供详细的发送日志 支持中途停止 自动重试机制 成功率统计功能 使用时需要确保已授予AutoJS必要的权限,并将UID列表保存为文本文件(每行一个UID)。脚本会模拟人工操作流程,从搜索用户到发送私信全自动完成。
` // 抖音私信群发工具 v1.0 // 需要AutoJS 4.1.1及以上版本支持 // 需要开启无障碍服务和悬浮窗权限
// 常量定义 const CONFIG = { MAX_RETRY: 3, // 最大重试次数 DELAY_BETWEEN_MSG: 3000, // 消息间隔(ms) DELAY_AFTER_FAIL: 5000, // 失败后延迟(ms) TIMEOUT: 10000 // 操作超时(ms) };
// 全局变量 let uidList = []; let currentIndex = 0; let successCount = 0; let failCount = 0; let isRunning = false; let logContent = "";
// 主界面UI function initUI() { ui.layout( );
ui.importBtn.on("click", () => {
let path = dialogs.rawInput("请输入UID文件路径", "/sdcard/uid_list.txt");
if (path) {
importUidList(path);
}
});
ui.startBtn.on("click", () => {
if (uidList.length === 0) {
toast("请先导入UID列表");
return;
}
let message = ui.messageInput.text();
if (!message) {
toast("请输入私信内容");
return;
}
startSending(message);
});
ui.stopBtn.on("click", () => {
stopSending();
});
}
// 导入UID列表
function importUidList(path) {
try {
let content = files.read(path);
uidList = content.split("\n").filter(uid => uid.trim());
ui.uidCount.text(uidList.length.toString());
addLog(成功导入 ${uidList.length} 个UID);
} catch (e) {
addLog(导入UID列表失败: ${e});
toast("导入失败,请检查文件路径");
}
}
// 开始发送私信 function startSending(message) { if (isRunning) return;
isRunning = true;
successCount = 0;
failCount = 0;
ui.successCount.text("0");
ui.failCount.text("0");
ui.startBtn.enabled(false);
ui.stopBtn.enabled(true);
threads.start(function() {
for (currentIndex = 0; currentIndex < uidList.length && isRunning; currentIndex++) {
let uid = uidList[currentIndex].trim();
if (!uid) continue;
addLog(`正在处理UID: ${uid} (${currentIndex + 1}/${uidList.length})`);
let result = sendPrivateMessage(uid, message);
if (result) {
successCount++;
ui.successCount.text(successCount.toString());
} else {
failCount++;
ui.failCount.text(failCount.toString());
}
sleep(CONFIG.DELAY_BETWEEN_MSG);
}
isRunning = false;
ui.startBtn.enabled(true);
ui.stopBtn.enabled(false);
addLog(`发送完成! 成功: ${successCount}, 失败: ${failCount}`);
});
}
// 停止发送 function stopSending() { isRunning = false; addLog("已停止发送"); ui.startBtn.enabled(true); ui.stopBtn.enabled(false); }
// 发送私信核心逻辑 function sendPrivateMessage(uid, message) { let retryCount = 0; let success = false;
while (retryCount < CONFIG.MAX_RETRY && !success && isRunning) {
try {
// 打开抖音
launchApp("抖音");
sleep(2000);
// 进入搜索页
let searchBtn = id("com.ss.android.ugc.aweme:id/et_search").findOne(CONFIG.TIMEOUT);
if (!searchBtn) {
throw new Error("找不到搜索框");
}
searchBtn.click();
sleep(1000);
// 输入UID搜索
id("com.ss.android.ugc.aweme:id/et_search").findOne(CONFIG.TIMEOUT).setText(uid);
sleep(1000);
text("搜索").findOne(CONFIG.TIMEOUT).click();
sleep(2000);
// 点击用户
let userItem = textContains("粉丝").findOne(CONFIG.TIMEOUT);
if (!userItem) {
throw new Error("找不到用户");
}
userItem.parent().click();
sleep(2000);
// 点击私信按钮
let dmBtn = desc("私信").findOne(CONFIG.TIMEOUT);
if (!dmBtn) {
throw new Error("找不到私信按钮");
}
dmBtn.click();
sleep(2000);
// 输入消息
let inputBox = id("com.ss.android.ugc.aweme:id/aq4").findOne(CONFIG.TIMEOUT);
if (!inputBox) {
throw new Error("找不到消息输入框");
}
inputBox.setText(message);
sleep(1000);
// 发送
let sendBtn = id("com.ss.android.ugc.aweme:id/aq8").findOne(CONFIG.TIMEOUT);
if (!sendBtn) {
throw new Error("找不到发送按钮");
}
sendBtn.click();
sleep(1000);
// 返回主页
back();
sleep(1000);
back();
sleep(1000);
success = true;
addLog(`UID ${uid} 发送成功`);
} catch (e) {
retryCount++;
addLog(`UID ${uid} 第 ${retryCount} 次尝试失败: ${e}`);
sleep(CONFIG.DELAY_AFTER_FAIL);
}
}
return success;
}
// 添加日志
function addLog(text) {
let time = new Date().toLocaleTimeString();
logContent = [${time}] ${text}\n${logContent};
ui.logView.text(logContent);
console.log(text);
}
// 启动应用 function launchApp(packageName) { let intent = new Intent(); intent.setClassName(packageName, "com.ss.android.ugc.aweme.splash.SplashActivity"); app.startActivity(intent); }
// 主程序入口 function main() { auto.waitFor(); initUI(); events.on("exit", () => { isRunning = false; }); }
main(); `