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 💜
- essa anialise não é 100% eficaz, personalize sua própria análise caso queira melhores resultados;
- arquivo de analise
analise.mjs
.
- Adicionado opção de analise personalizada
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
Variáveis de ambiente (.env)
(indicada para uso local)
dentro do repositorio existe um arquivo de exemplo (.env.example)
BOT_TOKEN="" // token do bot telegram
ID_GROUP_MESSAGE="" // id do grupo/canal/chat do telegram que ira receber os sinais (string)
caso as variaveis não forem encontradas dentro do processo, serão setados em forma de input no console (>= v0.1.1*)
import { BotBlazeWithTelegram } from 'bot-blaze-telegram';
new BotBlazeWithTelegram(options).run();
as opções estão detalhadas em opções
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;
- 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 GALEIConstructorClassDad.sticker.winGale
- nome da figura quando resultado: WIN no GALEIConstructorClassDad.sticker.loss
- nome da figura quando resultado: LOSSIConstructorClassDad.sticker.winWhite
- nome da figura quando resultado: WHITE
- IConstructorClassDad.summaryOfResult opções de resumo
IConstructorClassDad.summaryOfResult.interval
- intervalo para envio de mensagem. obs.: caso valor1
, a cada 1 jogada ele enviara o resumoIConstructorClassDad.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
{
//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"
}
]
}
- No exemplo1 [
example/example-with-dotenv.mjs
] usando a ferramenta Dotenv - 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
Instagram: Elizandro Dantas