Advertisement
OneTallor

Untitled

Mar 16th, 2017
504
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.57 KB | None | 0 0
  1. /*
  2. Initalizing packages
  3. */
  4. const SteamUser = require('steam-user');
  5. const TradeOfferManager = require('steam-tradeoffer-manager');
  6. const SteamTotp = require('steam-totp');
  7. const SteamCommunity = require('steamcommunity');
  8. const fs = require('fs');
  9. const request = require('request');
  10. const config = require('./config.json');
  11.  
  12. const community = new SteamCommunity();
  13. const client = new SteamUser();
  14. const manager = new TradeOfferManager({
  15. steam: client,
  16. domain: 'x',
  17. language: 'en'
  18. });
  19.  
  20. /*
  21. Polling Steam and Logging On
  22. */
  23. client.logOn({
  24. accountName: config.username,
  25. password: config.password,
  26. twoFactorCode: SteamTotp.generateAuthCode(config.sharedSecret)
  27. });
  28.  
  29. /*
  30. Getting prices
  31. */
  32. const priceUrl = 'https://api.steamapi.io/market/prices/'+config.options.appid+'?key='+config.options.apikey;
  33.  
  34. function getPriceList() {
  35. request(priceUrl, (error, response, body) => {
  36. if (error || response.statusCode !== 200) return console.log(`Error: ${error} - Status Code: ${response.statusCode}`);
  37. fs.writeFile('prices.json', body);
  38. });
  39. }
  40.  
  41. function priceItemsInOffer(offer) {
  42. let offerValue = 0;
  43. if (offer) {
  44. const prices = require('./prices.json'); //Requiring price file
  45. //Loop through offer and get total price
  46. for (var x in offer) {
  47. prices[offer[x].market_hash_name] ? offerValue += prices[offer[x].market_hash_name] : null;
  48. }
  49. }
  50. return offerValue;
  51. }
  52.  
  53. //Make the first price request
  54. getPriceList();
  55. //Auto Refresh price
  56. setInterval(getPriceList, config.options.priceRefreshInterval * 1000);
  57.  
  58. /*
  59. Friend requests and chat
  60. */
  61. client.on('friendRelationship', (steamid, relationship) => {
  62. if (relationship === 2 && config.options.acceptRandomFriendRequests) {
  63. client.addFriend(steamid);
  64. client.chatMessage(steamid, config.options.chatResponse.newFriend);
  65. }
  66. });
  67.  
  68. client.on('friendMessage', (steamID, message) => {
  69. console.log(config.options.chatResponse.commands[message]);
  70. if (config.options.chatResponse.commands[message]) {
  71. client.chatMessage(steamID, config.options.chatResponse.commands[message]);
  72. }
  73. });
  74.  
  75. /*
  76. Offer handling
  77. */
  78. function isInArray(value, array) {
  79. return array.indexOf(value) > -1;
  80. }
  81. function acceptOffer(offer) {
  82. offer.accept((err) => {
  83. if (err) console.log(`Unable to accept offer: ${err.message}`);
  84. community.checkConfirmations();
  85. });
  86. }
  87.  
  88. function declineOffer(offer) {
  89. offer.decline((err) => {
  90. if (err) return console.log(`Unable to decline offer: ${err.message}`);
  91. });
  92. }
  93.  
  94. manager.on('newOffer', function(offer) {
  95. const partnerid = offer.partner.getSteamID64();
  96.  
  97. offer.getUserDetails((err, me, them) => {
  98. if(err) return console.log(err);
  99.  
  100. if(them.escrowDays > 0) {
  101. console.log('Trade is in escrow. Declining.');
  102. declineOffer(offer);
  103. }
  104. });
  105.  
  106. console.log(`New offer # ${offer.id} from ${partnerid}`);
  107.  
  108. if (isInArray(partnerid, config.adminIDs)) {
  109. client.chatMessage(partnerid, config.options.chatResponse.adminTrade);
  110. acceptOffer(offer);
  111.  
  112. } else if (!offer.itemsToGive.length) {
  113. console.log(`${partnerid} just donated us items.`);
  114.  
  115. client.chatMessage(partnerid, config.options.chatResponse.donation); //Sending message for donations
  116. acceptOffer(offer);
  117.  
  118. } else if (priceItemsInOffer(offer.itemsToReceive) < config.options.minimumprice) {
  119. client.chatMessage(partnerid, config.options.chatResponse.junk); //Sending message for donations
  120. declineOffer(offer);
  121.  
  122. } else if (priceItemsInOffer(offer.itemsToGive) > priceItemsInOffer(offer.itemsToReceive) * config.options.percentamount) {
  123. client.chatMessage(partnerid, config.options.chatResponse.tradeDeclined); //Sending message when trade declined
  124. declineOffer(offer);
  125. } else {
  126. client.chatMessage(partnerid, config.options.chatResponse.tradeAccepted); //Sending message for accepting offer
  127. acceptOffer(offer);
  128. }
  129. });
  130.  
  131.  
  132.  
  133. //Refresh polldata.json
  134. manager.on('pollData', function(pollData) {
  135. fs.writeFile('polldata.json', JSON.stringify(pollData));
  136. });
  137.  
  138. if (fs.existsSync('polldata.json')) {
  139. manager.pollData = JSON.parse(fs.readFileSync('polldata.json'));
  140. }
  141.  
  142. client.on('loggedOn', function(details) {
  143. console.log(`Logged into Steam as ${client.steamID.getSteam3RenderedID()}`);
  144. client.setPersona(SteamUser.Steam.EPersonaState.Online,config.botname);
  145. });
  146.  
  147. client.on('webSession', function(sessionID, cookies) {
  148. manager.setCookies(cookies, function(err) {
  149. if (err) return console.log(err);
  150. console.log(`Got API key: ${manager.apiKey}`);
  151. });
  152.  
  153. community.setCookies(cookies);
  154. community.startConfirmationChecker(config.options.confirmationInterval, config.identitySecret);
  155. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement