-
Notifications
You must be signed in to change notification settings - Fork 3
/
bot.js
120 lines (95 loc) · 3.49 KB
/
bot.js
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
require('dotenv').config()
const select = require ('puppeteer-select')
const puppeteer = require('puppeteer')
const {
autoScroll,
sleep,
saveTimestamp,
getTimestamp,
dateToPrint,
randomOffset,
duringToPrint,
autoWithDraw,
millisToMinutesAndSeconds } = require('./helpers/functions')
const ONE_HOUR_MS = 3600000
const LAST_CALL_FS = 0
const chromeOptions = {
headless: true,
defaultViewport: null,
args: [
"--incognito",
"--no-sandbox",
"--disable-setuid-sandbox",
"--single-process",
"--no-zygote"
],
};
/**
* MAIN
*/
(async () => {
const email = process.env.EMAIL
const pass = process.env.PASS
const website = process.env.WEBSITE
console.log('🤖 ----------------- INICIANDO O BOT ----------------- 🤖')
console.log('Usando o Email:', email)
console.log("\n 🍀 Boa sorte amigo!\n")
while (true) {
const lastCall = await getTimestamp()
if (((new Date) - lastCall) < ONE_HOUR_MS) {
let loopError = false
const browser = await puppeteer.launch(chromeOptions)
const page = await browser.newPage()
await page.setViewport({ width: 1866, height: 768})
//if bot meets alert verify bot, accept it
page.on('dialog', async dialog => {
console.log(dialog.accept());
console.log('\n Dialog bot verification accepted...! 😎🤖 \n')
});
console.log(dateToPrint() + '----------------- TENTATIVA DA ROLETA -----------------')
try {
await page.goto(website, { waitUntil: 'networkidle2', timeout: 0 })
await sleep(200)
await page.type('input[name=email]', email, {delay: 20})
await page.type('input[name=password]', pass, {delay: 20})
const element = await select(page).getElement('button:contains(LOGIN!)')
await element.click()
await page.waitForNavigation({ waitUntil: 'networkidle2', timeout: 0 });
await autoScroll(page);
const element_roll = await select(page).getElement('button:contains(ROLL!)')
await element_roll.click()
await sleep(2000);
// inner HTML
const innerText = await page.evaluate(() => document.querySelector('.navbar-coins').innerText)
const cleaninnerText = (innerText.substr(0,10));
const cleantoken = (innerText.substr(11)).trim();
console.log('Balance 🏛️ ->', innerText);
const minwallet = process.env.MINWALLET
console.log(" 👍 PARABÉNS! Moeda reivindicada!\n\n")
// automatically withdraw
millisToMinutesAndSeconds(cleaninnerText, minwallet)
} catch(e) {
console.log('Erro encontrado em: ', website)
console.error("Error: " + e.message)
console.log(" 👎 FALHA. Moeda não reivindicada. ❌\n\n")
loopError = true
}
let pages = await browser.pages()
await Promise.all(pages.map(page =>page.close()))
await browser.close()
if (loopError) {
console.log(`### Ocorreu um erro, tentando novamente em ${millisToMinutesAndSeconds(ONE_HOUR_MS)} ###`)
await sleep(360000)
} else {
console.log('🏆 Todas as moedas foram coletadas com sucesso!')
console.log(`${dateToPrint()} Indo mimir\n Te vejo depois 💤`)
// await saveTimestamp(Date.now().toString())
await saveTimestamp(Date.now())
await sleep(ONE_HOUR_MS + randomOffset())
console.log('----------------- HORA DE LEVENTAR -----------------')
}
} else {
await sleep(36000)
}
}
})()