1.0.3 • Published 1 year ago

bot-blaze-telegram v1.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

A blaze.com, site de aposta online, operada pela empresa Prolific Trade N.V. e bastante popular nas mídias sociais. Em um de seus jogos, o jogador aposta entre 3 cores (vermelho 🔴, preto ⚫️ e branco ⚪️) e o valor apostado pode multiplicar até 14x.

O objetivo deste bot é enviar, após uma analise, sinais do resultado da proxima rodada para grupos/canais/chat do telegram.

❤️ Donation ❤️: ce71c8ba-4c42-4a72-85b4-64fbe3ace08e chave aleatoria NuBank 💜

Analise

  • essa anialise não é 100% eficaz, personalize sua própria análise caso queira melhores resultados;
  • arquivo de analise analise.mjs.

Novidades (v1.0.0)

  • Adicionado opção de analise personalizada

Visualizar

Requisitos

Instalação e configurações

Clone o repositório

git clone https://github.com/elizandrodantas/bot-blaze-telegram

ou

Instalar as dependencias

  • npm
npm install bot-blaze-telegram
  • yarn
yarn add bot-blaze-telegram

Uso

import { BotBlazeWithTelegram } from 'bot-blaze-telegram';

new BotBlazeWithTelegram(options).run();

as opções estão detalhadas em opções

Opções

Interface

interface IConstructorClassDad {
    timeAfterWin?: boolean | IOptionsTimePaused;
    timeAfterLoss?: boolean | IOptionsTimePaused;
    refBlaze?: string;
    sticker: ISticker;
    summaryOfResult?: boolean | IOptionsSummaryOfResult;
    gale?: boolean | number;
    messageEnterBet: ICBCurrentAndRecents;
    messageWin: ICBCurrentAndPlayed;
    messageLoss: ICBCurrentAndPlayed;
    messageOfGale: ICBCurrentAndPlayedAndGale;
    analysis?: IAnalysisKitten | IAnalysisKitten[];
}

interface IColorRoll {
    color: string | number;
    roll: number;
}

interface IAnalysisKitten {
    search: IColorRoll[];
    startSearchOf?: number;
    entryColor?: number | string;
    entryRoll?: number;
}

interface IOptionsTimePaused {
    time: number;
    message: string;
}

interface ISticker {
    win: string;
    winGale: string;
    loss: string;
    winWhite: string;
}

interface IOptionsSummaryOfResult {
    interval: number;
    message: (number: INumberSummary, info: IInfoSummary, cb?: (message: string) => void); 
}

interface INumberSummary {
    win: number;
    loss: number;
    gale: number;
    gale1: number;
    gale2: number;
    white: number;
    consecutive: number;
    total: number;
}

interface IInfoSummary {
    date: string;
    lastUpdate: number;
    day: number;
}

interface IDataBlazeResponse {
    id: string;
    color: number;
    roll: number;
    created_at: string;
    server_seed: string;
}

interface IGale {
    sequence: number;
    phase: string;
}

type ICB = (message: string) => void;

type ICBCurrentAndRecents = (currentPlay: IDataBlazeResponse, recents: IDataBlazeResponse[], cb: ICB) => string;

type ICBCurrentAndPlayed = (currentPlay: IDataBlazeResponse, betplayed: IDataBlazeResponse, cb: ICB) => string;

type ICBCurrentAndPlayedAndGale = (currentPlay: IDataBlazeResponse, betplayed: IDataBlazeResponse, gale: IGale, cb: ICB) => string;

Detalhes

  • IConstructorClassDad.timeAfterWin pausa as entradas do bot apos um WIN
    • IConstructorClassDad.timeAfterWin.message - mensagem apresentada quando pausa ativa (padrão: sem mensagem)
    • IConstructorClassDad.timeAfterWin.time - tempo que ficara em pausa em minutos (padrão: 3)
  • IConstructorClassDad.timeAfterLoss pausa as entradas do bot apos um LOSS
    • IConstructorClassDad.timeAfterLoss.message - mensagem apresentada quando pausa ativa (padrão: sem mensagem)
    • IConstructorClassDad.timeAfterLoss.time - tempo que ficara em pausa em minutos (padrão: 3)
  • IConstructorClassDad.refBlaze codigo de referencia blaze
  • IConstructorClassDad.sticker os arquivos devem ficar na pasta sticker na raiz
    • IConstructorClassDad.sticker.win - nome da figura quando resultado: WIN sem GALE
    • IConstructorClassDad.sticker.winGale - nome da figura quando resultado: WIN no GALE
    • IConstructorClassDad.sticker.loss - nome da figura quando resultado: LOSS
    • IConstructorClassDad.sticker.winWhite - nome da figura quando resultado: WHITE
  • IConstructorClassDad.summaryOfResult opções de resumo
    • IConstructorClassDad.summaryOfResult.interval - intervalo para envio de mensagem. obs.: caso valor 1, a cada 1 jogada ele enviara o resumo
    • IConstructorClassDad.summaryOfResult.message - mensagem personalizada
  • IConstructorClassDad.gale caso verdadeiro, não fara entrada nas jogadas gale
  • IConstructorClassDad.messageEnterBet mensagem personalizada de entrada
  • IConstructorClassDad.messageWin mensagem personalizada quando resultado: WIN
  • IConstructorClassDad.messageLoss mensagem personalizada quando resultado: LOSS
  • IConstructorClassDad.messageOfGale mensagem personalizada quando entrar em uma GALE
  • *IConstructorClassDad.analysis opções de analise personalizada

Todas opões com forma de uso:

{
    //tempo após win
    timeAfterWin: true,
    // or
    timeAfterWin: {
        message: "mensagem",
        time: 1
    },

    // tempo após loss
    timeAfterLoss: true,
    // or
    timeAfterLoss: {
        message: "mensagem",
        time: 1
    },
    
    // sticker/figura
    // nessa opção podem ser usado imagens que estão dentro da pasta STICKER
    sticker: {
        win: "win.jpg",
        winGale: "win-in-gale.jpg",
        winWhite: "win-white.jpg",
        loss: "loss.jpg",
    },

    //envio de mensagens com resumo do dia
    summaryOfResult: {
        interval: 2 // a cada 2 jogadas, ele enviara mensagem personalizada abaixo
        message: function(number, info, cb){
            // number - numeros do resumo (todos possiveis estão em interface "INumberSummary")
            // info - informações do resumo (todos possiveis estão em interface "IInfoSummary")
            // cb - esse callback é uma ou mais mensagens que podem ser enviados alem do retorno desta, o valor request apenas uma string ( ex: cb('mensagem sobressalente') )


            // opção de outras mensagens (não obrigatorio)
            cb("mensagem sobressalente");

            return "Total de jogadas: ${number.total}" +
                "\nWins seguidos: ${number.consecutive} ✅" +
                "\nTotal de win: ${number.win} ✅" +
                "\nTotal de loss: ${number.loss} ❌" +
                "\nTaxa de acertividade: ${(number.win / number.total * 100).toFixed(1)}%";
        }
    },

    // Opção de entrada nas jogadas gale
    gale: false, // não entra
    gale: 2, // vai ate a gale 2

    // Mensagem personalizada de entrada
    messageEnterBet: (current, recents, cb) => {
        // current - ultima jogada
        // recents - ultimas 20 jogadas
        // cb - envio de mensagens sobressalentes .:. ex: cb('test callback');

        return "🔎 <b>SINAL ENCONTRADO:</b>\n" +
            `\nENTRE NO ${_getColorNameOrEmoticon(current.color, { emoticon: true })} ${_getColorNameOrEmoticon(current.color, { pt: true, upper: true })}` +
            `\nPROTEJA NO ${_getColorNameOrEmoticon(0, { emoticon: true })} ${_getColorNameOrEmoticon(0, { pt: true, upper: true })}` +
            `\n\n<pre>https://blaze.com/${process.env.REF ? "r/" + process.env.REF : ""}</pre>`;
    },

    // Mensagem personalizada de Win
    messageWin: (current, betplayed, cb) => {
        // current - ultima jogada
        // betplayed - dados da entrada
        // cb - envio de mensagens sobressalentes .:. ex: cb('test callback');

        return `🔸 ENTRAMOS NO ${_getColorNameOrEmoticon(betplayed.color, { emoticon: true })}` +
            `\n🔹 RESULTADO FOI ${_getColorNameOrEmoticon(current.color, { emoticon: true })}`;
    },

    // Mensagem personalizada de Gale
    messageOfGale: (current, betplayed, gale, cb) => {
        // current - ultima jogada
        // betplayed - dados da entrada
        // gale - informações do gale
        // cb - envio de mensagens sobressalentes .:. ex: cb('test callback');

        return `⚠️ <b>ENTROU PRA GALE ${gale.sequence + 1}:</b>\n` +
            `\nENTRE NO ${_getColorNameOrEmoticon(betplayed.color, { emoticon: true })} ${_getColorNameOrEmoticon(betplayed.color, { pt: true, upper: true })}` +
            `\nPROTEJA NO ${_getColorNameOrEmoticon(0, { emoticon: true })} ${_getColorNameOrEmoticon(0, { pt: true, upper: true })}`;
    },

    // Mensagem personalizada de Loss
    messageLoss: (current, betplayed, cb) => {
        // current - ultima jogada
        // betplayed - dados da entrada
        // cb - envio de mensagens sobressalentes .:. ex: cb('test callback');

        return `🔸 ENTRAMOS NO ${_getColorNameOrEmoticon(betplayed.color, { emoticon: true })}` +
            `\n🔹 RESULTADO FOI ${_getColorNameOrEmoticon(current.color, { emoticon: true })}`;
    },

    // Analise personalizada (unitaria)
    analysis: {
        search: [
            { color: "red" },
            { color: "black" }
        ],
        entryColor: "red"
    }

    // Analise personalizada (multiplas)
    // * primeira analise que encontrar, ele ira entrar
    analysis: [
        {
            search: [
                { color: "red" },
                { color: "black" }
            ],
            entryColor: "red"
        },
        {
            search: [
                { color: "black" },
                { color: "red" },
                { color: "black" },
                { color: "red" }
            ],
            entryColor: "black"
        },
        {
            search: [
                { color: "black" },
                { color: "red" },
                { color: "red" },
                { color: "black" }
            ],
            entryColor: "red"
        }
    ]
}

Exemplos

  1. No exemplo1 example/example-with-dotenv.mjs usando a ferramenta Dotenv
  2. No exemplo2 example/example-without-dotenv.mjs as variáveis ambiente deveram ser setadas direto no sistema ou preenchendo o formulário que será exibido no console

Contato

Instagram: Elizandro Dantas