<?php
// webhook_cs.php - Robô Inteligente Integrado com Banco de Dados
header('Content-Type: application/json');
require_once 'conexao.php';

$json = file_get_contents('php://input');

// =======================================================
// LOG DE TESTE: Salva tudo que chega em um arquivo txt
// Pode comentar as duas linhas abaixo quando o robô estiver 100% no WhatsApp
$log_data = date('[Y-m-d H:i:s] ') . "Recebido: " . $json . PHP_EOL;
file_put_contents('log_whatauto.txt', $log_data, FILE_APPEND);
// =======================================================

// Tenta decodificar como JSON
$dados = json_decode($json, true);

// Força a leitura caso venha como texto de formulário (URL-encoded)
parse_str($json, $post_vars);

// Pega a mensagem de onde quer que ela tenha vindo
$mensagem_cliente = $dados['message'] ?? $_POST['message'] ?? $post_vars['message'] ?? '';
$mensagem_lower = strtolower(trim($mensagem_cliente));

// Quem é o dono do robô?
$dono_painel = $_GET['rev'] ?? '';

if (empty($dono_painel) || empty($mensagem_lower)) {
    echo json_encode(["reply" => ""]); exit;
}

// =========================================================================
// 1. É UMA RESPOSTA DE MENU? (Digitou um número entre 14 e 100)
// =========================================================================
if (is_numeric($mensagem_lower) && $mensagem_lower >= 14 && $mensagem_lower <= 100) {
    $numero_opcao = (int)$mensagem_lower;
    
    try {
        $stmt = $connGeral->prepare("SELECT id, nome, url, porta FROM perfil ORDER BY id ASC");
        $stmt->execute();
        $todos_perfis = $stmt->fetchAll(PDO::FETCH_ASSOC);

        $indice = $numero_opcao - 14; 
        
        if ($indice >= 0 && isset($todos_perfis[$indice])) {
            $perfil_escolhido = $todos_perfis[$indice];
            
            // --- APLICA A MÁSCARA DO REVENDEDOR (Para não vazar seu IP real) ---
            $stmtMasc = $connGeral->prepare("SELECT nome, url, porta FROM mascaraurl WHERE perfil = ? AND CadUser = ? AND bloqueado != 'sim' LIMIT 1");
            $stmtMasc->execute([$perfil_escolhido['id'], $dono_painel]);
            $mascara = $stmtMasc->fetch(PDO::FETCH_ASSOC);
            
            $url_servidor = !empty($mascara['url']) ? $mascara['url'] : $perfil_escolhido['url'];
            $porta = !empty($mascara['porta']) ? $mascara['porta'] : $perfil_escolhido['porta'];
            $nome_operadora = !empty($mascara['nome']) ? $mascara['nome'] : $perfil_escolhido['nome'];

            // --- GERA O TESTE (Com o Nome no Banco de Dados) ---
            $numero_aleatorio = rand(10000, 99999); 
            $usuario = "cs" . $numero_aleatorio;    
            $senha = (string)$numero_aleatorio;     
            $nome_cliente = "Teste Automático";     
            
            $data_atual = date('Y-m-d H:i:s');
            $data_premio = time() + (48 * 3600); 

            // ATUALIZADO: Adicionado 'nome' na query INSERT para salvar no painel
            $stmtInsert = $connUser->prepare("INSERT INTO teste (nome, usuario, senha, CadUser, perfil, data_cadastro, data_premio, conexao, bloqueado) VALUES (?, ?, ?, ?, ?, ?, ?, 1, 'nao')");
            $stmtInsert->execute([$nome_cliente, $usuario, $senha, $dono_painel, $perfil_escolhido['id'], $data_atual, $data_premio]);

            $deskey = "01 02 03 04 05 06 07 08 09 10 11 12 13 14"; 

            // --- MENSAGEM ENVIADA PARA O WHATSAPP ---
            $texto_mensagem = "✅ *Teste {$nome_operadora} gerado!*\n\n";
            $texto_mensagem .= "📝 *Nome:* {$nome_cliente}\n";
            $texto_mensagem .= "🔗 *URL:* {$url_servidor}\n";
            $texto_mensagem .= "🚪 *Porta:* {$porta}\n";
            $texto_mensagem .= "👤 *User:* {$usuario}\n";
            $texto_mensagem .= "🔑 *Pass:* {$senha}\n";
            $texto_mensagem .= "🗝️ *DES Key:* {$deskey}\n\n";
            $texto_mensagem .= "⏳ *Validade:* 48 Horas\n\n";
            $texto_mensagem .= "Insira os dados e boas emissões!";

            echo json_encode(["reply" => $texto_mensagem]); exit;
        } else {
            echo json_encode(["reply" => "❌ Opção inválida."]); exit;
        }
    } catch (Exception $e) { }
}

// =========================================================================
// 2. LÊ OS GATILHOS CADASTRADOS NO PAINEL
// =========================================================================
try {
    $stmtGatilho = $connUser->prepare("SELECT * FROM robo_gatilhos WHERE usuario = ?");
    $stmtGatilho->execute([$dono_painel]);
    $gatilhos = $stmtGatilho->fetchAll(PDO::FETCH_ASSOC);

    foreach ($gatilhos as $g) {
        $palavra_chave = strtolower(trim($g['gatilho']));
        
        // Verifica se a mensagem bate com o gatilho (exato ou começou com ele)
        if ($mensagem_lower === $palavra_chave || strpos($mensagem_lower, $palavra_chave . ' ') === 0) {
            
            // AÇÃO: MENSAGEM DE TEXTO SIMPLES
            if ($g['acao'] === 'texto') {
                echo json_encode(["reply" => $g['resposta']]); exit;
            }
            
            // AÇÃO: GERAR TESTE (SEU MENU INICIANDO NO 14)
            elseif ($g['acao'] === 'gerar_teste') {
                $stmt = $connGeral->prepare("SELECT id, nome FROM perfil ORDER BY id ASC");
                $stmt->execute();
                $perfis = $stmt->fetchAll(PDO::FETCH_ASSOC);

                if (count($perfis) === 0) {
                    echo json_encode(["reply" => "❌ Nenhuma operadora disponível."]); exit;
                }

                $texto = "📡 *MENU DE TESTES*\n\nEscolha a operadora digitando apenas o número:\n\n";
                $contador = 14; 
                foreach ($perfis as $perfil) {
                    $texto .= "🔹 *" . $contador . "* - " . $perfil['nome'] . "\n";
                    $contador++;
                }
                $texto .= "\n_Exemplo: Digite *14* para a 1ª opção._\n";
                
                // Se tiver resposta adicional configurada, adiciona no topo
                if(!empty($g['resposta'])) { $texto = "*" . $g['resposta'] . "*\n\n" . $texto; }

                echo json_encode(["reply" => $texto]); exit;
            }
            
            // AÇÃO: AUTO-SOCORRO (LIMPEZA DE ROTA DIRETO NO ZAP)
            elseif ($g['acao'] === 'socorro') {
                $usuario_socorro = trim(substr($mensagem_lower, strlen($palavra_chave)));
                
                if (empty($usuario_socorro)) {
                    echo json_encode(["reply" => "⚠️ Informe seu usuário junto com o comando.\n\nExemplo: *" . $palavra_chave . " seuloing*"]); exit;
                }

                $stmtSrv = $connGeral->query("SELECT url FROM painel WHERE block != 'sim' LIMIT 1")->fetch(PDO::FETCH_ASSOC);
                if ($stmtSrv) {
                    $ipSrv = rtrim(trim($stmtSrv['url']), '/'); 
                    $urlKick = $ipSrv . "/api.php?action=kill_user&user=" . urlencode($usuario_socorro);
                    $context = stream_context_create(['http' => ['timeout' => 2]]);
                    @file_get_contents($urlKick, false, $context);

                    echo json_encode(["reply" => "✅ Rota limpa com sucesso para o usuário *$usuario_socorro*!\n\nTire o aparelho da tomada por 10 segundos e ligue novamente."]); exit;
                }
            }
            break; // Achou o gatilho, para de procurar
        }
    }
} catch (Exception $e) { }

// Ignora outras mensagens e não responde nada
echo json_encode(["reply" => ""]);
exit;
?>
