daily pastebin goal
13%
SHARE
TWEET

Untitled

a guest Dec 23rd, 2017 63 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module.exports = {
  2.     bot: function(username, password, sharedSecret, identitySecret) {
  3.         const SteamUser = require('steam-user');
  4.         const TradeOfferManager = require('steam-tradeoffer-manager');
  5.         const SteamTotp = require('steam-totp');
  6.         const SteamCommunity = require('steamcommunity');
  7.         const request = require('request');
  8.         const config = require('./config.js');
  9.         const community = new SteamCommunity({
  10.             request: request.defaults({
  11.                 proxy: 'http://23.229.65.92 :3128'
  12.             })
  13.         });
  14.         const client = new SteamUser({
  15.             "promptSteamGuardCode": false
  16.         });
  17.         const manager = new TradeOfferManager({
  18.             pollInterval: 1000,
  19.             cancelTime: 300000,
  20.             community: community,
  21.             steam: client,
  22.             domain: 'example.com',
  23.             language: 'en'
  24.         });
  25.         const logOnOptions = {
  26.             accountName: username,
  27.             password: password,
  28.             twoFactorCode: SteamTotp.generateAuthCode(sharedSecret)
  29.         };
  30.         client.logOn(logOnOptions);
  31.         client.on('loggedOn', function(details) {
  32.             console.log(`Logged into Steam as ${client.steamID.getSteam3RenderedID()}`); //online then play tf2
  33.             client.setPersona(SteamUser.Steam.EPersonaState.Online);
  34.             client.gamesPlayed([config.settings.gameMessage, 440]);
  35.         });
  36.         client.on('webSession', function(sessionID, cookies) {
  37.             manager.setCookies(cookies, function(err) {
  38.                 if (err) return console.log(err);
  39.                 console.log(`Got API key: ${manager.apiKey}`);
  40.             });
  41.             community.setCookies(cookies);
  42.             community.startConfirmationChecker(4000, identitySecret);
  43.         });
  44.  
  45.         function keyAmountGood(keyAmount) {
  46.             if (Math.floor(1000 / config.rates.casesForKey) < keyAmount) {
  47.                 return false;
  48.             }
  49.         }
  50.  
  51.         function loadInv(steamID) {
  52.             return new Promise((resolve, reject) => {
  53.                 manager.getUserInventoryContents(steamID, 730, 2, true, (err, inv) => {
  54.                     if (err) {
  55.                         console.log(err.message);
  56.                         return reject(err.message)
  57.                     }
  58.                     resolve(inv);
  59.                 });
  60.             });
  61.         }
  62.  
  63.         function makeStorageOffer(steamID, casesPerBot) {
  64.             var offer = manager.createOffer(steamID);
  65.             let casesToAdd = [];
  66.             manager.getUserInventoryContents(steamID, 730, 2, true, (err, thereInv) => {
  67.                 if (err) {
  68.                     console.log(err)
  69.                     return
  70.                 }
  71.                 for (let i = 0; i < thereInv.length; i++) {
  72.                     if (config.settings.acceptedCrates.includes(thereInv[i].market_hash_name) && casesPerBot > casesToAdd.length) {
  73.                         casesToAdd.push(thereInv[i].assetid);
  74.                     }
  75.                 }
  76.                 for (let i = 0; i < casesToAdd.length; i++) { //add items if all is good.
  77.                     offer.addTheirItem({
  78.                         assetid: casesToAdd[i],
  79.                         appid: 730,
  80.                         contextid: 2,
  81.                         amount: 1
  82.                     });
  83.                 }
  84.                 offer.send(function(err, status) {
  85.                     if (err) {
  86.                         console.log(err);
  87.                         setTimeout(() => {
  88.                             makeStorageOffer(steamID, casesPerBot);
  89.                             messageAdmin("error getting cases from storage trying again in 2 mins")
  90.                         }, 6000 * 2);
  91.                         return;
  92.                     } else {
  93.                         console.log("sent offer to storage bot");
  94.                         community.checkConfirmations();
  95.                         casesToAdd = [];
  96.                     }
  97.                 });
  98.             })
  99.         }
  100.  
  101.         function checkStock(steamID) {
  102.             return new Promise((resolve, reject) => {
  103.                 let cases = 0;
  104.                 manager.getUserInventoryContents(steamID, 730, 2, true, (err, inv) => {
  105.                     if (err) {
  106.                         console.log(err.message);
  107.                         return reject(err.message)
  108.                     } else {
  109.                         for (var i = 0; i < inv.length; i++) {
  110.                             if (config.settings.acceptedCrates.includes(inv[i].market_hash_name)) {
  111.                                 cases++
  112.                             }
  113.                         }
  114.                     }
  115.                     resolve(cases);
  116.                 });
  117.             });
  118.         }
  119.         async function getCases() {
  120.             let botInv = await loadInv(config.account.id64)
  121.             //let required_cases = config.rates.casesForKey - botInv.length;
  122.             let required_cases = config.rates.casesForKey;
  123.             console.log(required_cases)
  124.             for (var i = 0; i < config.storage_accounts.length; i++) {
  125.                 if (required_cases > 0) {
  126.                     let cases = await checkStock(config.storage_accounts[i].id64)
  127.                     if (cases > required_cases) {
  128.                         cases = required_cases
  129.                         makeStorageOffer(config.storage_accounts[i].id64, cases)
  130.                         messageAdmin('Sent storage bot ' + i + ' an offer for ' + cases + ' cases')
  131.                         required_cases = required_cases - cases
  132.                     } else {
  133.                         makeStorageOffer(config.storage_accounts[i].id64, cases)
  134.                         messageAdmin('Sent storage bot ' + i + ' an offer for ' + cases + ' cases')
  135.                         required_cases = required_cases - cases
  136.                     }
  137.                 }
  138.             }
  139.             return 1;
  140.         }
  141.         async function checkTotalStock() {
  142.             let total = 0;
  143.             for (var i = 0; i < config.storage_accounts.length; i++) {
  144.                 let cases = await checkStock(config.storage_accounts[i].id64).catch((err) => {
  145.                     console.log(err);
  146.                     return;
  147.                 });
  148.                 total += cases;
  149.             }
  150.             return total;
  151.         }
  152.  
  153.         function checkUser(offer) {
  154.             if (config.settings.trade.acceptEscrow == false) {
  155.                 offer.getUserDetails(function(err, me, them) {
  156.                     if (them.escrowDays > 0) {
  157.                         return false;
  158.                     }
  159.                 });
  160.             }
  161.         }
  162.  
  163.         function depositKeys() {
  164.             var offer = manager.createOffer(config.key_account.id64);
  165.             let keys = []
  166.             manager.getUserInventoryContents(config.account.id64, 730, 2, true, (err, botInv) => {
  167.                 if (err) {
  168.                     console.log(err);
  169.                     return
  170.                 }
  171.                 for (var i = 0; i < botInv.length; i++) {
  172.                     if (config.settings.acceptedKeys.includes(botInv[i].market_hash_name)) {
  173.                         keys.push(botInv[i].assetid);
  174.                     }
  175.                 }
  176.                 for (let i = 0; i < keys.length; i++) {
  177.                     offer.addMyItem({
  178.                         assetid: keys[i],
  179.                         appid: 730,
  180.                         contextid: 2,
  181.                         amount: 1
  182.                     });
  183.                 }
  184.                 if (offer.itemsToGive.length < 1) {
  185.                     return
  186.                 }
  187.                 offer.send(function(err, status) {
  188.                     if (err) {
  189.                         console.log(err);
  190.                         messageAdmin("hi we had an offer sending a key deposit trade plz come get them");
  191.                         return;
  192.                     }
  193.                     community.checkConfirmations();
  194.                     keys = [];
  195.                 });
  196.             });
  197.         }
  198.  
  199.         function makeOffer(steamID, neededCases, keyAmount) {
  200.             client.gamesPlayed([config.settings.busyMessage, 440]);
  201.             var offer = manager.createOffer(steamID);
  202.             let ourCases = [];
  203.             let thereKeys = [];
  204.             if (checkUser(offer) == false) {
  205.                 client.chatMessage(steamID, "It appears that you are a SCAMMER or have an ESCROW so we can not trade with you");
  206.                 client.gamesPlayed([config.settings.gameMessage, 440]);
  207.                 return
  208.             }
  209.             client.chatMessage(steamID, "Preparing your offer now :D");
  210.             manager.getUserInventoryContents(steamID, 730, 2, true, (err, thereInv) => {
  211.                 if (err) {
  212.                     console.log(err);
  213.                     client.chatMessage(steamID, "Error loading inventory.Please try again later");
  214.                     client.gamesPlayed([config.settings.gameMessage, 440]);
  215.                     return
  216.                 }
  217.                 manager.getUserInventoryContents(config.account.id64, 730, 2, true, (err, botInv) => {
  218.                     if (err) {
  219.                         console.log(err);
  220.                         client.chatMessage(steamID, "Error loading inventory.Please try again later");
  221.                         client.gamesPlayed([config.settings.gameMessage, 440]);
  222.                         return;
  223.                     }
  224.                     for (let i = 0; i < botInv.length; i++) {
  225.                         if (config.settings.acceptedCrates.includes(botInv[i].market_hash_name) && neededCases > ourCases.length) {
  226.                             ourCases.push(botInv[i].assetid);
  227.                         }
  228.                     }
  229.                     for (var i = 0; i < thereInv.length; i++) {
  230.                         if (config.settings.acceptedKeys.includes(thereInv[i].market_hash_name) && keyAmount > thereKeys.length) {
  231.                             thereKeys.push(thereInv[i].assetid);
  232.                         }
  233.                     }
  234.                     if (ourCases.length < neededCases) {
  235.                         client.chatMessage(steamID, "Something is not right here. Please try again in a few minutes");
  236.                         client.gamesPlayed([config.settings.gameMessage, 440]);
  237.                         return
  238.                     }
  239.                     if (thereKeys.length < keyAmount) {
  240.                         client.chatMessage(steamID, "Sorry! You do not have enough keys, you have " + thereKeys.length);
  241.                         client.gamesPlayed([config.settings.gameMessage, 440]);
  242.                         return;
  243.                     }
  244.                     for (let i = 0; i < thereKeys.length; i++) { //add items if all is good.
  245.                         offer.addTheirItem({
  246.                             assetid: thereKeys[i],
  247.                             appid: 730,
  248.                             contextid: 2,
  249.                             amount: 1
  250.                         });
  251.                     }
  252.                     for (let i = 0; i < ourCases.length; i++) { //add items if all is good.
  253.                         offer.addMyItem({
  254.                             assetid: ourCases[i],
  255.                             appid: 730,
  256.                             contextid: 2,
  257.                             amount: 1
  258.                         });
  259.                     }
  260.                     offer.send(function(err, status) {
  261.                         if (err) {
  262.                             console.log(err);
  263.                             client.chatMessage(steamID, "Hi we had an issue sending your offer. Please try again in a bit");
  264.                             client.gamesPlayed([config.settings.gameMessage, 440]);
  265.                             return;
  266.                         } else {
  267.                             client.chatMessage(steamID, "Sent an offer for your " + keyAmount + " keys and my " + neededCases + " cases. You can accept here : https://steamcommunity.com/tradeoffer/" + offer.id + "/");
  268.                             client.chatMessage(steamID, "Please accept within 5 minutes, otherwise Offer will Auto Decline");
  269.                             console.log("sent offer");
  270.                             community.checkConfirmations();
  271.                             ourCases = [];
  272.                             thereKeys = [];
  273.                         }
  274.                     });
  275.                 });
  276.             });
  277.         }
  278.  
  279.         function messageAdmin(message) {
  280.             for (var i = 0; i < config.settings.admin.length; i++) {
  281.                 client.chatMessage(config.settings.admin[i], message);
  282.             }
  283.         }
  284.  
  285.         function reStock(offer) {
  286.             if (config.key_account.id64 == offer.partner.getSteamID64()) {
  287.                 return
  288.             }
  289.             for (var i = 0; i < config.storage_accounts.length; i++) {
  290.                 if (config.storage_accounts[i].id64 == offer.partner.getSteamID64()) {
  291.                     return;
  292.                 }
  293.             }
  294.             community.getSteamUser(offer.partner, (err, user) => {
  295.                 user.comment(config.settings.acceptedTradeComment, (err) => {
  296.                     client.chatMessage(offer.partner, config.settings.acceptTradeChatMessage)
  297.                     client.gamesPlayed([config.settings.restockMessage, 440]);
  298.                     getCases()
  299.                     //depositKeys();
  300.                     //console.log('sent key offer trade')
  301.                     /*setTimeout(() => {
  302.                         getCases().then(a => {});
  303.                         console.log('getting cases from bots')
  304.                     }, 60000);*/
  305.                 });
  306.             });
  307.         }
  308.         manager.on("sentOfferChanged", function(offer, oldState) {
  309.             if (offer.state == TradeOfferManager.ETradeOfferState.Declined || offer.state == TradeOfferManager.ETradeOfferState.Canceled) {
  310.                 client.gamesPlayed([config.settings.gameMessage, 440]);
  311.             }
  312.             if (offer.state == TradeOfferManager.ETradeOfferState.Accepted) {
  313.                 client.gamesPlayed([config.settings.gameMessage, 440]);
  314.                 reStock(offer);
  315.             }
  316.             console.log("Offer #" + offer.id + " changed:  " + TradeOfferManager.ETradeOfferState[oldState] + " (" + oldState + ") -> " + TradeOfferManager.ETradeOfferState[offer.state] + " (" + offer.state + ")");
  317.             community.getSteamUser(offer.partner, (err, user) => {
  318.                 if (config.settings.notify.acceptedOffers === true && offer.state == TradeOfferManager.ETradeOfferState.Accepted) {
  319.                     messageAdmin('An offer has been accepted by ' + user.name);
  320.                 } else if (config.settings.notify.declinedOffers === true && offer.state == TradeOfferManager.ETradeOfferState.Declined) {
  321.                     messageAdmin('An offer has been declined by ' + user.name);
  322.                 }
  323.             });
  324.         });
  325.         client.on('friendRelationship', (steamID, relationship) => {
  326.             if (relationship === 2) {
  327.                 client.addFriend(steamID);
  328.                 client.chatMessage(steamID, config.settings.welcomeMessage);
  329.                 client.inviteToGroup(steamID, config.settings.groupID);
  330.             }
  331.         });
  332.         client.on('friendMessage', (steamID, message) => { //freind messgaes
  333.             if (message.startsWith("!buy")) {
  334.                 let keyAmount = parseInt(message.split("!buy")[1]);
  335.                 let neededCases = keyAmount * config.rates.casesForKey;
  336.                 if (keyAmountGood(keyAmount) == false) {
  337.                     client.chatMessage(steamID, "Sorry you are trying to trade to many keys at once. We can only trade " + Math.floor(1000 / config.rates.casesForKey) + " keys at a time!");
  338.                 } else {
  339.                     checkStock(config.account.id64).then(mainBotStock => {
  340.                         if (mainBotStock >= neededCases) {
  341.                             makeOffer(steamID, neededCases, keyAmount);
  342.                         } else {
  343.                             client.chatMessage(steamID, "getting cases from stock please try again in 10 mins once we have had a chance to reStock")
  344.                             getCases();
  345.                         }
  346.                     }).catch((err) => {
  347.                         client.chatMessage(steamID, "Sorry! Steam is acting up. Try again in a bit");
  348.                     });
  349.                 }
  350.             } else {
  351.                 if (message == "!help") {
  352.                     client.chatMessage(steamID, config.settings.helpMessage);
  353.                 } else {
  354.                     if (message == "!price") {
  355.                         client.chatMessage(steamID, config.settings.priceMessage);
  356.                     } else {
  357.                         if (message == "!stock") {
  358.                         if (message == "!stock") {
  359.                             client.chatMessage(steamID, "Calculating available stock ... ");
  360.                             checkStock(config.account.id64).then(mainBotStock => {
  361.                                 checkTotalStock().then(totalStock => {
  362.                                     let all = mainBotStock + totalStock
  363.                                     client.chatMessage(steamID, "We currently have a total of " + all + " cases we can trade");
  364.                                 }).catch((err) => {
  365.                                     client.chatMessage(steamID, "sorry steam is acting up try again in a bit");
  366.                                 });
  367.                             }).catch((err) => {
  368.                                 client.chatMessage(steamID, "Sorry! Steam is acting up. Try again in a bit");
  369.                             });
  370.                         } else {
  371.                             if (config.settings.admin.includes(steamID.getSteamID64()) && message == "!deposit") {
  372.                                 getCases()                                
  373.                             } else {
  374.                                 client.chatMessage(steamID, "Sorry! That command looks incorect. Type !help to see all the commands.")
  375.                             }
  376.                         }
  377.                     }
  378.                 }
  379.             }
  380.         });
  381.         manager.on('newOffer', (offer) => {
  382.             if (config.settings.admin.includes(offer.partner.getSteamID64())) {
  383.                 offer.accept(function(err, status) {
  384.                     if (err) console.log(`Unable to accept offer: ${err.message}`);
  385.                     community.checkConfirmations();
  386.                 });
  387.             } else {
  388.                 offer.decline((err) => {
  389.                     if (err) return console.log(`Unable to decline offer: ${err.message}`);
  390.                 });
  391.             }
  392.         });
  393.     }
  394. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top