File size: 3,899 Bytes
26f08ec
 
 
0c3bedd
26f08ec
57ef4c5
0c3bedd
26f08ec
57ef4c5
 
 
26f08ec
 
 
 
57ef4c5
 
 
 
26f08ec
57ef4c5
26f08ec
 
0c3bedd
 
 
26f08ec
 
57ef4c5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0c3bedd
 
 
 
57ef4c5
 
 
 
0c3bedd
 
 
57ef4c5
26f08ec
57ef4c5
0c3bedd
57ef4c5
26f08ec
 
 
 
 
57ef4c5
 
 
 
 
 
26f08ec
 
57ef4c5
 
26f08ec
 
 
 
57ef4c5
26f08ec
 
 
57ef4c5
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
const TelegramBot = require('node-telegram-bot-api');
const schedule = require("node-schedule");
const fs = require('fs');
const http = require('http');

// CONFIGURAÇÕES DO FUNIL
const token = "8151185457:AAEfnxKvdLI_ltEqD_-aEKjVpSnvxF1EX40";
const LINK_AFILIADO = "https://bv789y.com/?a=ce235kbt";

// Atenção: Você vai gerar o link de convite do seu canal privado e colar aqui embaixo
const LINK_CANAL_PRIVADO = "https://t.me/+SEU_LINK_DE_CONVITE_AQUI"; 

const bot = new TelegramBot(token, { polling: true });
const jogos = ["Fortune Tiger 🐯", "Fortune Rabbit 🐰", "Fortune Ox 🐂", "Fortune Mouse 🐭"];

// Banco de Dados para salvar o ID do canal privado
let db = { config: { canalID: null } };
if (fs.existsSync('db_sinais_v2.json')) {
    try { db = JSON.parse(fs.readFileSync('db_sinais_v2.json', 'utf8')); } catch(e){}
}
function salvar() { fs.writeFileSync('db_sinais_v2.json', JSON.stringify(db, null, 2)); }

function getHora(min) {
    return new Date(Date.now() + min * 60000).toLocaleTimeString("pt-BR", {
        hour: "2-digit", minute: "2-digit", timeZone: "America/Sao_Paulo"
    });
}

// 1. O FUNIL NO PRIVADO DO BOT (A Porta de Entrada)
bot.onText(/\/start/, (msg) => {
    if (msg.chat.type !== 'private') return;
    
    const texto = `💻 **ACESSO LIBERADO AO RADAR VIP**\n\n` +
                  `Fala, ${msg.from.first_name}! Para acessar os sinais gratuitos 24h sem interrupções, siga os 2 passos abaixo:\n\n` +
                  `1️⃣ **Cadastre-se na Plataforma Oficial** (O radar só lê o algoritmo dela).\n` +
                  `2️⃣ **Entre no Canal Privado** e ative as notificações.\n\n` +
                  `👇 Escolha uma opção abaixo:`;

    bot.sendMessage(msg.chat.id, texto, {
        parse_mode: 'Markdown',
        reply_markup: {
            inline_keyboard: [
                [{ text: "🟩 1. CADASTRAR NA PLATAFORMA", url: LINK_AFILIADO }],
                [{ text: "🔒 2. ENTRAR NO CANAL PRIVADO", url: LINK_CANAL_PRIVADO }]
            ]
        }
    });
});

// 2. VINCULAR O CANAL PRIVADO
bot.on('channel_post', (msg) => {
    if (msg.text && msg.text.toLowerCase() === '/start') {
        db.config.canalID = msg.chat.id;
        salvar();
        // O bot apaga o comando /start para deixar o canal limpo
        bot.deleteMessage(msg.chat.id, msg.message_id).catch(()=>{});
        bot.sendMessage(msg.chat.id, "🟢 **SISTEMA BLINDADO ATIVO**\nCanal privado conectado com sucesso.", { parse_mode: "Markdown" });
        console.log(`Canal privado configurado: ${msg.chat.id}`);
    }
});

// 3. ENVIO DE SINAIS (Safe Mode: Sem links externos)
async function enviarSinal() {
    if (!db.config.canalID) return;
    
    const delay = Math.floor(Math.random() * 30000); // Aleatório de 0 a 30 seg
    
    setTimeout(async () => {
        const jogo = jogos[Math.floor(Math.random() * jogos.length)];
        const assertividade = Math.floor(Math.random() * 5) + 94;
        
        // Formato mais limpo, sem palavras que dão ban e SEM LINKS
        const msg = `⚡ **ANÁLISE DE PADRÃO - ${jogo}**\n\n` +
                    `📊 Probabilidade: ${assertividade}%\n` +
                    `⏰ MINUTOS:\n` +
                    `🔹 ${getHora(2)} | 🔹 ${getHora(5)} | 🔹 ${getHora(8)}\n\n` +
                    `📌 *Nota: Link de acesso na mensagem fixada no topo do canal.*`;

        try {
            await bot.sendMessage(db.config.canalID, msg, { parse_mode: "Markdown" });
            console.log(`Sinal Blindado enviado: ${jogo}`);
        } catch (e) { console.log("Erro no envio:", e.message); }
    }, delay);
}

// Inicia o cronograma
enviarSinal();
schedule.scheduleJob("*/5 * * * *", enviarSinal);

// Mantém o Hugging Face online
http.createServer((req, res) => { res.write('Sistema Blindado Online!'); res.end(); }).listen(7860);
console.log("🚀 MODO FUNIL BLINDADO INICIADO!");