import time
import random
import requests
from colorama import Fore, Style
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# URL do webhook do Discord
WEBHOOK_URL = "https://discord.com/api/webhooks/1207645692818882571/dgd6xyGfTBZcjRwecaukb5qVFzyjIq7_DBWV7zYa4R5fx1SUX7Hfm7N5SvvJet4gEI5T"

# Lista para armazenar contas geradas
generated_accounts = []

# 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"]
    username = random.choice(first_names) + "-" + random.choice(last_names)
    return username

# Função para gerar URLs completos de email
def generate_email_url(username):
    return f"https://tuamaeaquelaursa.com/{username}"

# 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:
        driver.find_element_by_xpath('//p[contains(text(), "Tua mãe, aquela ursa não encontrou tuas cartas.")]')
        return True
    except NoSuchElementException:
        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 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. Verificar Conta Específica.")
    print("3. 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':
            check_specific_account()
        elif choice == '3':
            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 a página do email
            email_url = generate_email_url(username)

            # Espera o tempo escolhido antes de verificar se a página está carregada completamente
            time.sleep(wait_time)

            # Imprime o resultado
            print_result(username, email_url, True)

# Função para verificar uma conta específica
def check_specific_account():
    # Solicita ao usuário o nome de usuário a ser verificado
    username = input("Digite o nome de usuário que deseja verificar: ")

    # Gera a URL do email
    email_url = generate_email_url(username)

    # Solicita ao usuário o tempo de espera desejado
    wait_time = get_wait_time()

    # Espera o tempo escolhido antes de verificar se a página está carregada completamente
    time.sleep(wait_time)

    # Imprime o resultado
    print_result(username, email_url, True)

# 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

# Executa o programa
if __name__ == "__main__":
    main()