Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // OPTIONS
- var logOnOptions = {
- account_name: '',
- password: ''
- };
- var admin = ['76561198175752330','76561198173310106']; // your steamid
- var name = 'working Hard [BOT]';
- // BOT
- var fs = require('fs');
- var Steam = require('steam');
- var crypto = require('crypto');
- var request = require('request');
- var SteamRep = require('steamrep');
- var SteamTotp = require('steam-totp');
- var SteamWebLogOn = require('steam-weblogon');
- var SteamCommunity = require('steamcommunity');
- var getSteamAPIKey = require('steam-web-api-key');
- var SteamTradeOffers = require('steam-tradeoffers');
- try {
- var twoFactorData = JSON.parse(fs.readFileSync(logOnOptions.account_name + '.2fa', 'utf8'));
- } catch (e) {
- throw (e);
- }
- var pricesFile, buyPrices, sellPrices;
- try {
- pricesFile = fs.readFileSync('prices.json', 'utf-8');
- buyPrices = JSON.parse(pricesFile).buy;
- sellPrices = JSON.parse(pricesFile).sell;
- } catch (e) {
- throw "Error getting prices.json";
- }
- if (fs.existsSync('servers')) {
- Steam.servers = JSON.parse(fs.readFileSync('servers'));
- }
- var offers = new SteamTradeOffers();
- var community = new SteamCommunity();
- var steamClient = new Steam.SteamClient();
- var steamUser = new Steam.SteamUser(steamClient);
- var steamFriends = new Steam.SteamFriends(steamClient);
- var steamWebLogOn = new SteamWebLogOn(steamClient, steamUser);
- function getSHA1(bytes) {
- var shasum = crypto.createHash('sha1');
- shasum.end(bytes);
- return shasum.read();
- }
- steamClient.connect();
- steamClient.on('connected', function() {
- console.log("Connected to Steam.");
- var code = SteamTotp.generateAuthCode(twoFactorData.shared_secret);
- console.log('Logging into Node-Steam using mobile auth code:', code);
- logOnOptions['two_factor_code'] = code;
- steamUser.logOn(logOnOptions);
- });
- steamClient.on('servers', function(servers) {
- fs.writeFile('servers', JSON.stringify(servers));
- });
- steamClient.on('logOnResponse', function(logonResp) {
- if (logonResp.eresult == Steam.EResult.OK) {
- console.log("Logged in to Steam.");
- steamFriends.setPersonaState(Steam.EPersonaState.Online);
- steamFriends.setPersonaName(name);
- steamWebLogOn.webLogOn(function(sessionID, newCookie) {
- getSteamAPIKey({
- sessionID: sessionID,
- webCookie: newCookie
- }, function(err, APIKey) {
- if (err) throw err;
- offers.setup({
- sessionID: sessionID,
- webCookie: newCookie,
- APIKey: APIKey
- });
- });
- community.setCookies(newCookie);
- community.startConfirmationChecker(10000, twoFactorData.identity_secret);
- });
- }
- });
- steamUser.on('tradeOffers', function(num) {
- if (num > 0) {
- offers.getOffers({
- get_received_offers: 1,
- active_only: 1,
- time_historical_cutoff: Math.round(Date.now() / 1000)
- }, function(err, body) {
- if (err) {
- console.log(err);
- return;
- }
- if (body.response.trade_offers_received) {
- body.response.trade_offers_received.forEach(function(offer) {
- console.log("RECEIVED TRADE " + offer.tradeofferid + " FROM " + offer.steamid_other);
- if (offer.trade_offer_state == 2) {
- SteamRep.isScammer(offer.steamid_other, function(err, result) {
- if (err) {
- console.log(err);
- return;
- }
- if (!result) {
- var keys = 0;
- var error = false;
- if (admin.indexOf(offer.steamid_other) > -1) {
- console.log("## accepting, admin");
- offers.acceptOffer({ tradeOfferId: offer.tradeofferid });
- return;
- }
- var myItems, theirItems;
- if (offer.items_to_receive !== undefined) {
- theirItems = offer.items_to_receive.length;
- } else {
- theirItems = 0;
- }
- if (offer.items_to_give !== undefined) {
- myItems = offer.items_to_give.length;
- } else {
- myItems = 0;
- }
- offers.loadMyInventory({
- appId: 730,
- contextId: 2,
- language: "en"
- }, function(err, myInv) {
- if (err || myInv === undefined) {
- console.log(err);
- offers.declineOffer({ tradeOfferId: offer.tradeofferid });
- error = true;
- return;
- }
- if (offer.items_to_give !== undefined) {
- var notKey = false;
- offer.items_to_give.forEach(function(item) {
- var matches = myInv.filter(function(invItem) { return invItem.id === item.assetid });
- var itemname;
- try {
- itemname = matches[0].market_name;
- } catch (e) {
- console.log("## Couldn't find an item in my inventory!");
- }
- if (itemname.indexOf('Key') === -1 /*&& itemname.indexOf('Sticker') === -1*/) {
- notKey = true;
- }
- });
- if (notKey) {
- console.log('Selling an item...');
- sellItem();
- } else {
- console.log('Buying an item...');
- buyItem();
- }
- } else {
- console.log('181 declining...')
- offers.declineOffer({ tradeOfferId: offer.tradeofferid });
- error = true;
- }
- });
- function buyItem() {
- if (theirItems === 1 && myItems >= 0) {
- if (offer.items_to_receive !== undefined) {
- for (var i = 0; i < offer.items_to_receive.length; i++) {
- if (offer.items_to_receive[i].appid !== '730') {
- console.log("147 declining..." + offer.items_to_receive[i].appid);
- offers.declineOffer({ tradeOfferId: offer.tradeofferid });
- error = true;
- return;
- }
- }
- }
- offers.loadMyInventory({
- appId: 730,
- contextId: 2,
- language: "en"
- }, function(err, myInv) {
- if (err || myInv === undefined) {
- console.log(err);
- offers.declineOffer({ tradeOfferId: offer.tradeofferid });
- error = true;
- return;
- }
- if (offer.items_to_give !== undefined) {
- offer.items_to_give.forEach(function(item) {
- var matches = myInv.filter(function(invItem) { return invItem.id === item.assetid });
- var itemname;
- try {
- itemname = matches[0].market_name;
- } catch (e) {
- console.log("## Couldn't find an item in my inventory!");
- }
- if (itemname.indexOf('Key') > -1 /*&& itemname.indexOf('Sticker') === -1*/) {
- keys++;
- } else {
- console.log('226 declining...');
- offers.declineOffer({ tradeOfferId: offer.tradeofferid });
- error = true;
- }
- });
- } else {
- console.log('233 declining...');
- offers.declineOffer({ tradeOfferId: offer.tradeofferid });
- error = true;
- }
- });
- setTimeout(function() {
- offers.loadPartnerInventory({
- partnerSteamId: offer.steamid_other,
- appId: 730,
- contextId: 2,
- tradeOfferId: offer.tradeofferid,
- language: "en"
- }, function(err, theirInv) {
- if (err || theirInv === undefined) {
- console.log(err);
- offers.declineOffer({ tradeOfferId: offer.tradeofferid });
- return;
- }
- if (offer.items_to_receive !== undefined) {
- offer.items_to_receive.forEach(function(item) {
- var matches = theirInv.filter(function(invItem) { return invItem.id == item.assetid });
- var itemname;
- try {
- itemname = matches[0].market_name;
- } catch (e) {
- console.log("## Couldn't find an item in their inventory!")
- }
- if (buyPrices[itemname] !== undefined) {
- console.log(itemname + ' >> ' + buyPrices[itemname] + ' max keys');
- console.log(keys + ' keys from me');
- if (keys <= buyPrices[itemname] && !error) {
- console.log("accepting... 269");
- offers.acceptOffer({ tradeOfferId: offer.tradeofferid }, function(err) {
- if (err) console.log(err);
- });
- } else if (keys > buyPrices[itemname]) {
- console.log("275 declining...");
- offers.declineOffer({ tradeOfferId: offer.tradeofferid });
- }
- }
- });
- } else {
- console.log("229 declining...");
- offers.declineOffer({ tradeOfferId: offer.tradeofferid });
- }
- });
- }, 750 * (myItems + theirItems));
- } else {
- console.log("245 declining...");
- offers.declineOffer({ tradeOfferId: offer.tradeofferid });
- }
- }
- function sellItem() {
- if (theirItems === 1 && myItems >= 0) {
- if (offer.items_to_receive !== undefined) {
- for (var i = 0; i < offer.items_to_receive.length; i++) {
- if (offer.items_to_receive[i].appid !== '730') {
- console.log("147 declining..." + offer.items_to_receive[i].appid);
- offers.declineOffer({ tradeOfferId: offer.tradeofferid });
- error = true;
- return;
- }
- }
- }
- offers.loadPartnerInventory({
- partnerSteamId: offer.steamid_other,
- appId: 730,
- contextId: 2,
- tradeOfferId: offer.tradeofferid,
- language: "en"
- }, function(err, theirInv) {
- if (err || theirInv === undefined) {
- console.log(err);
- offers.declineOffer({ tradeOfferId: offer.tradeofferid });
- return;
- }
- if (offer.items_to_receive !== undefined) {
- offer.items_to_receive.forEach(function(item) {
- var matches = theirInv.filter(function(invItem) { return invItem.id === item.assetid });
- var itemname;
- try {
- itemname = matches[0].market_name;
- } catch (e) {
- console.log("## Couldn't find an item in my inventory!");
- return;
- }
- if (itemname.indexOf('Key') > -1) {
- keys++;
- } else {
- console.log('335 declining...')
- offers.declineOffer({ tradeOfferId: offer.tradeofferid });
- error = true;
- }
- });
- }
- });
- setTimeout(function() {
- offers.loadMyInventory({
- appId: 730,
- contextId: 2,
- language: "en"
- }, function(err, myInv) {
- if (err || myInv === undefined) {
- console.log(err);
- offers.declineOffer({ tradeOfferId: offer.tradeofferid });
- return;
- }
- if (offer.items_to_give !== undefined) {
- offer.items_to_give.forEach(function(item) {
- var matches = myInv.filter(function(invItem) { return invItem.id == item.assetid });
- var itemname;
- try {
- itemname = matches[0].market_name;
- } catch (e) {
- console.log("## Couldn't find an item in their inventory!")
- }
- if (sellPrices[itemname] !== undefined) {
- console.log(itemname + ' >> ' + sellPrices[itemname] + ' min keys');
- console.log(keys + ' keys from them');
- if (keys >= sellPrices[itemname] && !error) {
- console.log("accepting... 373");
- offers.acceptOffer({ tradeOfferId: offer.tradeofferid }, function(err) {
- if (err) console.log(err);
- });
- } else if (keys < sellPrices[itemname]) {
- console.log("222 declining...");
- offers.declineOffer({ tradeOfferId: offer.tradeofferid });
- }
- }
- });
- } else {
- console.log("229 declining...");
- offers.declineOffer({ tradeOfferId: offer.tradeofferid });
- }
- });
- }, 750 * (myItems + theirItems));
- } else {
- console.log("245 declining...");
- offers.declineOffer({ tradeOfferId: offer.tradeofferid });
- }
- }
- } else {
- console.log("250 declining...");
- offers.declineOffer({ tradeOfferId: offer.tradeofferid });
- }
- });
- }
- });
- }
- });
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement