下载地址:www.pan38.com/dow/share.p… 提取密码:1133
这个实现包含了主框架和多个平台模块,使用面向对象设计。代码结构清晰,包含了错误处理、重试机制等。使用时需要根据各平台实际UI调整选择器,并注意遵守平台规则。
` // 多平台私信群发工具 v1.0 const PLATFORMS = { KUAISHOU: 1, DOUYIN: 2, XIAOHONGSHU: 3, BILIBILI: 4 };
class MessageSender { constructor() { this.interval = 1000; this.maxRetry = 3; this.currentPlatform = null; }
// 主发送方法 async sendBatchMessages(platform, messages, recipients) { this.currentPlatform = platform; try { this._checkEnvironment(); await this._openApp();
for(let i = 0; i < recipients.length; i++) {
let retryCount = 0;
while(retryCount < this.maxRetry) {
try {
await this._sendSingleMessage(recipients[i], messages[i]);
break;
} catch(e) {
retryCount++;
console.error(`发送失败 ${recipients[i]}, 重试 ${retryCount}/${this.maxRetry}`);
await sleep(this.interval * 2);
}
}
}
return true;
} catch(e) {
console.error("批量发送失败:", e);
return false;
}
}
_checkEnvironment() { if(!auto.service) { toast("请先开启无障碍服务"); exit(); } }
async _openApp() { switch(this.currentPlatform) { case PLATFORMS.KUAISHOU: app.launch("com.kuaishou.nebula"); break; case PLATFORMS.DOUYIN: app.launch("com.ss.android.ugc.aweme"); break; // 其他平台类似... } await waitForPackage(this._getPackageName()); }
_getPackageName() { // 返回各平台包名... }
async _sendSingleMessage(user, message) { // 各平台具体实现... } }
class KuaiShouSender extends MessageSender { constructor() { super(); this.selector = { searchBtn: "搜索按钮选择器", inputBox: "输入框选择器", userItem: "用户列表项选择器", msgInput: "消息输入框选择器", sendBtn: "发送按钮选择器" }; }
async _sendSingleMessage(user, message) { // 实现快手私信发送逻辑 click(this.selector.searchBtn); await waitForSelector(this.selector.inputBox); setText(this.selector.inputBox, user); await waitForSelector(this.selector.userItem); click(this.selector.userItem); await waitForSelector(this.selector.msgInput); setText(this.selector.msgInput, message); click(this.selector.sendBtn); await sleep(this.interval); } } `