Spaces:
Paused
Paused
Update bot.js
Browse files
bot.js
CHANGED
|
@@ -135,7 +135,7 @@ function createBot(username, authType, role, partnerName) {
|
|
| 135 |
physicsEnabled: false,
|
| 136 |
// Paket hacmini azaltıp bazı olaylara maruz kalma ihtimalini biraz
|
| 137 |
// düşürebilir (garanti bir çözüm değil, sadece maruziyeti azaltır).
|
| 138 |
-
viewDistance: "tiny"
|
| 139 |
});
|
| 140 |
|
| 141 |
botInstances[username] = bot;
|
|
@@ -589,6 +589,35 @@ function createBot(username, authType, role, partnerName) {
|
|
| 589 |
}
|
| 590 |
}
|
| 591 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 592 |
// --- YARDIMCI HESAP AKIŞI ---
|
| 593 |
async function runHelperSequence() {
|
| 594 |
try {
|
|
@@ -697,17 +726,22 @@ function createBot(username, authType, role, partnerName) {
|
|
| 697 |
}
|
| 698 |
}, 7000);
|
| 699 |
} else {
|
| 700 |
-
// ÖNEMLİ:
|
| 701 |
-
//
|
| 702 |
-
//
|
| 703 |
-
//
|
| 704 |
-
//
|
| 705 |
-
//
|
| 706 |
-
//
|
| 707 |
-
//
|
| 708 |
-
//
|
| 709 |
-
//
|
| 710 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 711 |
}
|
| 712 |
}
|
| 713 |
}, 15000);
|
|
@@ -782,10 +816,7 @@ function createBot(username, authType, role, partnerName) {
|
|
| 782 |
botStatuses[username].skyblockDone &&
|
| 783 |
INVITE_REGEX.test(plainText)
|
| 784 |
) {
|
| 785 |
-
|
| 786 |
-
botStatuses[username].invited = true; // sadece panelde göstermek için
|
| 787 |
-
logger.info(`[${username}] Ada daveti algılandı, kabul akışı başlıyor...`);
|
| 788 |
-
runHelperSequence();
|
| 789 |
}
|
| 790 |
});
|
| 791 |
|
|
|
|
| 135 |
physicsEnabled: false,
|
| 136 |
// Paket hacmini azaltıp bazı olaylara maruz kalma ihtimalini biraz
|
| 137 |
// düşürebilir (garanti bir çözüm değil, sadece maruziyeti azaltır).
|
| 138 |
+
viewDistance: "tiny"
|
| 139 |
});
|
| 140 |
|
| 141 |
botInstances[username] = bot;
|
|
|
|
| 589 |
}
|
| 590 |
}
|
| 591 |
|
| 592 |
+
// Helper akışını güvenli biçimde başlatır. hem gerçek bir "davet edildiniz"
|
| 593 |
+
// chat mesajı görüldüğünde, hem de reconnect sonrası "acaba bekleyen bir
|
| 594 |
+
// davetim var mı?" kör denemesinde kullanılır.
|
| 595 |
+
//
|
| 596 |
+
// ÖNEMLİ (reconnect senaryosu): Sunucu, davet mesajını SADECE daveti
|
| 597 |
+
// gönderdiği anda o anki bağlantıya yazar. Helper davet geldikten sonra
|
| 598 |
+
// ama kabul etmeden bağlantısı koparsa, yeniden bağlandığında sunucu bu
|
| 599 |
+
// mesajı TEKRAR YAZMAZ - davet server tarafında hâlâ (5 dk boyunca)
|
| 600 |
+
// geçerli olsa bile chat'te görünmez. Bu yüzden salt "mesaj gelirse
|
| 601 |
+
// tetikle" mantığı bu durumda sonsuza dek beklemeye yol açıyordu.
|
| 602 |
+
// Bunu gidermek için reconnect sonrası bir kez kör /isaccept deneniyor;
|
| 603 |
+
// bekleyen davet varsa kabul edilir, yoksa deneme başarısız olur ve
|
| 604 |
+
// bayrak sıfırlanarak asıl mesaj dinleyicisi (yeni bir invite metni
|
| 605 |
+
// geldiğinde) tekrar devreye girebilir hale getirilir.
|
| 606 |
+
async function tryStartHelperSequence(reason) {
|
| 607 |
+
if (sessionAborted || botStatuses[username].stageComplete || helperTriggeredThisSession) return;
|
| 608 |
+
helperTriggeredThisSession = true;
|
| 609 |
+
botStatuses[username].invited = true; // panelde göstermek için
|
| 610 |
+
logger.info(`[${username}] Helper akışı deneniyor (${reason})...`);
|
| 611 |
+
await runHelperSequence();
|
| 612 |
+
if (!sessionAborted && !botStatuses[username].stageComplete) {
|
| 613 |
+
// Deneme başarısız oldu (ör. bekleyen davet yoktu) - bayrağı sıfırla
|
| 614 |
+
// ki gerçek bir invite mesajı geldiğinde ya da bir sonraki reconnect'te
|
| 615 |
+
// tekrar denenebilsin.
|
| 616 |
+
helperTriggeredThisSession = false;
|
| 617 |
+
logger.info(`[${username}] Helper akışı bu denemede tamamlanamadı, bir sonraki tetikleyiciye (mesaj/reconnect) hazır bekleniyor.`);
|
| 618 |
+
}
|
| 619 |
+
}
|
| 620 |
+
|
| 621 |
// --- YARDIMCI HESAP AKIŞI ---
|
| 622 |
async function runHelperSequence() {
|
| 623 |
try {
|
|
|
|
| 726 |
}
|
| 727 |
}, 7000);
|
| 728 |
} else {
|
| 729 |
+
// ÖNEMLİ: /is go burada ASLA denenmez (probu dahil) - çünkü
|
| 730 |
+
// helper henüz /isaccept ile onaylanmış bir katılım kanıtlamadıysa
|
| 731 |
+
// /is go, helper'ın KENDİ adasını oluşturmasına yol açar.
|
| 732 |
+
//
|
| 733 |
+
// AMA: reconnect sonrası, sunucunun daha önce gönderdiği bir
|
| 734 |
+
// davet mesajını bu yeni bağlantıda ASLA tekrar görmeyeceğimizi
|
| 735 |
+
// biliyoruz (sunucu invite mesajını sadece gönderildiği anki
|
| 736 |
+
// bağlantıya yazar). Bu yüzden sadece pasif beklemek yeterli
|
| 737 |
+
// değil - bekleyen bir davet olup olmadığını anlamak için bir
|
| 738 |
+
// kez KÖR /isaccept denemesi yapılır. Bekleyen davet varsa kabul
|
| 739 |
+
// edilir ve akış devam eder; yoksa deneme başarısız olur, bayrak
|
| 740 |
+
// sıfırlanır ve normal mesaj dinleyicisi (yeni bir invite metni
|
| 741 |
+
// için) aktif kalmaya devam eder.
|
| 742 |
+
setSafeTimeout(() => {
|
| 743 |
+
tryStartHelperSequence("reconnect sonrası bekleyen davet kontrolü");
|
| 744 |
+
}, 4000);
|
| 745 |
}
|
| 746 |
}
|
| 747 |
}, 15000);
|
|
|
|
| 816 |
botStatuses[username].skyblockDone &&
|
| 817 |
INVITE_REGEX.test(plainText)
|
| 818 |
) {
|
| 819 |
+
tryStartHelperSequence("chat'te davet mesajı görüldü");
|
|
|
|
|
|
|
|
|
|
| 820 |
}
|
| 821 |
});
|
| 822 |
|