You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
if (postResult.correct && JSON.stringify(postResult.correct) === JSON.stringify(Object.values(payload))) {
await this.log('Tìm câu đố Durov thành công', 'success');
} else {
await this.log('Tìm câu đố Durov không thành công', 'error');
}
} else if (today > payloadDate) {
await this.log('Chưa có combo Durov ngày mới, cần réo tên @hung96 để cập nhật combo', 'warning');
} else {
await this.log('Payload date is in the future. Please check the date format.', 'warning');
}
} catch (error) {
await this.log(Lỗi rồi: ${error.message}, 'error');
}
}
async processAccount(accountData) {
const { init_data, index } = accountData;
this.accountIndex = index;
try {
const authResult = await this.authenticate(init_data);
if (authResult) {
const { access_token, user } = authResult;
const { id, first_name } = user;
await this.log(`Tài khoản ${first_name}`, 'info');
const userInfo = await this.getUserInfo(id, access_token);
if (userInfo) {
await this.log(`Số sao đang có: ${userInfo.rating}`, 'success');
}
const streakInfo = await this.getStreak(access_token);
if (streakInfo) {
await this.log(`Đã điểm danh ${streakInfo.streak} ngày!`, 'success');
}
const visitResult = await this.postVisit(access_token);
if (visitResult) {
if (visitResult.is_increased) {
await this.log(`Điểm danh thành công ngày ${visitResult.streak}`, 'success');
} else {
await this.log(`Đã điểm danh trước đó. Streak hiện tại: ${visitResult.streak}`, 'warning');
}
}
const rouletteResult = await this.spinRoulette(access_token);
if (rouletteResult) {
if (rouletteResult.rating_award > 0) {
await this.log(`Spin thành công, nhận được ${rouletteResult.rating_award} sao`, 'success');
} else if (rouletteResult.detail && rouletteResult.detail.blocked_until) {
const blockedTime = DateTime.fromSeconds(rouletteResult.detail.blocked_until).setZone('system').toLocaleString(DateTime.DATETIME_MED);
await this.log(`Spin không thành công, cần mời thêm ${rouletteResult.detail.need_invites} bạn hoặc chờ đến ${blockedTime}`, 'warning');
} else {
await this.log(`Kết quả spin không xác định`, 'error');
}
}
await this.handleDurovTask(access_token);
await this.holdCoins(access_token);
await this.swipeCoin(access_token);
const tasks = await this.getDailyTasks(access_token);
if (tasks) {
for (const task of tasks) {
await this.completeTask(access_token, task);
await this.sleep(1000);
}
}
} else {
await this.log(`Không đọc được dữ liệu tài khoản`, 'error');
}
} catch (error) {
await this.log(`Lỗi xử lý tài khoản: ${error.message}`, 'error');
}
}
async processBatch(batch) {
return Promise.all(batch.map((account, index) => {
return new Promise((resolve) => {
const worker = new Worker(__filename, {
workerData: { account, index: account.index }
});
const timeout = setTimeout(() => {
worker.terminate();
this.log(`Tài khoản ${account.index + 1} bị timeout sau 10 phút`, 'error');
resolve();
}, 10 * 60 * 1000);
worker.on('message', (message) => {
if (message === 'done') {
clearTimeout(timeout);
resolve();
}
});
worker.on('error', (error) => {
this.log(`Lỗi luồng cho tài khoản ${account.index + 1}: ${error.message}`, 'error');
clearTimeout(timeout);
resolve();
});
worker.on('exit', (code) => {
if (code !== 0) {
this.log(`Luồng tài khoản ${account.index + 1} dừng với mã lỗi ${code}`, 'error');
}
clearTimeout(timeout);
resolve();
});
});
}));
}
async main() {
const dataFile = './../data/major.txt';
const data = fs.readFileSync(dataFile, 'utf8')
.split('\n')
.filter(Boolean)
.map((line, index) => ({ init_data: line.trim(), index }));
while (true) {
for (let i = 0; i < data.length; i += maxThreads) {
const batch = data.slice(i, i + maxThreads);
await this.processBatch(batch);
if (i + maxThreads < data.length) {
await this.log('Đợi 3 giây trước khi xử lý luồng tiếp theo...', 'warning');
await this.sleep(3000);
}
}
console.log(`[*] Đã xử lý tất cả tài khoản. Nghỉ ${28850} giây trước khi bắt đầu lại...`);
await this.waitWithCountdown(28850);
}
}
Major.js and major-proxy.js are same they require proxy
This is major.js without proxy
const fs = require('fs');
const axios = require('axios');
const colors = require('colors');
const { DateTime } = require('luxon');
const { Worker, isMainThread, parentPort, workerData } = require('worker_threads');
const path = require('path');
const maxThreads = 10; // Maximum threads to run simultaneously
class GLaDOS {
constructor() {
this.authUrl = 'https://major.glados.app/api/auth/tg/';
this.userInfoUrl = 'https://major.glados.app/api/users/';
this.streakUrl = 'https://major.glados.app/api/user-visits/streak/';
this.visitUrl = 'https://major.glados.app/api/user-visits/visit/';
this.rouletteUrl = 'https://major.glados.app/api/roulette/';
this.holdCoinsUrl = 'https://major.glados.app/api/bonuses/coins/';
this.tasksUrl = 'https://major.glados.app/api/tasks/';
this.swipeCoinUrl = 'https://major.glados.app/api/swipe_coin/';
this.durovUrl = 'https://major.bot/api/durov/';
this.durovPayloadUrl = 'https://raw.githubusercontent.com/dancayairdrop/blum/main/durov.json';
this.accountIndex = 0;
}
if (postResult.correct && JSON.stringify(postResult.correct) === JSON.stringify(Object.values(payload))) {
await this.log('Tìm câu đố Durov thành công', 'success');
} else {
await this.log('Tìm câu đố Durov không thành công', 'error');
}
} else if (today > payloadDate) {
await this.log('Chưa có combo Durov ngày mới, cần réo tên @hung96 để cập nhật combo', 'warning');
} else {
await this.log('Payload date is in the future. Please check the date format.', 'warning');
}
} catch (error) {
await this.log(
Lỗi rồi: ${error.message}
, 'error');}
}
}
if (isMainThread) {
const glados = new GLaDOS();
glados.main().catch(async (err) => {
await glados.log(
Lỗi rồi: ${err.message}
, 'error');process.exit(1);
});
} else {
const glados = new GLaDOS();
glados.processAccount(workerData.account)
.then(() => {
parentPort.postMessage('done');
})
.catch(async (error) => {
await glados.log(
Luồng bị lỗi: ${error.message}
, 'error');parentPort.postMessage('done');
});
}
The text was updated successfully, but these errors were encountered: