Jump to content
McKay Development

Bogdan2609

Member
  • Posts

    1
  • Joined

  • Last visited

Posts posted by Bogdan2609

  1. Hello, my bot sends the exchange, but does not confirm it. Please help me. Fasten code below.

    var SteamUser 			= require('steam-user');
    var SteamCommunity 		= require('steamcommunity');
    var SteamTotp 			= require('steam-totp');
    var TradeOfferManager 	= require('steam-tradeoffer-manager');
    var fs = require('fs');
    var request = require('request');
    var async = require('async');
    
    var client = new SteamUser({
    	"dataDirectory": null
    });
    var manager = new TradeOfferManager({
    	"steam": client,
    	"domain": "site.ru",
    	"language": "ru"
    });
    var community = new SteamCommunity();
    var steamID = SteamCommunity.SteamID;
    
    if(fs.existsSync('./users/users.json') && fs.existsSync('./users/master_ssfn')) {
    	var users  = JSON.parse(fs.readFileSync('./users/users.json'));
    	var sentry = fs.readFileSync('./users/master_ssfn');
    } else {
    	console.log("Users file or master ssfn missing. Exiting..");
    	process.exit(1);
    }
    
    var user = users.thor;
    
    var logOnOptions = {
    	"accountName": user.accountName,
    	"password": user.password,
    	"twoFactorCode": SteamTotp.getAuthCode(user.twoFactorCode)
    };
    
    if(fs.existsSync('./polls/' + user.accountName + '.json')) {
    	manager.pollData = JSON.parse(fs.readFileSync('./polls/' + user.accountName + '.json'));
    }
    
    client.setSentry(sentry);
    
    client.logOn(logOnOptions);
    
    client.on('loggedOn', function() {
    	console.log("Logged into Steam account " + user.accountName);
    });
    
    client.on('webSession', function(sessionID, cookies) {
    	manager.setCookies(cookies, function(err) {
    		if(err) {
    			console.log(err);
    			process.exit(1); 
    			return;
    		}
    
    		console.log("Got API key: " + manager.apiKey + " for user " + user.accountName);
    	});
    
    	community.setCookies(cookies);
    	community.startConfirmationChecker(10000, user.identitySecret); // Checks and accepts confirmations every 30 seconds
    
    	client.setPersona(SteamUser.Steam.EPersonaState.Online, user.personaName);
    	sessionInterval(3600000);
    });
    
    manager.on('newOffer', function(offer) {
    	var steamID64 = offer.partner.getSteamID64();
    	console.log('Received new offer from ' + steamID64);
    	if(steamID64 == "steamID") {
    		offer.accept();
    	} else {
    		offer.decline();
    	}
    });
    
    manager.on('sentOfferChanged', function(offer, oldState) {
    	var offerTradeId = offer.id;
    	var state = offer.state;
    	console.log('Offer.Changed: ', offerTradeId + " is now " + state);
    	request({
    		"url": "http://site/steam/set-offer-state/" + offerTradeId + "/" + state
    	});
    });
    
    manager.on('pollData', function(pollData) {
    	fs.writeFile('./polls/' + user.accountName + '.json', JSON.stringify(pollData));
    });
    
    function sessionInterval(time) {
    	setTimeout(function() {
    		console.log('Getting new cookies.');
    		client.webLogOn();
    	}, time);
    }
    
    /**
     * Express API to access SteamBot features and functions
     */
    
    var express = require('express');
    var app = express();
    var bodyParser = require('body-parser');
    
    app.use(bodyParser.json()); // for parsing application/json
    app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
    
    app.get('/', function(req, res) {
     	res.send('"Иди в дом, там мама тебе нальёт томатного." - Энди Картрайт');
    });
    
    
    app.post('/MakePlayerExchange/:steamid', function(req, res) {
    	var user  = new steamID(req.params.steamid);
    
    	var bot   = new steamID(req.body['botsteamid']);
    	var token = req.body['token'];
    	var uItems = req.body['userItems'];
    	var bItems = req.body['botItems'];
    
    
    	manager.getEscrowDuration(user, token, function(err, him, me) {
    		if( err) {
    			res.json({ "error": err });
    			return;
    		}
    
    		if( ! (him == 0 && me == 0)) {
    			res.json({ "error": "Escrow Error. User has not enabled 2FA." });
    			return;
    		}
    
    		async.parallel({
    			userInventory: function(callback) {
    				manager.loadUserInventory(user, 730, 2, true, function(err, inventory) {
    					if( err) {
    						callback(err);
    					} else {
    						callback(null, inventory);
    					}
    				});
    			},
    			botInventory: function(callback) {
    				manager.loadUserInventory(bot, 730, 2, true, function(err, inventory) {
    					if( err) {
    						callback(err);
    					} else {
    						callback(null, inventory);
    					}
    				});
    			}
    		}, function(err, results) {
    			if( err) {
    				res.json({ "error": err });
    				return;
    			}
    
    			var Exchange = manager.createOffer(user);
    			var Message = "Site.ru | Thank You for trading with us. Here's your items from the Exchange page. This offer expires in 10 minutes.";
    
    			var ExchangeUser = GetExchangeItems(results.userInventory, uItems);
    			var ExchangeBot  = GetExchangeItems(results.botInventory, bItems);
    
    			if(typeof ExchangeUser.error != "undefined") {
    				res.json(ExchangeUser);
    				return;
    			}
    			if(typeof ExchangeBot.error != "undefined") {
    				res.json(ExchangeBot);
    				return;
    			}
    
    			Exchange.addTheirItems(ExchangeUser);
    			Exchange.addMyItems(ExchangeBot);
    
    			Exchange.send(Message, token, function(err, status) {
    				if( err) {
    					res.json({ "error": err });
    					return;
    				}
    
    				console.log('Exchange send: ', status);
    				console.log('Exchange Offer ID: ', Exchange.id);
    
    				res.json({ "offer": Exchange.id, "status": status, "state": Exchange.state });
    			});
    		});
    	});
    });
    
    function GetExchangeItems(Inventory, Items) {
    	var ReturnItems = [];
    	var i;
    	for(i in Items) {
    		var Item  = i;
    		var Count = +Items[i];
    
    		var j;
    		for(j in Inventory) {
    			var invItem = Inventory[j];
    
    			if(invItem.market_hash_name == Item) {
    				//console.log('Should push here: ', invItem.classid);
    				ReturnItems.push(invItem);
    				Count--;
    			}
    
    			//console.log(invItem.market_hash_name, Count);
    			if(Count == 0) {
    				break;
    			}
    		}
    
    		if(Count > 0) {
    			return { "error": "Not enough Items in Inventory. Missing: " + Item + ", need " + Count + " more. Only got " + (+Items[i] - Count) };
    			break;
    		}
    	}
    
    	//console.log(ReturnItems);
    	return ReturnItems;
    }
    
    
    
×
×
  • Create New...