Advertisement
Guest User

Untitled

a guest
Jun 17th, 2017
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.72 KB | None | 0 0
  1. var Steam = require('steam');
  2. var SteamUser = require('steam-user');
  3. var TradeOfferManager = require('steam-tradeoffer-manager');
  4. var SteamTotp = require('steam-totp');
  5. var Steamcommunity = require('steamcommunity');
  6. var SteamWebLogOn = require('steam-weblogon');
  7.  
  8. var util = require('util');
  9. var UInt64 = require('cuint').UINT64;
  10.  
  11. var client = new SteamUser();
  12.  
  13. var steamClient = new Steam.SteamClient();
  14. var steamUser = new Steam.SteamUser(steamClient);
  15. var steamFriends = new Steam.SteamFriends(steamClient);
  16. var steamWebLogOn = new SteamWebLogOn(steamClient, steamUser);
  17.  
  18. var community = new Steamcommunity();
  19. var manager = new TradeOfferManager({
  20. "steam": client,
  21. "domain": "example.com",
  22. "language": "en"
  23. });
  24.  
  25. var config = require('./config');
  26.  
  27. var code = SteamTotp.generateAuthCode(config.bot.shared_secret);
  28.  
  29. var logOnOptions = {
  30. account_name: config.bot.username,
  31. password: config.bot.password,
  32. two_factor_code: code
  33. }
  34.  
  35. function log(message)
  36. {
  37. console.log(new Date().toString() + ' - ' + message);
  38. steamFriends.sendMessage(config.admin.Oshane, message.toString());
  39. }
  40.  
  41. function steamIdObjectToSteamId64(steamIdObject) {
  42. return new UInt64(steamIdObject.accountid, (steamIdObject.universe << 24) | (steamIdObject.type << 20) | (steamIdObject.instance)).toString();
  43. }
  44.  
  45. function Login(logOnOptions)
  46. {
  47. steamClient.connect();
  48.  
  49. steamClient.on('connected', function() {
  50. log('Connected...');
  51. steamUser.logOn(logOnOptions);
  52. });
  53.  
  54. steamClient.on('logOnResponse', function(logonResp) {
  55. if (logonResp.eresult === Steam.EResult.OK) {
  56. log('Login Successful!');
  57. steamFriends.setPersonaState(Steam.EPersonaState.Online);
  58.  
  59. steamWebLogOn.webLogOn(function(sessionID, cookies) {
  60. manager.setCookies(cookies, function(err) {
  61. if(err) {
  62. log(err);
  63. process.exit(1);
  64. return;
  65. }
  66. });
  67.  
  68. community.setCookies(cookies);
  69. community.startConfirmationChecker(30000, config.bot.identity_secret);
  70.  
  71. if(community.chatState == 0) {
  72. community.chatLogon();
  73. }
  74.  
  75. community.on('chatMessage', function(sender, text) {
  76. handleChatMessages(sender, text);
  77. });
  78. });
  79. }
  80. else { log(logonResp.eresult); }
  81. });
  82. }
  83.  
  84. function handleChatMessages(steamID, message) {
  85.  
  86. steamID = steamIdObjectToSteamId64(steamID);
  87.  
  88. message = message.trim();
  89.  
  90. var friendList = steamFriends.friends;
  91.  
  92. if(friendList[steamID] && friendList[steamID] == Steam.EFriendRelationship.Friend) {
  93. if(message.indexOf('!help') > -1) {
  94. steamFriends.sendMessage(steamID, config.message.help.toString());
  95. }
  96. else if(message.indexOf('!buy') > -1) {
  97.  
  98. numberOfKeys = parseInt(message.substring(message.indexOf(' ') + 1, message.length));
  99.  
  100. if(isNaN(numberOfKeys) == true) { steamFriends.sendMessage(steamID, config.message.invalid_number_of_keys.toString()); }
  101. else {
  102. if(numberOfKeys > config.max_number_of_keys) { steamFriends.sendMessage(steamID, config.message.excess_keys.toString()); }
  103. else {
  104. sellSets(steamID, Math.round(numberOfKeys));
  105. steamFriends.sendMessage(steamID, config.message.buy.toString());
  106. }
  107. }
  108. }
  109. else { steamFriends.sendMessage(steamID, config.message.invalid_command.toString()); }
  110. }
  111. else {
  112. community.chatMessage(steamID, config.message.not_in_friendlist.toString());
  113. }
  114. }
  115.  
  116. var getSpecificItemFromInventoryByTagName = function(inventory, tagName) {
  117. var inventoryItems = [];
  118.  
  119. inventory.forEach(function(inventoryItem) {
  120. if(inventoryItem.tags) {
  121. inventoryItem.tags.forEach(function(tag) {
  122. if(tag.name && tag.name == tagName) {
  123. inventoryItems.push(inventoryItem);
  124. }
  125. });
  126. }
  127. });
  128. return inventoryItems;
  129. }
  130.  
  131. var getSpecificNumberOfItemsFromInventory = function(itemInventory, numberOfItems) {
  132. var items = [];
  133.  
  134. for(var i = 0; i < numberOfItems; i++) {
  135. if(i < itemInventory.length) {
  136. var item = itemInventory[i];
  137. items.push({ assetid: item.assetid, appid: item.appid, contextid: item.contextid, amount: 1});
  138. }
  139. }
  140.  
  141. return items;
  142. }
  143.  
  144. var getSmallerNumber = function(first, second) {
  145. return Math.min(first, second);
  146. }
  147.  
  148.  
  149. function sellSets(steamID, numberOfKeys) {
  150. var theirItems = [];
  151. var myItems = [];
  152.  
  153. manager.getUserInventoryContents(steamID, config.app_id.csgo, config.context_id.keys, true, function(err, userInventory, userCurrencies) {
  154.  
  155. userInventory = getSpecificItemFromInventoryByTagName(userInventory, 'Key');
  156.  
  157. theirItems = getSpecificNumberOfItemsFromInventory(userInventory, numberOfKeys);
  158.  
  159. if(theirItems.length > 0) {
  160. manager.getInventoryContents(config.app_id.steam, config.context_id.cards, true, function(err, inventory, currencies) {
  161.  
  162. numberOfKeys = getSmallerNumber(numberOfKeys, theirItems.length);
  163. inventory = getSpecificItemFromInventoryByTagName(inventory, 'Trading Card');
  164.  
  165. var numberOfCardSets = numberOfKeys * config.sets_per_key;
  166.  
  167. myItems = getSpecificNumberOfItemsFromInventory(inventory, numberOfCardSets);
  168.  
  169. if(myItems.length > 0) {
  170. var offer = manager.createOffer(steamID);
  171.  
  172. offer.addMyItems(myItems);
  173. offer.addTheirItems(theirItems);
  174.  
  175. offer.setMessage(config.message.tradeoffer.toString());
  176.  
  177. offer.send(function(err, status) {
  178. if(err) { log('Sale of cards failed: ' + err); return; }
  179.  
  180. if(status == 'pending') { community.checkConfirmations(); log('checkConfirmations executed'); }
  181.  
  182. steamFriends.sendMessage(steamID, config.message.cards_sold.toString());
  183. });
  184. }
  185. });
  186. }
  187.  
  188. });
  189. }
  190.  
  191. Login(logOnOptions);
  192.  
  193. steamFriends.on('friend', function(steamID, relationship) {
  194. if(relationship == Steam.EFriendRelationship.RequestRecipient) {
  195. steamFriends.addFriend(steamID);
  196. steamFriends.sendMessage(steamID, config.message.welcome.toString());
  197. }
  198. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement