Suvarii commited on
Commit
f1411bc
·
verified ·
1 Parent(s): a81222a

Update bot.js

Browse files
Files changed (1) hide show
  1. bot.js +47 -16
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İ: Helper henüz hiçbir zaman partnerin adasına katıldığını
701
- // KANITLAMADIYSA (stageComplete false), burada HİÇBİR KOMUT
702
- // GÖNDERİLMEZ. Özellikle /is go asla "zaten katılmış mıyım?"
703
- // probu olarak bile gönderilmez - çünkü helper henüz /isaccept
704
- // yapıp onaylanmadıysa /is go, helper'ın KENDİ adasını
705
- // oluşturmasına yol açar (sunucu "Artık bir ada sahibisiniz"
706
- // mesajıyla yanıt verir). Helper burada tamamen pasif kalır ve
707
- // sadece aşağıdaki 'message' handler'ındaki INVITE_REGEX
708
- // dinleyicisinin gerçek bir davet mesajı yakalayıp
709
- // runHelperSequence()'ı tetiklemesini bekler.
710
- logger.info(`[${username}] Henüz adaya katılmamışız, davet mesajı bekleniyor (hiçbir komut gönderilmiyor)...`);
 
 
 
 
 
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
- helperTriggeredThisSession = true;
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