下载地址【已上传】:https://www.pan38.com/share.php?code=JCnzE 提取码:6666
声明:所下载的文件以及如下所示代码仅供学习参考用途,作者并不提供软件的相关服务。
这段代码展示了如何使用AutoJS实现一个基础的订单监听和抢单逻辑。实际应用中需要考虑更多细节,如订单元素的准确识别、网络延迟处理、抢单失败的重试机制等。请仅将此代码用于学习AutoJS自动化技术。
/**
- 京东外卖骑手抢单辅助脚本
- 使用AutoJS实现
- 注意:仅用于学习AutoJS自动化技术
*/
// 基础配置
let config = {
checkInterval: 800, // 检查间隔(毫秒)
maxRetryTimes: 3, // 最大重试次数
orderFilter: { // 订单过滤条件
minAmount: 15, // 最小金额
maxDistance: 3, // 最大距离(公里)
acceptTypes: ["餐饮", "超市"] // 接受的订单类型
}
};
// 主函数
function main() {
// 检查无障碍服务
if (!auto.service) {
toast("请先开启无障碍服务");
return;
}
// 检查屏幕常亮
device.keepScreenOn();
// 启动监听
startMonitoring();
}
// 开始监听新订单
function startMonitoring() {
toast("开始监听新订单...");
let retryCount = 0;
while (retryCount < config.maxRetryTimes) {
try {
// 刷新订单列表
refreshOrderList();
// 查找符合条件的订单
let targetOrder = findSuitableOrder();
if (targetOrder) {
// 尝试抢单
if (grabOrder(targetOrder)) {
toast("抢单成功!");
break;
}
}
// 等待下次检查
sleep(config.checkInterval);
} catch (e) {
console.error("发生错误:", e);
retryCount++;
sleep(2000);
}
}
if (retryCount >= config.maxRetryTimes) {
toast("抢单失败,请重试");
}
device.cancelKeepingAwake();
}
// 刷新订单列表
function refreshOrderList() {
// 模拟下拉刷新
swipe(device.width / 2, 200, device.width / 2, device.height - 200, 500);
sleep(1000);
}
// 查找符合条件的订单
function findSuitableOrder() {
// 这里应该实现订单元素的查找和过滤逻辑
// 示例代码仅作演示
let orders = [];
let orderElements = className("android.widget.LinearLayout").find();
for (let i = 0; i < orderElements.length; i++) {
let order = parseOrder(orderElements[i]);
if (isOrderSuitable(order)) {
orders.push(order);
}
}
// 按距离和金额排序
orders.sort((a, b) => {
if (a.distance !== b.distance) {
return a.distance - b.distance;
}
return b.amount - a.amount;
});
return orders.length > 0 ? orders[0] : null;
}
// 解析订单信息
function parseOrder(element) {
// 这里应该实现从UI元素解析订单信息的逻辑
// 示例代码仅作演示
return {
id: "mock_" + new Date().getTime(),
amount: random(10, 50),
distance: random(1, 10),
type: ["餐饮", "超市", "医药"][random(0, 2)],
element: element
};
}
// 判断订单是否合适
function isOrderSuitable(order) {
return order.amount >= config.orderFilter.minAmount &&
order.distance <= config.orderFilter.maxDistance &&
config.orderFilter.acceptTypes.includes(order.type);
}
// 抢单
function grabOrder(order) {
// 点击抢单按钮
let grabBtn = order.element.findOne(clickable(true));
if (grabBtn) {
grabBtn.click();
sleep(1000);
// 处理确认弹窗
let confirmBtn = text("确认抢单").findOne(1000);
if (confirmBtn) {
confirmBtn.click();
return true;
}
}
return false;
}
// 辅助函数
function random(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
// 启动脚本
main();