Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const config = require('./config.json');
- const Prices = require('./prices.json');
- const fs = require('fs');
- const SteamUser = require('steam-user');
- const SteamCommunity = require('steamcommunity');
- const SteamTotp = require('steam-totp');
- const TradeOfferManager = require('steam-tradeoffer-manager');
- const SteamRepApi = require('steamrep');
- const TeamFortress2 = require('tf2');
- const client = new SteamUser();
- const tf2 = new TeamFortress2(client);
- const community = new SteamCommunity();
- const manager = new TradeOfferManager({
- steam: client,
- community: community,
- language: 'en',
- cancelTime: 300000
- });
- //
- fs.readFile('polldata.json', function(err, data) {
- if(err) {
- console.log('Error reading polldata.json. This does not account for first time run. ' + err);
- } else {
- console.log('Found previous trade offer data. Importing it.');
- manager.pollData = JSON.parse(data);
- }
- });
- const logOnOptions = {
- accountName: config.account.username,
- password: config.account.password,
- twoFactorCode: SteamTotp.generateAuthCode(config.account.sharedSecret)
- };
- client.logOn(logOnOptions);
- client.on('loggedOn', function(details) {
- console.log('Bot ' + client.steamID.getSteamID64() + ' successfully logged into Steam!');
- client.setPersona(SteamUser.Steam.EPersonaState.LookingToTrade, config.bot.displayName);
- client.gamesPlayed(config.tf2.ID);
- });
- client.on('error', function(err) {
- console.log('Error: ' + err);
- });
- client.on('webSession', function(sessionID, cookies) {
- console.log('Got web session from Steam.');
- manager.setCookies(cookies, function(err) {
- if(err) {
- console.log('Unable to get cookies for trade offers. Error: ' + err);
- process.exit(1);
- }
- console.log('Trade offer cookies set. Got our api key: ' + manager.apiKey);
- });
- community.setCookies(cookies);
- });
- tf2.on('backpackLoaded', function() {
- tf2.sortBackpack(4); //4 is 'type'
- console.log("Loaded our TF2 backpack & sorted it by type.");
- });
- client.on('friendRelationship', function(steamID, relationship) {
- if(relationship == 2) {
- console.log('You friend request from: ' + steamID + ' while you were online.');
- client.addFriend(steamID, function(err) {
- if(err) {
- console.log('Error adding friend ' + err.message);
- return;
- }
- client.chatMessage(steamID, config.messages.greetMessage);
- console.log('Added user: ' + steamID + ' to your friends list & greeted them with: ' + config.messages.greetMessage);
- });
- } else if(relationship == 3) {
- client.inviteToGroup(steamID, config.bot.groupID);
- } else if(relationship == 0) {
- console.log('User: ' + steamID + ' removed you from his/hers friends list while you were online.');
- }
- });
- client.on('newItems', function(count) {
- console.log(count + ' new items in our inventory');
- });
- client.on('tradeRequest', function(steamID, respond) {
- console.log("Incoming trade request from " + steamID + ", declining.");
- respond(false);
- client.chatMessage(steamID, 'I don\'t use the trade window, I only use trade offers.');
- console.log('Explained the reasoning behind the trade decline, to user: ' + steamID);
- });
- client.on('friendMessage', function(steamID, message) {
- switch(message) {
- case "!help":
- client.chatMessage(steamID, "Here's the list of commands: !help, !howtotrade, !listings, !owner, !group, !donate, !offerdeclined, !buy (Item Name) (Amount), !sell (Item Name) (Amount), (Make sure to type them correctly. No capital letters.)");
- break;
- case "Hi":
- client.chatMessage(steamID, "Hi! I'm a TF2 trading bot. I buy and sell items. To get started type !help. (Remember you can't negotiate here! ːsteamfacepalmː)");
- break;
- case "hi":
- client.chatMessage(steamID, "Hi! I'm a TF2 trading bot. I buy and sell items. To get started type !help. (Remember you can't negotiate here! ːsteamfacepalmː)");
- break;
- case "Hello":
- client.chatMessage(steamID, "Hello! I'm a TF2 trading bot. I buy and sell items. To get started type !help. (Remember you can't negotiate here! ːsteamfacepalmː)");
- break;
- case "hello":
- client.chatMessage(steamID, "Hello! I'm a TF2 trading bot. I buy and sell items. To get started type !help. (Remember you can't negotiate here! ːsteamfacepalmː)");
- break;
- case "Sup":
- client.chatMessage(steamID, "Sup! I'm a TF2 trading bot. I buy and sell items. To get started type !help. (Remember you can't negotiate here! ːsteamfacepalmː)");
- break;
- case "sup":
- client.chatMessage(steamID, "Sup! I'm a TF2 trading bot. I buy and sell items. To get started type !help. (Remember you can't negotiate here! ːsteamfacepalmː)");
- break;
- case "fuck you":
- client.chatMessage(steamID, "Watch your profanity please! :steamfacepalm:");
- break;
- case "Fuck you":
- client.chatMessage(steamID, "Watch your profanity please! :steamfacepalm:");
- break;
- case "Fuck":
- client.chatMessage(steamID, "Watch your profanity please! :steamfacepalm:");
- break;
- case "fuck":
- client.chatMessage(steamID, "Watch your profanity please! :steamfacepalm:");
- break;
- case "bitch":
- client.chatMessage(steamID, "Watch your profanity please! :steamfacepalm:");
- break;
- case "Bitch":
- client.chatMessage(steamID, "Watch your profanity please! :steamfacepalm:");
- break;
- case "!owner":
- client.chatMessage(steamID, "You can contact my owner for negotiations about trades and etc: https://steamcommunity.com/profiles/76561198278886387 (But remember no refund at all cost!)");
- break;
- case "!howtotrade":
- client.chatMessage(steamID, "How to trade: Use !buy and !sell commands only. Use !help for more information.");
- break;
- case "!listings":
- client.chatMessage(steamID, "You can find my listings here: https://backpack.tf/classifieds?steamid=76561198840991984");
- break;
- case "!group":
- client.chatMessage(steamID, "Here join my group: https://steamcommunity.com/groups/DTG55 ");
- break;
- case "!donate":
- client.chatMessage(steamID, "You can donate here https://steamcommunity.com/tradeoffer/new/?partner=880726256&token=IlLGnhB2 (Thank you for your donation!)");
- break;
- case "!buy":
- client.chatMessage(steamID, "!buy (Item Name) (Amount) Example: !buy Mann Co. Supply Crate Key 1 (It needs to be the full name.)");
- break;
- case "!sell":
- client.chatMessage(steamID, "!sell (Item Name) (Amount) Example: !sell Mann Co. Supply Crate Key 1 (It needs to be the full name.)");
- break;
- case "!offerdeclined":
- client.chatMessage(steamID, "You can read here https://steamcommunity.com/profiles/76561198840991984 for the reason your offer is declined.");
- }
- });
- client.on('friendMessage', function(steamID, message) {
- var buyItemCmd;
- if(buyItemCmd = message.match(/^!buy (\D+) (\d+)/i)) {
- var item = buyItemCmd[1];
- var amount = buyItemCmd[2];
- buyItem(steamID, item, amount);
- }
- });
- client.on('friendMessage', function(steamID, message) {
- var sellItemCmd;
- if(sellItemCmd = message.match(/^!sell (\D+) (\d+)/i)) {
- var item = sellItemCmd[1];
- var amount = sellItemCmd[2];
- sellItem(steamID, item, amount);
- }
- });
- //When ever receive a new offer.
- manager.on('newOffer', function(offer) {
- console.log('New offer #' + offer.id + ' from ' + offer.partner.getSteam3RenderedID() + "\nOffer note: " + offer.message);
- //Handle the offer depending on the users profile.
- if(offer.partner.getSteamID64() == config.bot.ownerID || offer.itemsToGive.length == 0) {
- console.log('User: ' + offer.partner.getSteam3RenderedID() + ' offered a valid trade.');
- offer.accept(function(err, status) {
- if(err) {
- console.log('Unable to accept offer #' + offer.id + '. Error: ' + err.message);
- } else {
- console.log('Validated trade offer #' + offer.id + ', awaiting confirmation.');
- if(status == 'pending') {
- community.acceptConfirmationForObject(config.account.identitySecret, offer.id, function(err) {
- if(err) {
- console.log('Unable to confirm trade offer: ' + err.message);
- } else {
- console.log('Trade offer: ' + offer.id + ' confirmed.');
- }
- });
- }
- }
- });
- } else {
- offer.getUserDetails(function(err, me, them) {
- if(err) {
- console.log('Error getting their details. ' + err.message);
- } else {
- if(them.escrowDays > 0) {
- offer.decline(function(err) {
- if(err) {
- console.log('Unable to decline offer #' + offer.id + '. Error: ' + err.message);
- } else {
- console.log('Declined offer #' + offer.id);
- }
- client.chatMessage(offer.partner.getSteamID64(), "You have " + them.escrowDays + " escrow days left, please try again later.");
- });
- } else {
- console.log('User: ' + offer.partner.getSteam3RenderedID() + ' offered an invalid trade. Declining offer #' + offer.id);
- offer.decline(function(err) {
- if(err) {
- console.log('Unable to decline offer #' + offer.id + '. Error: ' + err.message);
- } else {
- console.log('Declined offer #' + offer.id);
- client.chatMessage(offer.partner.getSteamID64(), 'You sent an invalid offer, so I declined it. Use !howtotrade to see the trading terms.');
- }
- });
- }
- }
- });
- }
- });
- //When an offer sent by another Steam user changes state.
- manager.on('receivedOfferChanged', function(offer, oldState) {
- console.log(offer.partner.getSteam3RenderedID() + `'s Offer #${offer.id} changed: ${TradeOfferManager.ETradeOfferState[oldState]} -> ${TradeOfferManager.ETradeOfferState[offer.state]}`);
- //When we accept a trade offer.
- if(offer.state == TradeOfferManager.ETradeOfferState.Accepted) {
- offer.getReceivedItems(function(err, items) {
- if(err) {
- console.log('The bot couldn\'t get the items it received.');
- } else {
- var itemNames = items.map(function(item) {
- return item.name;
- });
- //Log the items, serparated by a comma.
- console.log('The bot received the following items: ' + itemNames.join(', '));
- }
- });
- }
- });
- //When one of our trade offers changes states.
- manager.on('sentOfferChanged', function(offer, oldState) {
- //Aler us when an offer outgoing offer is accepted.
- if(offer.state == TradeOfferManager.ETradeOfferState.Accepted) {
- console.log('Our offer #' + offer.id + ' has been accepted.');
- commentOnUserProfile(offer.partner.getSteamID64(), config.comments.afterSuccessfulTrade)
- client.chatMessage(config.bot.ownerID, 'Our offer #' + offer.id + ' sent to user ' + offer.partner.getSteamID64() + ' has been accepted.');
- } else if(offer.state == TradeOfferManager.ETradeOfferState.Declined) {
- console.log('Our offer #' + offer.id + ' has been declined.');
- commentOnUserProfile(offer.partner.getSteamID64(), config.comments.theyDeclined)
- }
- });
- //If Steam is down, we'll have isues polling from our api.
- manager.on('pollFailure', function(err) {
- console.log('Error polling for trade offers: ' + err);
- });
- //Whenever we receive a new trade offer, we'll save the data after a crash or quit.
- manager.on('pollData', function(pollData) {
- fs.writeFile('polldata.json', JSON.stringify(pollData), (err) => {
- if(err) {
- console.log(err);
- }
- });
- });
- //Buy items
- function buyItem(steamID, item, amount) {
- if(!Prices[item]) {
- console.log('User: ' + steamID + ' requested to buy an item we\'re currently not selling.');
- client.chatMessage(steamID, 'I\'m currently not selling that item.');
- return true;
- }
- //Our items in arrays
- var ourItems = [];
- //Their items in arrays
- var theirRefined = [];
- var theirReclaimed = [];
- var theirScrap = [];
- var theirMetal = 0;
- var theirMetalToAdd = 0;
- var theirRefToAdd = 0;
- var theirRecToAdd = 0;
- var theirScrToAdd = 0;
- var theirInventoryRef = 0;
- var theirInventoryRec = 0;
- var theirInventoryScrap = 0;
- var DoneAddingTheirMetal = false;
- var itemPriceInRef = Prices[item].sell;
- var itemPriceInScrap = Math.round(itemPriceInRef * 9) * amount;
- var itemPrice = itemPriceInRef * amount;
- client.chatMessage(steamID, 'Processing your request.');
- console.log('User: ' + steamID + ' is buying ' + amount + ' of our ' + item + ' for ' + itemPrice + ' refined metal. Item price in scrap ' + itemPriceInScrap);
- //Load our inventory
- manager.getInventoryContents(config.tf2.ID, 2, true, function(err, inventory) {
- if(err) {
- console.log('Error getting our inventory: ' + err);
- client.chatMessage(steamID, 'I encountered an error getting my inventory. Please try again later.');
- } else {
- for(var n = 0; n < inventory.length; n++) {
- if(ourItems.length < amount && inventory[n].name.indexOf(item) >= 0) {
- ourItems.push(inventory[n]);
- }
- }
- if(ourItems.length === 0) {
- console.log('The bot doesn\'t have any ' + item + 's in their inventory.');
- client.chatMessage(steamID, 'I don\'t have any ' + item + 's in my inventory.');
- return true;
- } else if(amount > ourItems.length) {
- console.log('The bot doesn\'t have ' + amount + ' ' + item + 's in its inventory.');
- client.chatMessage(steamID, 'I don\'t have ' + amount + ' ' + item + 's in my inventory. I only have ' + ourItems.length + ' ' + item + 's.');
- return true;
- }
- console.log('Adding ' + amount + ' of our ' + item + 's to the trade offer.');
- //Load their inventory
- manager.getUserInventoryContents(steamID, config.tf2.ID, 2, true, function(err, inventory) {
- if(err) {
- console.log('Error getting their inventory: ' + err);
- client.chatMessage(steamID, "An error occurred while loading your inventory. Please again try later.");
- } else {
- console.log('Checking if user: ' + steamID + ' has enough metal to buy ' + amount + ' ' + item + 's.');
- //Loop through the users inventory to count metal
- for(var n = 0; n < inventory.length; n++) {
- if(inventory[n].name.indexOf('Refined Metal') >= 0) {
- theirInventoryRef += 1;
- theirMetal += 9;
- } else if(inventory[n].name.indexOf('Reclaimed Metal') >= 0) {
- theirInventoryRec += 1;
- theirMetal += 3;
- } else if(inventory[n].name.indexOf('Scrap Metal') >= 0) {
- theirInventoryScrap += 1;
- theirMetal += 1;
- }
- }
- //Log the users metal.
- console.log('User: ' + steamID + ' has ' + theirInventoryRef + ' refined, ' + theirInventoryRec + ' reclaimed & ' + theirInventoryScrap + ' scrap in their inventory.');
- console.log('User: ' + steamID + ' has ' + theirMetal + ' scrap metal in total.');
- //Check if the user has enough metal.
- if(theirMetal < itemPriceInScrap) {
- var missingMetal = (itemPriceInScrap - theirMetal) / 9;
- console.log('User: ' + steamID + ' doesn\'t have ' + itemPriceInScrap + ' scrap metal to buy ' + amount + ' ' + item + 's.');
- client.chatMessage(steamID, 'You don\'t have ' + itemPrice + ' refined metal to buy ' + amount + ' of my ' + item + 's. You\'re missing ' + missingMetal.toFixed(2) + ' refined metal.');
- return true;
- } else if(theirMetal >= itemPriceInScrap) {
- console.log('User: ' + steamID + ' has enough scrap metal to buy ' + amount + ' of my ' + item + 's.');
- //Check their inventory again for a more detailed count.
- while(!DoneAddingTheirMetal) {
- if(theirInventoryRef > 0 && theirMetalToAdd + 9 <= itemPriceInScrap) {
- theirMetalToAdd += 9;
- theirRefToAdd++;
- theirInventoryRef--;
- } else if(theirInventoryRec > 0 && theirMetalToAdd + 3 <= itemPriceInScrap) {
- theirMetalToAdd += 3;
- theirRecToAdd++;
- theirInventoryRec--;
- } else if(theirInventoryScrap > 0 && theirMetalToAdd + 1 <= itemPriceInScrap) {
- theirMetalToAdd += 1;
- theirScrToAdd++;
- theirInventoryScrap--;
- } else if(theirMetalToAdd == itemPriceInScrap) {
- console.log('Done calculatiing user ' + steamID + '\'s metal.');
- client.chatMessage(steamID, 'You\'ve the right amount of refined, reclaimed & scrap metal for a succesful trade.');
- DoneAddingTheirMetal = true;
- } else {
- console.log('User have enough metal, but not the right amount of refined, reclaimed or scrap');
- client.chatMessage(steamID, 'Please make sure you have some Reclaimed and Scrap metal in your inventory. You can do this be crafting some in TF2.');
- DoneAddingTheirMetal = true;
- return true;
- }
- }
- }
- console.log('User: ' + steamID + ' will give us ' + theirRefToAdd + ' refined, ' + theirRecToAdd + ' reclaimed & ' + theirScrToAdd + ' scrap from their inventory.');
- //Add their refined metal
- for(var n = 0; n < inventory.length; n++) {
- if(theirRefined.length < theirRefToAdd && inventory[n].name.indexOf('Refined Metal') >= 0) {
- theirRefined.push(inventory[n]);
- } else if(theirReclaimed.length < theirRecToAdd && inventory[n].name.indexOf('Reclaimed Metal') >= 0) {
- theirReclaimed.push(inventory[n]);
- } else if(theirScrap.length < theirScrToAdd && inventory[n].name.indexOf('Scrap Metal') >= 0) {
- theirScrap.push(inventory[n]);
- }
- }
- console.log('The bot added ' + theirRefined.length + ' refined, ' + theirReclaimed.length + ' reclaimed & ' + theirScrap.length + ' scrap from user: ' + steamID + '\'s inventory to the trade offer.');
- //Create the trade offer
- var offer = manager.createOffer(steamID);
- //Setup the trade offer
- offer.setMessage('You\'re buying ' + amount + ' of my ' + item + 's for ' + itemPrice + ' refined metal.');
- //Add their items to the trade offer
- offer.addTheirItems(theirRefined);
- offer.addTheirItems(theirReclaimed);
- offer.addTheirItems(theirScrap);
- //Add our items to the trade offer
- offer.addMyItems(ourItems);
- //Send and confirm the offer
- offer.send(function(err, status) {
- if(err) {
- console.log('Error sending the trade offer: ' + err);
- client.chatMessage(steamID, 'Something went wrong. There was an error sending you the trade offer, please contact my owner if this continues.');
- } else if(status == 'pending') {
- console.log(`Trade offer #${offer.id} is validated, but awaiting confirmation.`);
- client.chatMessage(steamID, 'The trade offer is validated, but awaiting confirmation.');
- community.acceptConfirmationForObject(config.account.identitySecret, offer.id, function(err) {
- if(err) {
- console.log('Error confirming trade offer: ' + offer.id);
- client.chatMessage(steamID, 'Error confirming your trade offer, declining.');
- offer.decline();
- } else {
- console.log(`Trade offer #${offer.id} confirmed.`);
- client.chatMessage(steamID, 'The trade offer was sent successfully. You can accept it here: http://steamcommunity.com/tradeoffer/' + offer.id);
- }
- });
- }
- });
- }
- });
- }
- });
- }
- function sellItem(steamID, item, amount) {
- if(!Prices[item]) {
- console.log('User: ' + steamID + ' requested to buy an item we\'re currently not buying.');
- client.chatMessage(steamID, 'I\'m currently not buying that item.');
- return true;
- }
- //Their items in arrays
- var theirItems = [];
- //Our items in arrays
- var ourRefined = [];
- var ourReclaimed = [];
- var ourScrap = [];
- //Item count
- var ourMetal = 0;
- var ourMetalToAdd = 0;
- var ourRefinedToAdd = 0;
- var ourReclaimedToAdd = 0;
- var ourScrapToAdd = 0;
- //Inventory count
- var ourInventoryRef = 0;
- var ourInventoryRec = 0;
- var ourInventoryScrap = 0;
- //Bools
- var DoneAddingOurMetal = false;
- //Prices
- var itemPriceInRef = Prices[item].buy;
- var itemPriceInScrap = Math.round(itemPriceInRef * 9) * amount;
- var itemPrice = itemPriceInRef * amount;
- client.chatMessage(steamID, 'Processing your request.');
- console.log('User: ' + steamID + ' is selling us ' + amount + ' of their ' + item + ' for ' + itemPrice + ' refined metal. Item price in scrap ' + itemPriceInScrap);
- //Load their inventory
- manager.getUserInventoryContents(steamID, config.tf2.ID, 2, true, function(err, inventory) {
- if(err) {
- console.log('Error getting their inventory: ' + err);
- client.chatMessage(steamID, "An error occurred while loading your inventory. Please again try later.");
- } else {
- console.log('Checking if user: ' + steamID + ' has the item they\'re trying to sell us.');
- for(var n = 0; n < inventory.length; n++) {
- if(theirItems.length < amount && inventory[n].name.indexOf(item) >= 0) {
- theirItems.push(inventory[n]);
- }
- }
- if(theirItems.length === 0) {
- console.log('User: ' + steamID + ' doesn\'t own any ' + item + 's.');
- client.chatMessage(steamID, 'You don\'t own any ' + item + 's.');
- return true;
- } else if(amount > theirItems.length) {
- console.log('User: ' + steamID + ' doesn\'t have ' + amount + ' ' + item + 's in its inventory.');
- client.chatMessage(steamID, 'You don\'t have ' + amount + ' ' + item + 's in your inventory. You only have ' + theirItems.length + ' ' + item + 's.');
- return true;
- }
- console.log('Adding ' + amount + ' of their ' + item + 's to the trade offer.');
- //Load our inventory
- manager.getInventoryContents(config.tf2.ID, 2, true, function(err, inventory) {
- if(err) {
- console.log('Error getting our inventory: ' + err);
- client.chatMessage(steamID, 'I encountered an error getting my inventory. Please try again later.');
- } else {
- console.log('Checking if the bot has enough metal to buy ' + amount + ' ' + item + 's.');
- //Loop trough the inventory to count metal
- for(var n = 0; n < inventory.length; n++) {
- if(inventory[n].name.indexOf('Refined Metal') >= 0) {
- ourInventoryRef += 1;
- ourMetal += 9;
- } else if(inventory[n].name.indexOf('Reclaimed Metal') >= 0) {
- ourInventoryRec += 1;
- ourMetal += 3;
- } else if(inventory[n].name.indexOf('Scrap Metal') >= 0) {
- ourInventoryScrap += 1;
- ourMetal += 1;
- }
- }
- console.log('The bot has ' + ourInventoryRef + ' refined, ' + ourInventoryRec + ' reclaimed & ' + ourInventoryScrap + ' scrap in its inventory.');
- console.log('The bot has ' + ourMetal + ' scrap metal in total.');
- //Check if we can buy the item
- if(ourMetal < itemPriceInScrap) {
- var missingMetal = (itemPriceInScrap - ourMetal) / 9;
- console.log('The bot doesn\'t have ' + itemPriceInScrap + ' scrap metal to buy ' + amount + ' ' + item + 's.');
- client.chatMessage(steamID, 'The bot doesn\'t have ' + itemPrice + ' refined metal to buy ' + amount + ' of your ' + item + 's. Please try to sell a less amount of items or wait for the bot to get more metal.');
- return true;
- } else if(ourMetal >= itemPriceInScrap) {
- console.log('The bot has enough scrap metal to buy ' + amount + ' of my ' + item + 's.');
- //Check our inventory again for a more detailed count
- while(!DoneAddingOurMetal) {
- if(ourInventoryRef > 0 && ourMetalToAdd + 9 <= itemPriceInScrap) {
- ourMetalToAdd += 9;
- ourRefinedToAdd++;
- ourInventoryRef--;
- } else if(ourInventoryRec > 0 && ourMetalToAdd + 3 <= itemPriceInScrap) {
- ourMetalToAdd += 3;
- ourReclaimedToAdd++;
- ourInventoryRec--;
- } else if(ourInventoryScrap > 0 && ourMetalToAdd + 1 <= itemPriceInScrap) {
- ourMetalToAdd += 1;
- ourScrapToAdd++;
- ourInventoryScrap--;
- } else if(ourMetalToAdd == itemPriceInScrap) {
- console.log('Done calculatiing the bots metal.');
- client.chatMessage(steamID, 'The bot has the right amount of refined, reclaimed & scrap metal for a succesful trade.');
- DoneAddingOurMetal = true;
- } else {
- console.log('The bot has enough metal, but not the right amount of refined, reclaimed or scrap, attempting to craft.');
- client.chatMessage(steamID, 'The bot is missing some scrap, it will craft some and you can try again.');
- DoneAddingOurMetal = true;
- return true;
- }
- }
- }
- console.log('The bot will give user: ' + steamID + ', ' + ourRefinedToAdd + ' refined, ' + ourReclaimedToAdd + ' reclaimed & ' + ourScrapToAdd + ' scrap from its inventory.');
- //Add our metal
- for(var n = 0; n < inventory.length; n++) {
- if(ourRefined.length < ourRefinedToAdd && inventory[n].name.indexOf('Refined Metal') >= 0) {
- ourRefined.push(inventory[n]);
- } else if(ourReclaimed < ourReclaimedToAdd && inventory[n].name.indexOf('Reclaimed Metal') >= 0) {
- ourReclaimed.push(inventory[n]);
- } else if(ourScrap < ourScrapToAdd && inventory[n].name.indexOf('Scrap Metal') >= 0) {
- ourScrap.push(inventory[n]);
- }
- }
- console.log('The bot added ' + ourRefined.length + ' refined, ' + ourReclaimed.length + ' reclaimed & ' + ourScrap.length + ' scrap from user: ' + steamID + '\'s inventory to the trade offer.');
- //Create the trade offer
- var offer = manager.createOffer(steamID);
- //Setup the trade offer
- offer.setMessage('I\'m buying ' + amount + ' of your ' + item + 's for ' + itemPrice + ' refined metal.');
- //Add the items
- offer.addTheirItems(theirItems);
- //Add our items
- offer.addMyItems(ourRefined);
- offer.addMyItems(ourReclaimed);
- offer.addMyItems(ourScrap);
- //Send and confirm the offer
- offer.send(function(err, status) {
- if(err) {
- console.log('Error sending the trade offer: ' + err);
- client.chatMessage(steamID, 'Something went wrong. There was an error sending you the trade offer, please contact my owner if this continues.');
- } else if(status == 'pending') {
- console.log(`Trade offer #${offer.id} is validated, but awaiting confirmation.`);
- client.chatMessage(steamID, 'The trade offer is validated, but awaiting confirmation.');
- community.acceptConfirmationForObject(config.account.identitySecret, offer.id, function(err) {
- if(err) {
- console.log('Error confirming trade offer: ' + offer.id);
- client.chatMessage(steamID, 'Error confirming your trade offer, declining.');
- offer.decline();
- } else {
- console.log(`Trade offer #${offer.id} confirmed.`);
- client.chatMessage(steamID, 'The trade offer was sent successfully. You can accept it here: http://steamcommunity.com/tradeoffer/' + offer.id);
- }
- });
- }
- });
- }
- });
- }
- });
- }
- //Custom function to post and log comments on steam profiles
- function
- commentOnUserProfile(steamID, message) {
- community.postUserComment(steamID, message, function(err) {
- if(err) {
- console.log(err);
- } else {
- console.log('Successfully commented: ' + message)
- }
- });
- }
- //Custom funtion to fix numbers
- function toFixed(num, fixed) {
- var re = new RegExp('^-?\\d+(?:\.\\d{0,' + (fixed || -1) + '})?');
- return num.toString().match(re)[0];
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement