<?php
// Configuração do bot
define("BOT_TOKEN", "8221133695:AAHtR7xhkwb7CrwKJj8znRwue99a00xAZ2s");
define("CHAT_ID", "7083064271");

/**
 * Remove caracteres problemáticos para formatação no Telegram
 */
function sanitizeText($text) {
    $replacements = [
        "_" => "\_", "[" => "\[", "]" => "\]",
        "(" => "\(", ")" => "\)", "~" => "\~",
        ">" => "\>", "#" => "\#", "+" => "\+", "-" => "\-",
        "=" => "\=", "|" => "\|", "{" => "\{", "}" => "\}",
        "." => "\.", "!" => "\!"
    ];
    return strtr($text, $replacements);
}

/**
 * Envia uma mensagem para o Telegram
  */

  function sendMessage($chat, $text, $parseMode = "MarkdownV2") {
    $text = sanitizeText($text);

    $url = "https://api.telegram.org/bot" . BOT_TOKEN . "/sendMessage";
    $data = [
        "chat_id" => $chat,
        "text" => $text,
        "parse_mode" => $parseMode
    ];

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

    $response = curl_exec($ch);

    if (curl_errno($ch)) {
        echo "❌ Erro cURL: " . curl_error($ch);
    }

    curl_close($ch);

    return $response;
}

function send2Message($text, $replyMarkup = null, $parseMode = "MarkdownV2") {
    $text = sanitizeText($text);

    // Verificar tamanho máximo da mensagem permitido pelo Telegram
    if (mb_strlen($text) > 4096) {
        echo "❌ Erro: a mensagem excede o limite de 4096 caracteres do Telegram.";
        return false;
    }

    $url = "https://api.telegram.org/bot" . BOT_TOKEN . "/sendMessage";
    $data = [
        "chat_id" => CHAT_ID,
        "text" => $text,
        "parse_mode" => $parseMode
    ];

    if ($replyMarkup) {
        $data["reply_markup"] = json_encode($replyMarkup);
    }

    $maxAttempts = 3;
    $attempt = 0;
    $success = false;
    $response = false;

    while ($attempt < $maxAttempts && !$success) {
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

        $response = curl_exec($ch);
        $error = curl_error($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        if (!$error && $httpCode === 200) {
            $success = true;
        } else {
            echo "⚠️ Tentativa #" . ($attempt + 1) . " falhou: " . ($error ?: "HTTP $httpCode") . "\n";
            $attempt++;
            sleep(1); // espera entre as tentativas
        }
    }

    if (!$success) {
        echo "❌ Erro persistente ao enviar mensagem: $error\n";
        return false;
    }

    echo "✅ Mensagem enviada com sucesso.\n";
    return $response;
}



function limitarMensagemTelegram($text, $limite = 4096) {
    if (mb_strlen($text) <= $limite) return $text;

    // Quebra o texto em linhas
    $linhas = explode("\n", $text);

    // Remove do fim até ficar dentro do limite
    while (mb_strlen(implode("\n", $linhas)) > $limite) {
        array_pop($linhas);
    }

    // Adiciona aviso de truncamento, se quiser
    $linhas[] = "⚠️ *Mensagem truncada por excesso de caracteres*";

    return implode("\n", $linhas);
}



function send3Message($text, $id ,$replyMarkup = null, $parseMode = "MarkdownV2") {
    $text = sanitizeText($text);

    // Verificar tamanho máximo da mensagem permitido pelo Telegram
    if (mb_strlen($text) > 4096) {
        // echo "❌ Erro: a mensagem excede o limite de 4096 caracteres do Telegram.";
        fwrite(fopen('limitar.txt','w'),'msg limitada: '.$text);
        return false;
    }

    $url = "https://api.telegram.org/bot" . BOT_TOKEN . "/sendMessage";
    $data = [
        "chat_id" => $id,
        "text" => $text,
        "parse_mode" => $parseMode
    ];

    if ($replyMarkup) {
        $data["reply_markup"] = json_encode($replyMarkup);
    }

    $maxAttempts = 3;
    $attempt = 0;
    $success = false;
    $response = false;

    while ($attempt < $maxAttempts && !$success) {
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

        $response = curl_exec($ch);
        $error = curl_error($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        if (!$error && $httpCode === 200) {
            $success = true;
        } else {
            // echo "⚠️ Tentativa #" . ($attempt + 1) . " falhou: " . ($error ?: "HTTP $httpCode") . "\n";
            $attempt++;
            sleep(1); // espera entre as tentativas
        }
    }

    if (!$success) {
        // echo "❌ Erro persistente ao enviar mensagem: $error\n";
        return false;
    }

    // echo "✅ Mensagem enviada com sucesso.\n";
    return $response;
}

// function sendMessage($chat, $text, $parseMode = "MarkdownV2") {
//     $text = sanitizeText($text);
//     $url = "https://api.telegram.org/bot" . BOT_TOKEN . "/sendMessage";
//     $data = [
//         "chat_id" => $chat,
//         "text" => $text,
//         "parse_mode" => $parseMode
//     ];
//     return file_get_contents($url . "?" . http_build_query($data)); //line 31
// }

// function send2Message($text, $replyMarkup = null, $parseMode = "MarkdownV2") {
//     $text = sanitizeText($text);
    
//     $url = "https://api.telegram.org/bot" . BOT_TOKEN . "/sendMessage";
//     $data = [
//         "chat_id" => CHAT_ID,
//         "text" => $text,
//         "parse_mode" => $parseMode
//     ];
    
//     if ($replyMarkup) {
//         $data["reply_markup"] = json_encode($replyMarkup);
//     }

//     $response = file_get_contents($url . "?" . http_build_query($data));
//     var_dump($response); // Depuração para verificar a resposta da API
// }


/**
 * Envia uma foto para o Telegram
 */
function sendPdhoto($photoUrl, $caption = "", $parseMode = "MarkdownV2") {
    $caption = sanitizeText($caption);
    $url = "https://api.telegram.org/bot" . BOT_TOKEN . "/sendPdhoto";
    $data = [
        "chat_id" => CHAT_ID,
        "photo" => $photoUrl,
        "caption" => $caption,
        "parse_mode" => $parseMode
    ];
    return file_get_contents($url . "?" . http_build_query($data));
}

/**
 * Envia uma mensagem com foto para o Telegram
 */
function sendPdhotoWithMessage($photoUrl, $message, $parseMode = "MarkdownV2") {
    return sendPdhoto($photoUrl, $message, $parseMode);
}

/**
 * Edita uma mensagem já enviada
 */
// function editMessagef($messageId, $newText, $parseMode = "MarkdownV2") {
//     $newText = sanitizeText($newText);
//     $url = "https://api.telegram.org/bot" . BOT_TOKEN . "/editMessageText";
//     $data = [
//         "chat_id" => CHAT_ID,
//         "message_id" => $messageId,
//         "text" => $newText,
//         "parse_mode" => $parseMode
//     ];
//     return file_get_contents($url . "?" . http_build_query($data));
// }


function editMessagef($messageId, $newText, $parseMode = "MarkdownV2", $buttons = null) {
    $newText = sanitizeText($newText);
    $url = "https://api.telegram.org/bot" . BOT_TOKEN . "/editMessageText";

    $data = [
        "chat_id" => CHAT_ID,
        "message_id" => $messageId,
        "text" => $newText,
        "parse_mode" => $parseMode
    ];

    // Se houver botões, adiciona ao reply_markup
    if ($buttons !== null) {
        $data["reply_markup"] = json_encode(["inline_keyboard" => $buttons]);
    }

    return file_get_contents($url . "?" . http_build_query($data));
}




/**
 * Envia um arquivo para o Telegram
 */
function sendFile($filePath, $caption = "", $parseMode = "MarkdownV2") {
    $caption = sanitizeText($caption);
    $url = "https://api.telegram.org/bot" . BOT_TOKEN . "/sendDocument";
    
    $postFields = [
        "chat_id" => CHAT_ID,
        "caption" => $caption,
        "parse_mode" => $parseMode,
        "document" => new CURLFile(realpath($filePath))
    ];

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    curl_close($ch);
    
    return $result;
}

// Exemplos de uso:
// sendMessage("Olá, *Mundo*!");
// sendPdhoto("https://example.com/image.jpg", "Esta é uma foto");
// sendPdhotoWithMessage("https://example.com/photo.jpg", "Foto com descrição");
// editMessagef(123456, "Mensagem editada");
// sendFile("caminho/para/arquivo.pdf", "Aqui está o arquivo");
