const SteamUser = require('steam-user'); const TradeOfferManager = require('steam-tradeoffer-manager'); const SteamTotp = require('steam-totp'); const SteamCommunity = require('steamcommunity'); const config = require('./config.json'); const csv = require('csv'); const winston = require('winston'); const community = new SteamCommunity(); const client = new SteamUser(); const manager = new TradeOfferManager({ steam: client, domain: 'example.com', language: 'en' }); var RefToAdd = []; var refamount; var tfKeysToAdd = []; var csKeysToAdd = []; var KeysToAdd = []; var tfKeysToAdd = []; var TfKeysToAdd = []; var metal = 0; var Scrap = 0; var Refined = 0; var Reclaimed = 0; var RefRequired = 0; var RecRequired = 0; var ScrapRequired = 0; var change = 0; var ThereMetalToAdd = []; var totalMetal; var ChangeToAdd = []; winston.add(winston.transports.File, { filename: 'somefile.log' }); winston.remove(winston.transports.Console); const logOnOptions = { accountName: config.username, password: config.password, twoFactorCode: SteamTotp.generateAuthCode(config.sharedSecret) }; //log on client.logOn(logOnOptions); client.on('loggedOn', function(details) { console.log(`Logged into Steam as ${client.steamID.getSteam3RenderedID()}`); //online then play tf2 client.setPersona(SteamUser.Steam.EPersonaState.Online); client.gamesPlayed([440]) }); client.on('webSession', function(sessionID, cookies) { manager.setCookies(cookies, function(err) { if (err) return console.log(err); console.log(`Got API key: ${manager.apiKey}`); }); community.setCookies(cookies); community.startConfirmationChecker(10000, config.identitySecret); }); client.on('friendRelationship', (steamID, relationship) => { //freind requests if (relationship == 2) { client.addFriend(steamID); client.chatMessage(steamID, config.chat.welcomeMessage); } }); client.on('friendMessage', (steamID, message) => { //freind messgaes if (message.startsWith("!buy cs")) { var csAmount = parseInt(message.split("!buy cs")[1]); if (isNaN(csAmount)) { //calculating required keys csAmount = 1; } var offer = manager.createOffer(steamID); //create offer client.chatMessage(steamID, "Creating your offer now"); var refamount = csAmount * config.buyref; var price2 = csAmount * config.buyref2; var price = csAmount * config.buyref2; //calculating required refined metal //trade stuff starts here manager.getUserInventoryContents(steamID, 440, 2, true, (err, inv) => { //loading there invent if (err) { console.log(err.message); return; } manager.getInventoryContents(440, 2, true, (err, ourInv) => { //loading there invent if (err) { console.log(err.message); return; } for (let i = 0; i < inv.length; i++) { //getting all metal in bp and vaules for diffrent metals if (inv[i].market_hash_name.includes('Refined Metal')) { metal = metal + 9; Refined = Refined + 9; } else { if (inv[i].market_hash_name.includes('Reclaimed Metal')) { metal = metal + 3; Reclaimed = Reclaimed + 3; } else { if (inv[i].market_hash_name.includes('Scrap Metal')) { metal = metal + 1; Scrap++; } } } } while (price2 >= 9) { //getting req metal here RefRequired = RefRequired + 9; price2 = price2 - 9; } while (price2 >= 3) { RecRequired = RecRequired + 3; price2 = price2 - 3; } while (price2 >= 1) { ScrapRequired++ price2 = price2 - 1; } if (metal > price) { //if they have enough calculate change if (Scrap < ScrapRequired) { RecRequired = RecRequired + 3; ScrapRequired = ScrapRequired - 3; change = change + Math.abs(ScrapRequired); ScrapRequired = 0; } if (Reclaimed < RecRequired) { RefRequired = RefRequired + 9; RecRequired = RecRequired - 9; change = change + Math.abs(RecRequired); RecRequired = 0; } totalMetal = RefRequired + RecRequired + ScrapRequired //total metal needed for (let i = 0; i < inv.length; i++) { //loop to get there metal. if (inv[i].market_hash_name.includes('Refined Metal') && totalMetal >= 9) { ThereMetalToAdd.push(inv[i].assetid); totalMetal = totalMetal - 9; } else { if (inv[i].market_hash_name.includes('Reclaimed Metal') && totalMetal >= 3) { ThereMetalToAdd.push(inv[i].assetid); totalMetal = totalMetal - 3; } else { if (inv[i].market_hash_name.includes('Scrap Metal') && totalMetal >= 1) { ThereMetalToAdd.push(inv[i].assetid); totalMetal = totalMetal - 1; } } } } for (let i = 0; i < ourInv.length; i++) { //loop to get required change. if (ourInv[i].market_hash_name.includes('Refined Metal') && change >= 9) { ChangeToAdd.push(ourInv[i].assetid); change = change - 9; console.log(change); } else { if (ourInv[i].market_hash_name.includes('Reclaimed Metal') && change >= 3) { ChangeToAdd.push(ourInv[i].assetid); change = change - 3; console.log(change); } else { if (ourInv[i].market_hash_name.includes('Scrap Metal') && change >= 1) { ChangeToAdd.push(ourInv[i].assetid); change = change - 1; console.log(change); } } } } console.log(change); if (totalMetal == 0) { for (let i = 0; i < ThereMetalToAdd.length; i++) { //add assest ids offer.addTheirItem({ assetid: ThereMetalToAdd[i], appid: 440, contextid: 2 }); } }else{ console.log("nope"); } if (change == 0) { for (let i = 0; i < ChangeToAdd.length; i++) { //add assest ids offer.addMyItem({ assetid: ChangeToAdd[i], appid: 440, contextid: 2 }); } } offer.send((err, status) => { //send offer. if (err) { console.log(err); } }); } else { client.chatMessage(steamID, "sorry you do not have enough metal to buy this many keys. Maybe try and buy less?"); console.log("user " + steamID + " did not have enoguh metal"); return; } }); }); } RefToAdd = []; KeysToAdd = []; ThereMetalToAdd = []; ChangeToAdd = []; totalMetal = 0; });