import time
import random
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from colorama import Fore, Style

# URL do webhook do Discord
WEBHOOK_URL = "https://discord.com/api/webhooks/1207645692818882571/dgd6xyGfTBZcjRwecaukb5qVFzyjIq7_DBWV7zYa4R5fx1SUX7Hfm7N5SvvJet4gEI5T"

# Lista para armazenar contas geradas
generated_accounts = []

# Desenho Sleezy - Rockstar
print("░██████╗██╗░░░░░███████╗███████╗███████╗██╗░░░██╗  ")
print("██╔════╝██║░░░░░██╔════╝██╔════╝╚════██║╚██╗░██╔╝  ")
print("╚█████╗░██║░░░░░█████╗░░█████╗░░░░███╔═╝░╚████╔╝░  ")
print("░╚═══██╗██║░░░░░██╔══╝░░██╔══╝░░██╔══╝░░░░╚██╔╝░░  ")
print("██████╔╝███████╗███████╗███████╗███████╗░░░██║░░░  ")
print("╚═════╝░╚══════╝╚══════╝╚══════╝╚══════╝░░░╚═╝░░░  ")

# Função para gerar nomes de usuário aleatórios
def generate_random_username():
    first_names = ["maria", "joao", "ana", "pedro", "carlos", "luis", "fernanda", "julia", "gabriel", "rafael"]
    last_names = ["silva", "santos", "oliveira", "pereira", "costa", "rodrigues", "almeida", "nascimento", "azevedo", "ferreira"]
    random_name = random.choice(first_names) + "-" + random.choice(last_names) + "-" + ''.join(random.choices('0123456789', k=3))
    return random_name

# Função para gerar URLs completos de email
def generate_email_url(username):
    return f"https://tuamaeaquelaursa.com/{username}"

# Função para abrir o Chrome
def open_chrome():
    driver = webdriver.Chrome()
    return driver

# Função para verificar se a mensagem "Tua mãe, aquela ursa não encontrou tuas cartas." está presente
def check_for_error_message(driver):
    try:
        WebDriverWait(driver, 15).until(EC.visibility_of_element_located((By.XPATH, '//p[contains(text(), "Tua mãe, aquela ursa não encontrou tuas cartas.")]')))
        return True
    except:
        return False

# Função para imprimir os resultados em cores diferentes usando colorama
def print_result(username, email_url, account_exists):
    if account_exists:
        message = f"Conta {username} APROVADA ✅✅✅✅. URL do email: {email_url}"
        print(Fore.GREEN + message + Style.RESET_ALL)
        send_to_discord(message)
    else:
        message = f"Conta {username} NÃO EXISTE❌❌. URL do email: {email_url}"
        print(Fore.RED + message + Style.RESET_ALL)

# Função para enviar uma mensagem para o Discord via webhook
def send_to_discord(message):
    data = {
        "content": message
    }
    response = requests.post(WEBHOOK_URL, json=data)
    if response.status_code != 200:
        print("Erro ao enviar mensagem para o Discord.")

# Função para solicitar o tempo de espera ao usuário
def get_wait_time():
    print("Escolha o tempo de espera antes de verificar se a página está carregada completamente:")
    print("1. 5 segundos - USE CASO TENHA INTERNET EXCELENTE.✅✅✅✅✅")
    print("2. 10 segundos - USE CASO TENHA INTERNET OTIMO.✅✅✅✅")
    print("3. 15 segundos - USE CASO TENHA INTERNET BOM.✅✅✅")
    print("4. 20 segundos - USE CASO TENHA INTERNET LEGAL.✅✅")
    print("5. 25 segundos - USE CASO TENHA INTERNET RUIM.❌")
    print("6. 30 segundos - USE CASO TENHA INTERNET HORRIVEL.❌❌❌❌❌")
    choice = int(input("Digite o número correspondente ao tempo desejado: "))
    if choice == 1:
        return 5
    elif choice == 2:
        return 10
    elif choice == 3:
        return 15
    elif choice == 4:
        return 20
    elif choice == 5:
        return 25
    elif choice == 6:
        return 30
    else:
        print("Opção inválida. Usando o tempo padrão de 15 segundos.")
        return 15

# Função para mostrar o menu inicial
def show_menu():
    print("Bem-vindo ao gerador de contas Rockstar!")
    print("Escolha uma das opções abaixo:")
    print("1. Gerar Contas.")
    print("2. Sair.")

# Função principal
def main():
    while True:
        show_menu()
        choice = input("Digite o número da opção desejada: ")
        if choice == '1':
            generate_email_accounts()
        elif choice == '2':
            print("FINALIZANDO!!!")
            break
        else:
            print("Opção inválida. Por favor, escolha uma opção válida.")

# Função para gerar as contas de email
def generate_email_accounts():
    # Solicita ao usuário o tempo de espera desejado
    wait_time = get_wait_time()

    # Entrada da quantidade de contas a serem geradas
    num_accounts = int(input("Digite a quantidade de contas que deseja gerar: PS: MINIMO DE 500 CASO TENHA PC FRACO ! "))

    # Loop para gerar e verificar as contas
    while len(generated_accounts) < num_accounts:
        # Geração de nome de usuário aleatório
        username = generate_random_username()

        # Verifica se o nome de usuário já foi gerado antes
        if username not in generated_accounts:
            generated_accounts.append(username)
            # Abre o Chrome
            driver = open_chrome()

            # Abre a página do email
            email_url = generate_email_url(username)
            driver.get(email_url)

            # Espera o tempo escolhido antes de verificar se a página está carregada completamente
            time.sleep(wait_time)

            # Verifica se a mensagem de erro está presente na página
            error_message_exists = check_for_error_message(driver)

            # Determina se a conta existe com base na presença da mensagem de erro
            account_exists = not error_message_exists

            # Imprime o resultado
            print_result(username, email_url, account_exists)

            # Fecha o navegador após a verificação
            driver.quit()

# Executa o programa
if __name__ == "__main__":
    main()