Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //basics
- var config = require('./config');
- var server = require('http').createServer();
- var io = require('socket.io')(server);
- var fs = require('fs');
- var request = require('request');
- var mysql = require('mysql');
- //BOT init start
- var SteamCommunity = require('steamcommunity');
- var community = new SteamCommunity();
- var SteamUser = require('steam-user');
- var TradeOfferManager = require('steam-tradeoffer-manager');
- var SteamTotp = require('steam-totp');
- //SITE SETTINGS
- var prices = JSON.parse(fs.readFileSync(__dirname + '/prices.txt'));
- var isSteamRIP = false;
- var bot_online = true;
- var steamid_sockets = {};
- var assigns = {};
- var orders = '';
- var orderDetails = {};
- var connection = mysql.createConnection({
- host : config.host,
- user : config.user,
- password : config.password,
- database : config.db
- });
- //PAYMENT BOT ADMIN
- var padmin = config.padmin;
- var polling_interval = config.polling_interval; //confirmation checker
- //PAYMENT BOT ACCOUNT DETALIS
- var pdetails = {
- "accountName" : config.pbot_username,
- "password" : config.pbot_password,
- "twoFactorCode" : SteamTotp.generateAuthCode(config.psharedsecret)
- };
- //BOT CLIENT INIT
- var pclient = new SteamUser();
- //BOT MANAGER INIT
- var pmanager = new TradeOfferManager({
- "steam" : pclient,
- "domain" : config.manager_domain,
- "language" : config.manager_lang,
- "cancelTime" : config.manager_cancelTime
- });
- /*
- //BOOST BOT ADMIN
- var badmin = config.badmin;
- //BOOST BOT ACCOUNT DETALIS
- var bdetails = {
- "accountName" : config.bbot_username,
- "password" : config.bbot_password,
- "twoFactorCode" : SteamTotp.generateAuthCode(config.bsharedsecret)
- };
- //BOT CLIENT INIT
- var bclient = new SteamUser();
- //BOT MANAGER INIT
- var bmanager = new TradeOfferManager({
- "steam" : bclient,
- "domain" : config.manager_domain,
- "language" : config.manager_lang,
- "cancelTime" : config.manager_cancelTime
- }); */
- pclient.logOn(pdetails); //bot login
- //bclient.logOn(bdetails); //boost bot login
- //ranks
- var ranks = [[1, 'Silver 1', 10],
- [2, 'Silver 2', 20],
- [3, 'Silver 3', 30],
- [4, 'Silver 4', 40],
- [5, 'Silver Elite', 50],
- [11, 'Silver Elite Master', 60],
- [10, 'Gold Nova 1', 75],
- [12, 'Gold Nova 2', 90],
- [13, 'Gold Nova 3', 105],
- [14, 'Gold Nova Master', 120],
- [15, 'Master Guardian 1', 140],
- [16, 'Master Guardian 2', 160],
- [17, 'Master Guardian Elite', 180],
- [18, 'Distinguished Master Guardian', 210],
- [19, 'Legendary Eagle', 250],
- [20, 'Legendary Eagle Master', 290],
- [21, 'Supreme Master First Class', 350],
- [22, 'Global Elite', 420]];
- io.on('connection', function(socket){
- socket.on('disconnect', function(socket){
- });
- socket.on('get value', function(beg,end,prime){
- io.emit('value', calcPrice(beg,end,prime));
- });
- socket.on('load inventory', function(steamid, force){
- var forcereload, inventory, res;
- if(!steamid) return;
- if(typeof(steamid) !== 'string') return;
- if (res = /^(7656119\d{10})/.exec(steamid)) {
- if(!force) forcereload = false;
- if ((fs.existsSync('cache/'+steamid+'.txt')) && (forcereload === false)) {
- inventory = JSON.parse(fs.readFileSync('cache/'+steamid+'.txt'));
- socket.emit('inventory',{inventory: inventory.inventory, prices: inventory.prices});
- socket.emit('notify','info','Inventory loaded from cache.');
- } else {
- var steamid_substr = ''+steamid;
- steamid_substr = steamid_substr.substr(7);
- steamid_substr = parseInt(steamid_substr);
- var tradelink = 'https://steamcommunity.com/tradeoffer/new/?partner='+(steamid_substr - 7960265728);
- var app = pmanager.createOffer(tradelink);
- app.getPartnerInventoryContents('730','2',function(get_err,inventory) {
- if(get_err){
- console.log('error occured while loading items');
- console.log(get_err);
- socket.emit('notify','danger','Error while loading your inventory.');
- return;
- } else {
- var output_prices = [];
- for(key in inventory){
- var obj = inventory[key];
- if(prices[obj['market_hash_name']])
- var a_price = prices[obj['market_hash_name']];
- else var a_price = 0;
- if(a_price < 0.10){
- a_price = 0;
- }
- output_prices.push({
- market_hash_name: obj['market_hash_name'],
- price: ''+a_price
- })
- }
- fs.writeFile('cache/'+steamid+'.txt', JSON.stringify({inventory: inventory, prices: output_prices}), function(fserr) {
- if(fserr) {
- socket.emit('notify','danger','Error while loading your inventory.');
- return console.log(fserr);
- }
- });
- socket.emit('inventory',{inventory: inventory, prices: output_prices});
- socket.emit('notify','success','Inventory loaded.');
- }
- });
- }
- } else return;
- });
- socket.on('deposit items', function(items,steamid,tradeurl,beg,end,prime,note,steamid2) {
- var token, token_regex, token_regex2, res;
- if(!steamid) return [ socket.emit('notify','danger','Please specify your SteamID.'), socket.emit('deposit error') ];
- if(!steamid2) return [ socket.emit('notify','danger','Please specify your SteamID.'), socket.emit('deposit error') ];
- if(items.length < 1) return [ socket.emit('notify','danger','No items selected.'), socket.emit('deposit error') ];
- if(Object.prototype.toString.call(items) !== '[object Array]') return [ socket.emit('notify','danger','No items selected.'), socket.emit('deposit error') ];
- if(typeof(steamid) !== 'string') return [ socket.emit('notify','danger','Please specify your SteamID.'), socket.emit('deposit error') ];
- if(typeof(steamid2) !== 'string') return [ socket.emit('notify','danger','Please specify your SteamID.'), socket.emit('deposit error') ];
- if (!(res = /^(7656119\d{10})/.exec(steamid2))) return [ socket.emit('notify','danger','Please specify your SteamID.'), socket.emit('deposit error') ];
- if (res = /^(7656119\d{10})/.exec(steamid)) {
- if(isSteamRIP === false){
- if(!tradeurl) return [ socket.emit('notify','danger','Please specify your tradelink.'), socket.emit('deposit error') ];
- if(typeof(tradeurl) !== 'string') return [ socket.emit('notify','danger','Please specify your tradelink.'), socket.emit('deposit error') ];
- token_regex = /token=([\w-]+)/.exec(tradeurl);
- if (token_regex) {
- token = token_regex[1];
- token_regex2 = /^(.{4,8})$/.exec(token);
- if(token_regex2){
- token = token_regex2[1];
- } else return [ socket.emit('notify','danger','Please specify your tradelink.'), socket.emit('deposit error') ];
- } else return [ socket.emit('notify','danger','Please specify your tradelink.'), socket.emit('deposit error') ];
- connection.query('SELECT * FROM `trade_history` WHERE `offer_partner` = '+connection.escape(steamid)+' AND (`offer_state` = \'sent\' OR `offer_state` = \'pending\' OR `offer_state` = \'2\' OR `offer_state` = \'9\')', function(offer_err, offers) {
- if(offer_err){
- console.log(offer_err);
- return [ socket.emit('notify','danger','Please try again.'), socket.emit('deposit error') ];
- } else if(offers.length > 0){
- return [ socket.emit('notify','danger','You already have a pending offer!'), socket.emit('deposit error') ];
- } else {
- var steamid_substr = ''+steamid;
- steamid_substr = steamid_substr.substr(7);
- steamid_substr = parseInt(steamid_substr);
- var tradelink = 'https://steamcommunity.com/tradeoffer/new/?partner='+(steamid_substr - 7960265728)+'&token='+token;
- var app = pmanager.createOffer(tradelink);
- app.getPartnerInventoryContents('730','2',function(get_err,inventory) {
- if(get_err){
- console.log('error occured while deposit');
- console.log(get_err);
- return [ socket.emit('notify','danger','Please try again.'), socket.emit('deposit error') ];
- } else {
- var names = [];
- var hacker = false;
- items.forEach(function(item) {
- for(key in inventory){
- var object = inventory[key];
- if(object.id == item){
- if(prices[object.market_hash_name])
- var a_price = prices[object.market_hash_name];
- else var a_price = 0;
- if(a_price < 0.10){
- hacker = true;
- }
- names.push({
- market_hash_name: object.market_hash_name,
- id: parseInt(object.id),
- price: a_price
- });
- }
- }
- });
- var total_price = 0;
- var after_items = [];
- names.forEach(function(name) {
- total_price+=name.price;
- after_items.push(name.id);
- });
- total_price = total_price.toFixed(2);
- after_items.sort(function (a, b) { return a - b; });
- items.sort(function (a, b) { return a - b; });
- if (items.length == after_items.length
- && items.every(function(u, i) {
- return u === after_items[i];
- })
- ) {
- var i_price = calcPrice(beg,end,prime);
- if(i_price < 10) return [ socket.emit('notify','danger','You need to pay more for this boost! Please reload your inventory!'), socket.emit('deposit error') ];;
- if((total_price < i_price) || (hacker)){
- return [ socket.emit('notify','danger','You need to pay more for this boost!'), socket.emit('deposit error') ];
- } else {
- console.log(total_price);
- items.forEach(function(target) {
- app.addTheirItem({
- appid: 730,
- contextid: 2,
- amount: 1,
- assetid: target
- });
- });
- app.setToken(token);
- app.getUserDetails(function(a_err,me,them) {
- if(a_err){
- console.log('error occured while deposit');
- console.log(a_err);
- return [ socket.emit('notify','danger','Unknown error occurred.'), socket.emit('deposit error') ];
- } else {
- if(them.escrowDays == 0){
- app.send(function(error, status) {
- if(error){
- console.log('error occured while deposit');
- console.log(error);
- return [ socket.emit('notify','danger','Unknown error occurred.'), socket.emit('deposit error') ];
- } else {
- console.log('Deposit request, items: '+items);
- var is_prime = (prime) ? 'non-prime' : 'prime';
- note = note.substring(0,1000);
- connection.query('INSERT INTO `trade_history` SET `offer_id`='+connection.escape(app.id)+',`offer_partner`='+connection.escape(steamid)+',`offer_state`='+connection.escape(status)+',`worth`='+total_price+',`beg`='+connection.escape(beg)+',`end`='+connection.escape(end)+',`prime`='+connection.escape(is_prime)+',`note`='+connection.escape(note)+',`boost_steamid`='+connection.escape(steamid2), function(err1) {
- if(err1){
- console.log('error occured while deposit');
- console.log(err1);
- return [ socket.emit('notify','danger','Unknown error occurred.'), socket.emit('deposit error') ];
- } else {
- if(!steamid_sockets[steamid]) {
- steamid_sockets[steamid] = {
- socket: [],
- }
- }
- steamid_sockets[steamid]['socket'].push(socket.id);
- socket.emit('notify','success','Offer #'+app.id+' sent!');
- socket.emit('deposit success');
- }
- });
- }
- });
- } else {
- return [ socket.emit('notify','danger','You need mobile authentication enabled to use zasuboost.com!'), socket.emit('deposit error') ];
- }
- }
- });
- } } else {
- if(items.length == after_items.length){
- console.log('error here');
- console.log(items);
- console.log(after_items);
- }
- return [ socket.emit('notify','danger','These items are not longer available!'), socket.emit('deposit error') ];
- return;
- }
- }
- });
- }
- });
- } else {
- return [ socket.emit('notify','danger','Steam is actually offline, please try again later!'), socket.emit('deposit error') ];
- }
- } else return;
- });
- });
- var steam_check_interval = 5000;
- setInterval(function() {
- request('http://is.steam.rip/api/v1/?request=IsSteamRip', function(rip_error, response, body) {
- if(rip_error){
- return;
- } else {
- if(body){
- if(body.result){
- if(body.result.success === true){
- if(body.result.isSteamRip === true){
- isSteamRIP = true; //o nie! Steam nie zyje!
- steam_check_interval = 20000;
- } else {
- isSteamRIP = false; //uff. Steam zyje!
- }
- }
- }
- }
- }
- });
- },steam_check_interval);
- function init(){
- server.listen(8080);
- console.log('Loaded.');
- }
- function calcPrice(beg,end,prime){
- if((!beg) || (!end)) return 0;
- if((typeof(beg) !== "string") || (typeof(end) !== "string")) return 0;
- var total = 0;
- ranks.forEach(function(rank){
- if(rank[1] === beg) total -= rank[2];
- if(rank[1] === end) total += rank[2];
- });
- if(total < 1) total = 0;
- if((prime) && (total)) total = total + (total*0.15);
- return total;
- }
- pclient.on("loggedOn", function() {
- console.log("Payment bot logged in!");
- pclient.addFriend(config.padmin);
- pclient.setPersona(3);
- connection.connect(function() {
- init();
- });
- });
- pclient.on("friendMessage", function(steamid, wiadomosc) {
- if(steamid == config.padmin){
- var alt_regex = /(\d{17}):(.+)/.exec(wiadomosc);
- var add_regex = /^\/add ([0-9]{17})/.exec(wiadomosc);
- var remove_regex = /^\/remove ([0-9]{17})/.exec(wiadomosc);
- var assign_regex = /^\/assign ([0-9]{17}) ([0-9]{17})/.exec(wiadomosc);
- var rmassign_regex = /^\/removeassign ([0-9]{17})/.exec(wiadomosc);
- var order_regex = /^\/info (.+)/.exec(wiadomosc);
- var rmorder_regex = /^\/orderRemove (.+)/.exec(wiadomosc);
- if (0 == wiadomosc.indexOf("/code")) {
- var kod = SteamTotp.generateAuthCode(config.psharedsecret);
- pclient.chatMessage(config.padmin, "[BOT] Auth code: (try again if dont work): " + kod);
- } else if (0 == wiadomosc.indexOf("/online")) {
- pclient.setPersona(6);
- bot_online = true;
- } else if (0 == wiadomosc.indexOf("/offline")) {
- pclient.setPersona(3);
- bot_online = false;
- } else if (0 == wiadomosc.indexOf("/orders")) {
- pclient.chatMessage(config.padmin, orders);
- } else if (order_regex) {
- if(orderDetails[order_regex[1]]) pclient.chatMessage(config.padmin, orderDetails[order_regex[1]]);
- else pclient.chatMessage(config.padmin, 'Order doesn\'t exists.');
- } else if (rmorder_regex) {
- if(orderDetails[rmorder_regex[1]]) {
- delete orderDetails[rmorder_regex[1]];
- orders.replace(','+rmorder_regex[1],'');
- pclient.chatMessage(config.padmin, 'Order removed.');
- }
- else pclient.chatMessage(config.padmin, 'Order doesn\'t exists.');
- } else if (assign_regex) {
- assigns[assign_regex[1]] = {
- booster: assign_regex[2],
- player: assign_regex[1]
- }
- pclient.chatMessage(config.padmin, 'Assigned.');
- } else if (rmassign_regex) {
- if(assigns[rmassign_regex[1]]){
- delete assigns[rmassign_regex[1]];
- pclient.chatMessage(config.padmin, 'Assign removed.');
- } else {
- pclient.chatMessage(config.padmin, 'Assign doesn\'t exists.');
- }
- } else if (add_regex) {
- pclient.addFriend(add_regex[1]);
- } else if (remove_regex) {
- pclient.removeFriend(remove_regex[1]);
- } else if(alt_regex) {
- pclient.chatMessage(alt_regex[1], alt_regex[2]);
- }
- } else {
- var alt_regex = /(\d{17}):(.+)/.exec(wiadomosc);
- if((alt_regex) && (assigns[alt_regex[1]]) && (assigns[alt_regex[1]].booster == steamid)){
- pclient.getPersonas([steamid,alt_regex[1]], function(callback) {
- pclient.chatMessage(alt_regex[1], alt_regex[2]);
- pclient.chatMessage(config.padmin, callback[steamid.toString()].player_name+' ('+steamid+'): "'+alt_regex[2]+'" to: '+alt_regex[1]+' ('+callback[alt_regex[1].toString()].player_name+').');
- })
- } else {
- if(!bot_online) pclient.chatMessage(steamid,'Bot is offline. You probably must wait some time for reply.');
- pclient.getPersonas([steamid], function(callback) {
- pclient.chatMessage(config.padmin, callback[steamid.toString()].player_name+' ('+steamid+')'+':'+wiadomosc);
- if(assigns[steamid.toString()]) pclient.chatMessage(assigns[steamid.toString()].booster, callback[steamid.toString()].player_name+' ('+steamid+')'+':'+wiadomosc);
- });
- }
- }
- });
- pclient.on("webSession", function(dataAndEvents, depName) {
- pmanager.setCookies(depName, function(reply) {
- if (reply) {
- return console.log("error setCookies: " + reply), void process.exit(1);
- }
- var cb = pmanager.apiKey;
- community.setCookies(depName);
- community.startConfirmationChecker(polling_interval, config.pidentitysecret);
- console.log("cookies set.");
- });
- });
- pmanager.on("newOffer", function(oferta) {
- console.log('received new offer #'+oferta.id+' from '+oferta.partner.toString());
- if(oferta.partner.toString() == config.padmin){
- oferta.accept(true, function(blad, status){
- if(blad){
- console.log("[BOT] error while accepting trade offer from admin: " + blad);
- } else console.log('[BOT] accepted offer from admin: '+oferta.partner.toString()+' ('+status+').');
- });
- } else {
- oferta.decline(function(blad){
- if(blad){
- console.log('[BOT] error while canceling: '+offer.partner.toString()+' ('+blad+').');
- } else console.log('[BOT] canceled trade from '+offer.partner.toString());
- });
- }
- });
- community.on("newConfirmation", function(d) {
- var time = Math.round(Date.now() / 1E3);
- var data = SteamTotp.getConfirmationKey(identitysecret, time, "allow");
- community.respondToConfirmation(d.id, d.key, time, data, true, function(error) {
- console.log("[BOT] accepting outgoing offer: "+ d.key);
- if (error) {
- console.log("[BOT] error while accepting outgoing offer: " + error);
- pclient.webLogOn();
- }
- });
- });
- pmanager.on("sentOfferChanged", function(data,oldState) {
- console.log("[BOT] offer state changed #"+data.id+" from: "+data.partner+" changed: " + data.state + " before: " + oldState);
- var string_state = {1:'Invalid',2:'Active',3:'Accepted',4:'Countered',5:'Expired',6:'Canceled',7:'Declined',8:'InvalidItems',9:'Needs Confirmation',10:'Canceled',11:'In Escrow'};
- if (steamid_sockets[data.partner]) {
- steamid_sockets[data.partner].socket.forEach(function(asocket) {
- if(io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('notify', 'info', 'Your offer '+data.id+' changed state from "'+string_state[oldState]+'" to "'+string_state[data.state]+'"');
- });
- }
- connection.query('SELECT * FROM `trade_history` WHERE `offer_id` = '+data.id, function(err,rows){
- if(err){
- console.log('IMPORTANT ERROR AT SENT OFFER CHANGED EVENT');
- console.log(err);
- return;
- } else if(rows.length < 1){
- return;
- } else {
- connection.query('UPDATE `trade_history` SET `offer_state` = '+data.state+' WHERE `offer_id` = '+data.id, function(error){
- if(error){
- console.log('IMPORTANT ERROR AT SENT OFFER CHANGED EVENT');
- console.log(error);
- return;
- }
- });
- if(data.state == 3){
- data.getReceivedItems(function(items_error, receiveditems) {
- if(items_error){
- console.log('IMPORTANT ERROR AT DEPOSIT getReceivedItems, USER: '+rows[0].offer_partner);
- console.log(items_error);
- } else {
- if (steamid_sockets[data.partner]) {
- steamid_sockets[data.partner].socket.forEach(function(asocket) {
- if(io.sockets.connected[asocket])
- io.sockets.connected[asocket].emit('deposit complete');
- });
- }
- orders += ','+rows[0].offer_id;
- orderDetails[rows[0].offer_id] = "(ORDER ID:"+rows[0].offer_id+") Paid by: "+rows[0].offer_partner+", boost for: "+rows[0].boost_steamid+", hes rank: "+rows[0].beg+", he want: "+rows[0].end+", prime account? "+rows[0].prime+", note to order: "+rows[0].note+", he paid: "+rows[0].worth+"$, buyed at: "+rows[0].created_at;
- pclient.addFriend(rows[0].boost_steamid);
- pclient.chatMessage(config.padmin, "New order! (ORDER ID:"+rows[0].offer_id+") Paid by: "+rows[0].offer_partner+", boost for: "+rows[0].boost_steamid+", hes rank: "+rows[0].beg+", he want: "+rows[0].end+", prime account? "+rows[0].prime+", note to order: "+rows[0].note+", he paid: "+rows[0].worth+"$, buyed at: "+rows[0].created_at);
- setTimeout(function() {
- if(steamid_sockets[data.partner]) delete steamid_sockets[data.partner];
- }, 3000);
- }
- });
- }
- }
- });
- });
- community.on("confKeyNeeded", function(deepDataAndEvents, updateFunc) {
- console.log("confKeyNeeded");
- var progressContexts = Math.floor(Date.now() / 1E3);
- updateFunc(null, progressContexts, SteamTotp.getConfirmationKey(identitysecret, progressContexts, deepDataAndEvents));
- });
- community.on("sessionExpired", function(err) {
- if(err) return;
- console.log('session expired, logging in...');
- pclient.webLogOn();
- });
- //bclient.on("loggedOn", function() {
- // console.log("Boost bot logged in!");
- //});
- //update prices every day
- setInterval(function() {
- request('https://api.csgofast.com/price/all', function(error, response, body) {
- if(body){
- prices = JSON.parse(body);
- fs.writeFileSync('prices.txt', body);
- }
- });
- }, 86400);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement