const DEF_DELAY = 1200; function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms || DEF_DELAY)); } const got = require('got'); const { whitelist, user_agent, origin } = require('./config'); module.exports = function (users) { for (const user of users){ var a = new SlaveMaster(user); a.start() } }; class SlaveMaster{ my_id = -1; balance = 0; friends = []; slaves_already = []; constructor(user) { this.name = user.name; this.token = user.token; this.job = user.job; this.buy_slaves = user.buy_slaves; this.buy_fetters = user.buy_fetters; this.upgrade_slaves = user.upgrade_slaves; this.min_fetter_profit = user.min_fetter_profit; this.min_balance = user.min_balance; this.min_price = user.min_price; this.max_price = user.max_price; this.min_upgrade_price = user.min_upgrade_price; this.getFriendsIds = user.getFriendsIds; } async start(){ try { await this.init(); console.log(this.name,' ||| ','Авторизация прошла успешно'); var response = await this.getMyInfo(); this.my_id = response.me.id; this.balance = response.me.balance; console.log(this.name,' ||| ','Мой владелец ',response.me.master_id); console.log(this.name,' ||| ','Бот был запущен'); await sleep(); this.checkFetter(); this.getFriends(); this.buySlaves(); } catch(err) { console.error(err); console.error(err.response.body); } } async init(){ try { var bearer_response = await got.get(`https://api.vk.com/method/apps.get?app_id=7794757&platform=ios&access_token=${this.token}&v=5.23`, { headers: { 'user-agent': user_agent }, throwhttperrors: true, responseType: 'json', resolveBodyOnly: true }).json(); var url = bearer_response.response.mobile_iframe_url; var bearer = 'Bearer ' + url.substring(url.indexOf('index.html?')).substring(11); this.authorization = bearer; } catch(error) { console.error(error); console.error(this.name,' --- ','Ошибка Авторизации: ',error.response.body); } setTimeout(() => {this.init()},600000); } async getFriends(){ try { var friends_response = await got.get(`https://vk-api-proxy.xtrafrancyz.net/method/friends.get?user_id=${this.my_id}&count=10000&access_token=${this.token}&v=5.150`).json(); this.friends = friends_response.response.items; await sleep(); //users.getFollowers for await (const id of this.getFriendsIds){ var friends_response1 = await got.get(`https://vk-api-proxy.xtrafrancyz.net/method/friends.get?user_id=${id}&count=20000&access_token=${this.token}&v=5.150`).json(); var friends_array1 = friends_response1.response.items; for await (const friend of friends_array1){ await this.friends.push(friend); } var friends_response2 = await got.get(`https://vk-api-proxy.xtrafrancyz.net/method/users.getFollowers?user_id=${id}&count=1000&access_token=${this.token}&v=5.150`).json(); var friends_array2 = friends_response2.response.items; for await (const friend of friends_array2){ await this.friends.push(friend); } await sleep(); } console.log(this.name,' --- ','Друзей: ',this.friends.length); } catch(error) { console.error(this.name,' --- ','Ошибка получения списка друзей: ',error); } await sleep(300000); this.getFriends(); } async getMyInfo(){ var response = await got.get(`https://pixel.w84.vkforms.ru/HappySanta/slaves/1.0.0/start`, { headers: { 'user-agent': user_agent, 'authorization' : this.authorization, 'Origin': origin } }).json(); await sleep(100); return response; } async getInfo(id){ var response = await got.get(`https://pixel.w84.vkforms.ru/HappySanta/slaves/1.0.0/user?id=${id}`, { headers: { 'user-agent': user_agent, 'authorization' : this.authorization, 'Origin': origin } }).json(); await sleep(100); return response; } async buySlave(slave){ await got.post(`https://pixel.w84.vkforms.ru/HappySanta/slaves/1.0.0/buySlave`, { headers: { 'user-agent': user_agent, 'authorization' : this.authorization, 'Origin': origin }, throwhttperrors: true, responseType: 'json', resolveBodyOnly: true, json: { slave_id: slave.id } }).then((response)=>{ this.balance = response.balance; this.slaves_already.push(slave.id); console.log(this.name,' ||| ','Новый раб \tid:',slave.id,' \tЦена:',slave.price); }).catch(async (error) => { await sleep(); console.error(this.name,' --- ','Ошибка покупки раба: ',error.response.body/*.replace(/(\<.*?\>)/g, '')*/); }); await sleep(); } async sellSlave(slave){ await got.post(`https://pixel.w84.vkforms.ru/HappySanta/slaves/1.0.0/saleSlave`, { headers: { 'user-agent': user_agent, 'authorization' : this.authorization, 'Origin': origin }, throwhttperrors: true, responseType: 'json', resolveBodyOnly: true, json: { slave_id: slave.id } }).then((response)=>{ this.balance = response.balance; this.slaves_already.push(slave.id); console.log(this.name,' ||| ','Продан раб \tid:',slave.id); }).catch(async (error) => { console.error(this.name,' --- ','Ошибка продажи раба: ',error.response.body/*.replace(/(\<.*?\>)/g, '')*/); }); await sleep(); } async jobSlave(slave){ await got.post(`https://pixel.w84.vkforms.ru/HappySanta/slaves/1.0.0/jobSlave`, { headers: { 'user-agent': user_agent, 'authorization' : this.authorization, 'Origin': origin }, throwhttperrors: true, responseType: 'json', resolveBodyOnly: true, json: { slave_id: slave.id, name: this.job } }).then((response)=>{ console.log(this.name,' ||| ','Новая работа \tid:',slave.id,' \tПрибыль в минуту:',response.slave.profit_per_min); }).catch(async (error) => { await sleep(); console.error(this.name,' --- ','Ошибка при устройстве на работу: ',error.response.body/*.replace(/(\<.*?\>)/g, '')*/); }); await sleep(); } async buyFetter(slave,nums){ await got.post(`https://pixel.w84.vkforms.ru/HappySanta/slaves/1.0.0/buyFetter`, { headers: { 'user-agent': user_agent, 'authorization' : this.authorization, 'Origin': origin }, throwhttperrors: true, responseType: 'json', resolveBodyOnly: true, json: { slave_id: slave.id } }).then((response)=>{ // balance = response.balance; this.balance -= slave.fetter_price; console.log(this.name,' ||| ','Купил цепь \tid:',slave.id,'\tЦена:',slave.fetter_price,'\tПрибыль принесет:',(slave.profit_per_min*60*2-slave.fetter_price)); }).catch(async (error) => { await sleep(); var err=""+error.response.body; console.error(this.name,' --- ','Ошибка покупки кандалов: ',error.response.body/*.replace(/(\<.*?\>)/g, '')*/); }); await sleep(); } async checkFetter(){ try { var response = await this.getMyInfo(); // console.log(response.me); this.balance = response.me.balance; console.log(this.name,' =|= ',"Текущий баланс: ",response.me.balance,' \tРабов: ',response.me.slaves_count,'\tДоход в минуту: ',response.me.slaves_profit_per_min,' \tМесто в рейтинге: ',response.me.rating_position); var slaves_array = []; var slaves = response.slaves; for await (const slave of slaves){ if(((slave.profit_per_min>this.min_fetter_profit&&slave.fetter_price<=120000)||whitelist.includes(slave.id))&&slave.fetter_to==0&&slave.fetter_price<=this.balance&&this.buy_fetters){ await this.buyFetter(slave); } } for await (const slave of slaves){ slaves_array.push(slave.id); if(((slave.profit_per_min>1&&slave.fetter_price<=120000)||whitelist.includes(slave.id))&&slave.fetter_to==0&&slave.fetter_price<=this.balance&&this.buy_fetters){ await this.buyFetter(slave); } if(slave.profit_per_min==0){ await this.jobSlave(slave); } } this.slaves_already = slaves_array; } catch(error) { console.error(this.name,' --- ','Ошибка проверки кандалов: ',error); } await sleep(5000); this.checkFetter(); } async buySlaves(){ if(this.buy_slaves) try { var friends_ids = this.friends.filter( ( friend ) => !this.slaves_already.includes( friend ) ); for await (const friend of friends_ids){ var slave = await this.getInfo(friend); if(slave.master_id!=this.my_id&&this.balance>=this.min_balance&&this.balance>=slave.price&&slave.price<=this.max_price&&slave.price>=this.min_price&&slave.fetter_to==0){ await this.buySlave(slave); } } await this.upgradeSlaves(); await sleep(5000); this.buySlaves(); } catch(error) { console.error(this.name,' --- ','Ошибка покупки рабов: ',error); await sleep(5000); this.buySlaves(); } } async upgradeSlaves(){ if(this.upgrade_slaves) try { var response = await this.getMyInfo(); for await (const slave of response.slaves){ if(this.balance>=1000000&&slave.price<=27000&&slave.price>=this.min_upgrade_price){ await this.sellSlave(slave); await sleep(100); await this.buySlave(slave); await sleep(100); } } return; } catch(error) { console.error(this.name,' --- ','Ошибка улучшения рабов: ',error); } } }