Erinaldordso commited on
Commit
6aaaf7b
·
verified ·
1 Parent(s): 38652d1

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +28 -39
main.py CHANGED
@@ -22,7 +22,7 @@ def log(acao, status="INFO"):
22
  class ServidorFalso(BaseHTTPRequestHandler):
23
  def do_GET(self):
24
  self.send_response(200); self.end_headers()
25
- self.wfile.write(b"Bot Tribal Wars v5.3 - Interface Blindada")
26
  def log_message(self, format, *args): pass
27
 
28
  def manter_dock_viva():
@@ -32,64 +32,54 @@ def manter_dock_viva():
32
  def force_click(driver, element):
33
  driver.execute_script("arguments[0].click();", element)
34
 
35
- # --- LOGIN E NAVEGAÇÃO FORÇADA ---
36
  def realizar_login(driver):
37
- log("Acedendo ao portal br...", "SISTEMA")
38
  driver.get("https://www.tribalwars.com.br/")
39
  try:
40
- WebDriverWait(driver, 15).until(EC.element_to_be_clickable((By.ID, "user")))
41
  driver.type('input#user', USER_TW)
42
  driver.type('input#password', PASS_TW)
43
  driver.execute_script("document.querySelector('.btn-login').click();")
44
 
45
- time.sleep(6)
46
- # Tenta entrar no mundo pelo link direto
47
  links = driver.find_elements(By.TAG_NAME, "a")
48
  for link in links:
49
  if MUNDO_ID in (link.get_attribute("href") or ""):
50
  force_click(driver, link)
51
- log(f"Login Efetuado! Entrando no {MUNDO_ID.upper()}", "SUCESSO")
52
- time.sleep(5)
53
  return True
54
  return False
55
- except Exception as e:
56
- log(f"Falha no Login: {str(e)[:50]}", "ALERTA")
57
- return False
58
 
59
- # --- MOTOR DE CRESCIMENTO ---
60
  def auditoria_e_obras(driver):
61
- # ESTRATÉGIA: Forçamos a URL da aldeia para garantir que os IDs existam
62
- # O parâmetro &village=0 serve para contas novas que ainda não têm ID de aldeia fixo
63
- log("Forçando entrada na Aldeia Principal...", "SISTEMA")
64
  driver.get(f"https://{MUNDO_ID}.tribalwars.com.br/game.php?screen=main")
65
- time.sleep(5)
66
-
67
- # 🧹 LIMPEZA DE TUTORIAL (Remove tudo que bloqueia o Selenium)
68
  driver.execute_script("""
69
- jQuery(".popup_box_close").click();
70
- jQuery(".quest-reward-collect").click();
71
- jQuery(".tutorial-arrow").remove();
72
- jQuery("#mask").remove();
73
- jQuery(".modal-overlay").remove();
74
  """)
75
 
76
  try:
77
- # Espera forçada pelos recursos
78
- WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "wood")))
79
 
80
  mad = driver.find_element(By.ID, "wood").text
81
  arg = driver.find_element(By.ID, "stone").text
82
  fer = driver.find_element(By.ID, "iron").text
83
- log(f"AUDITORIA -> Madeira: {mad} | Argila: {arg} | Ferro: {fer}", "AUDIT")
84
 
85
- # Verifica fila de construção
86
  fila = driver.find_elements(By.CLASS_NAME, "buildorder")
87
  if len(fila) >= 2:
88
- log("Fila de construção cheia (2/2).", "INFO")
89
  return
90
 
91
- # PRIORIDADES DE UPGRADE (Contas Novas até Full)
92
- # Main primeiro (acelera tudo), depois Minas, depois Armazém
93
  prioridades = ["main", "wood", "stone", "iron", "storage", "farm"]
94
 
95
  for ed in prioridades:
@@ -98,13 +88,13 @@ def auditoria_e_obras(driver):
98
  btn = driver.find_element(By.CSS_SELECTOR, btn_css)
99
  if "btn-disabled" not in btn.get_attribute("class"):
100
  force_click(driver, btn)
101
- log(f"CONSTRUTOR: Iniciado upgrade de {ed.upper()}!", "SUCESSO")
102
  return
103
 
104
- log("A aguardar recursos para o próximo upgrade.", "INFO")
105
 
106
  except Exception as e:
107
- log(f"Erro de Interface: {str(e)[:50]}...", "ALERTA")
108
 
109
  def iniciar():
110
  display = Display(visible=0, size=(1920, 1080)); display.start()
@@ -114,17 +104,16 @@ def iniciar():
114
  if realizar_login(driver):
115
  while True:
116
  auditoria_e_obras(driver)
117
- pausa = random.randint(30, 50)
118
- log(f"Próxima inspeção em {pausa}s.", "SISTEMA")
119
- time.sleep(pausa)
120
 
121
- # Anti-Logout
122
  if "screen=index" in driver.current_url:
123
  realizar_login(driver)
124
  else:
125
- time.sleep(60)
126
 
127
- except Exception as e: log(f"Crash Fatal: {e}", "ALERTA")
128
  finally:
129
  driver.quit(); display.stop()
130
 
 
22
  class ServidorFalso(BaseHTTPRequestHandler):
23
  def do_GET(self):
24
  self.send_response(200); self.end_headers()
25
+ self.wfile.write(b"Bot Tribal Wars v5.4 - Turbo Mode")
26
  def log_message(self, format, *args): pass
27
 
28
  def manter_dock_viva():
 
32
  def force_click(driver, element):
33
  driver.execute_script("arguments[0].click();", element)
34
 
35
+ # --- LOGIN DIRETO ---
36
  def realizar_login(driver):
37
+ log("Acedendo ao servidor (Modo Turbo)...", "SISTEMA")
38
  driver.get("https://www.tribalwars.com.br/")
39
  try:
40
+ WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "user")))
41
  driver.type('input#user', USER_TW)
42
  driver.type('input#password', PASS_TW)
43
  driver.execute_script("document.querySelector('.btn-login').click();")
44
 
45
+ time.sleep(4)
46
+ # Clique imediato no mundo
47
  links = driver.find_elements(By.TAG_NAME, "a")
48
  for link in links:
49
  if MUNDO_ID in (link.get_attribute("href") or ""):
50
  force_click(driver, link)
51
+ log("Dentro do Mundo!", "SUCESSO")
 
52
  return True
53
  return False
54
+ except: return False
 
 
55
 
56
+ # --- MOTOR SEM ESPERA ---
57
  def auditoria_e_obras(driver):
58
+ # Forçar URL para garantir que os seletores existam
 
 
59
  driver.get(f"https://{MUNDO_ID}.tribalwars.com.br/game.php?screen=main")
60
+
61
+ # Limpeza instantânea via JS (sem esperar o Selenium)
 
62
  driver.execute_script("""
63
+ jQuery(".popup_box_close, .quest-reward-collect, #mask, .modal-overlay").remove();
64
+ jQuery("body").removeClass("modal-open");
 
 
 
65
  """)
66
 
67
  try:
68
+ # Espera curta (máximo 5s) para os IDs aparecerem
69
+ WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.ID, "wood")))
70
 
71
  mad = driver.find_element(By.ID, "wood").text
72
  arg = driver.find_element(By.ID, "stone").text
73
  fer = driver.find_element(By.ID, "iron").text
74
+ log(f"RECURSOS -> M:{mad} | A:{arg} | F:{fer}", "AUDIT")
75
 
76
+ # Verifica fila
77
  fila = driver.find_elements(By.CLASS_NAME, "buildorder")
78
  if len(fila) >= 2:
79
+ log("Fila 2/2. A aguardar libertação...", "INFO")
80
  return
81
 
82
+ # Prioridade rápida
 
83
  prioridades = ["main", "wood", "stone", "iron", "storage", "farm"]
84
 
85
  for ed in prioridades:
 
88
  btn = driver.find_element(By.CSS_SELECTOR, btn_css)
89
  if "btn-disabled" not in btn.get_attribute("class"):
90
  force_click(driver, btn)
91
+ log(f"CONSTRUÇÃO DISPARADA: {ed.upper()}", "SUCESSO")
92
  return
93
 
94
+ log("Sem recursos suficientes no momento.", "INFO")
95
 
96
  except Exception as e:
97
+ log("A sincronizar interface...", "SISTEMA")
98
 
99
  def iniciar():
100
  display = Display(visible=0, size=(1920, 1080)); display.start()
 
104
  if realizar_login(driver):
105
  while True:
106
  auditoria_e_obras(driver)
107
+ # REMOVIDO O TEMPO LONGO - Agora espera apenas 2 segundos entre ciclos
108
+ time.sleep(2)
 
109
 
110
+ # Se deslogar, entra de novo sem esperar
111
  if "screen=index" in driver.current_url:
112
  realizar_login(driver)
113
  else:
114
+ time.sleep(5)
115
 
116
+ except Exception as e: log(f"Erro: {e}", "ALERTA")
117
  finally:
118
  driver.quit(); display.stop()
119