Advertisement
Guest User

Untitled

a guest
May 22nd, 2016
1,648
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.39 KB | None | 0 0
  1. // OPTIONS
  2. var logOnOptions = {
  3. account_name: '',
  4. password: ''
  5. };
  6.  
  7. var admin = ['76561198175752330','76561198173310106']; // your steamid
  8. var name = 'working Hard [BOT]';
  9.  
  10. // BOT
  11. var fs = require('fs');
  12. var Steam = require('steam');
  13. var crypto = require('crypto');
  14. var request = require('request');
  15. var SteamRep = require('steamrep');
  16. var SteamTotp = require('steam-totp');
  17. var SteamWebLogOn = require('steam-weblogon');
  18. var SteamCommunity = require('steamcommunity');
  19. var getSteamAPIKey = require('steam-web-api-key');
  20. var SteamTradeOffers = require('steam-tradeoffers');
  21.  
  22.  
  23. try {
  24. var twoFactorData = JSON.parse(fs.readFileSync(logOnOptions.account_name + '.2fa', 'utf8'));
  25. } catch (e) {
  26. throw (e);
  27. }
  28.  
  29. var pricesFile, buyPrices, sellPrices;
  30.  
  31. try {
  32. pricesFile = fs.readFileSync('prices.json', 'utf-8');
  33. buyPrices = JSON.parse(pricesFile).buy;
  34. sellPrices = JSON.parse(pricesFile).sell;
  35. } catch (e) {
  36. throw "Error getting prices.json";
  37. }
  38.  
  39. if (fs.existsSync('servers')) {
  40. Steam.servers = JSON.parse(fs.readFileSync('servers'));
  41. }
  42.  
  43. var offers = new SteamTradeOffers();
  44. var community = new SteamCommunity();
  45. var steamClient = new Steam.SteamClient();
  46. var steamUser = new Steam.SteamUser(steamClient);
  47. var steamFriends = new Steam.SteamFriends(steamClient);
  48. var steamWebLogOn = new SteamWebLogOn(steamClient, steamUser);
  49.  
  50. function getSHA1(bytes) {
  51. var shasum = crypto.createHash('sha1');
  52. shasum.end(bytes);
  53. return shasum.read();
  54. }
  55.  
  56. steamClient.connect();
  57. steamClient.on('connected', function() {
  58. console.log("Connected to Steam.");
  59.  
  60. var code = SteamTotp.generateAuthCode(twoFactorData.shared_secret);
  61. console.log('Logging into Node-Steam using mobile auth code:', code);
  62. logOnOptions['two_factor_code'] = code;
  63.  
  64. steamUser.logOn(logOnOptions);
  65. });
  66.  
  67. steamClient.on('servers', function(servers) {
  68. fs.writeFile('servers', JSON.stringify(servers));
  69. });
  70.  
  71. steamClient.on('logOnResponse', function(logonResp) {
  72. if (logonResp.eresult == Steam.EResult.OK) {
  73. console.log("Logged in to Steam.");
  74. steamFriends.setPersonaState(Steam.EPersonaState.Online);
  75. steamFriends.setPersonaName(name);
  76.  
  77. steamWebLogOn.webLogOn(function(sessionID, newCookie) {
  78. getSteamAPIKey({
  79. sessionID: sessionID,
  80. webCookie: newCookie
  81. }, function(err, APIKey) {
  82. if (err) throw err;
  83.  
  84. offers.setup({
  85. sessionID: sessionID,
  86. webCookie: newCookie,
  87. APIKey: APIKey
  88. });
  89. });
  90.  
  91. community.setCookies(newCookie);
  92. community.startConfirmationChecker(10000, twoFactorData.identity_secret);
  93. });
  94. }
  95. });
  96.  
  97. steamUser.on('tradeOffers', function(num) {
  98. if (num > 0) {
  99. offers.getOffers({
  100. get_received_offers: 1,
  101. active_only: 1,
  102. time_historical_cutoff: Math.round(Date.now() / 1000)
  103. }, function(err, body) {
  104. if (err) {
  105. console.log(err);
  106. return;
  107. }
  108.  
  109. if (body.response.trade_offers_received) {
  110. body.response.trade_offers_received.forEach(function(offer) {
  111. console.log("RECEIVED TRADE " + offer.tradeofferid + " FROM " + offer.steamid_other);
  112. if (offer.trade_offer_state == 2) {
  113. SteamRep.isScammer(offer.steamid_other, function(err, result) {
  114. if (err) {
  115. console.log(err);
  116. return;
  117. }
  118.  
  119. if (!result) {
  120. var keys = 0;
  121. var error = false;
  122.  
  123. if (admin.indexOf(offer.steamid_other) > -1) {
  124. console.log("## accepting, admin");
  125. offers.acceptOffer({ tradeOfferId: offer.tradeofferid });
  126.  
  127. return;
  128. }
  129.  
  130. var myItems, theirItems;
  131.  
  132. if (offer.items_to_receive !== undefined) {
  133. theirItems = offer.items_to_receive.length;
  134. } else {
  135. theirItems = 0;
  136. }
  137.  
  138. if (offer.items_to_give !== undefined) {
  139. myItems = offer.items_to_give.length;
  140. } else {
  141. myItems = 0;
  142. }
  143.  
  144. offers.loadMyInventory({
  145. appId: 730,
  146. contextId: 2,
  147. language: "en"
  148. }, function(err, myInv) {
  149. if (err || myInv === undefined) {
  150. console.log(err);
  151. offers.declineOffer({ tradeOfferId: offer.tradeofferid });
  152. error = true;
  153. return;
  154. }
  155.  
  156. if (offer.items_to_give !== undefined) {
  157. var notKey = false;
  158. offer.items_to_give.forEach(function(item) {
  159. var matches = myInv.filter(function(invItem) { return invItem.id === item.assetid });
  160. var itemname;
  161.  
  162. try {
  163. itemname = matches[0].market_name;
  164. } catch (e) {
  165. console.log("## Couldn't find an item in my inventory!");
  166. }
  167.  
  168. if (itemname.indexOf('Key') === -1 /*&& itemname.indexOf('Sticker') === -1*/) {
  169. notKey = true;
  170. }
  171. });
  172.  
  173. if (notKey) {
  174. console.log('Selling an item...');
  175. sellItem();
  176. } else {
  177. console.log('Buying an item...');
  178. buyItem();
  179. }
  180. } else {
  181. console.log('181 declining...')
  182. offers.declineOffer({ tradeOfferId: offer.tradeofferid });
  183. error = true;
  184. }
  185. });
  186.  
  187. function buyItem() {
  188. if (theirItems === 1 && myItems >= 0) {
  189. if (offer.items_to_receive !== undefined) {
  190. for (var i = 0; i < offer.items_to_receive.length; i++) {
  191. if (offer.items_to_receive[i].appid !== '730') {
  192. console.log("147 declining..." + offer.items_to_receive[i].appid);
  193. offers.declineOffer({ tradeOfferId: offer.tradeofferid });
  194. error = true;
  195.  
  196. return;
  197. }
  198. }
  199. }
  200.  
  201. offers.loadMyInventory({
  202. appId: 730,
  203. contextId: 2,
  204. language: "en"
  205. }, function(err, myInv) {
  206. if (err || myInv === undefined) {
  207. console.log(err);
  208. offers.declineOffer({ tradeOfferId: offer.tradeofferid });
  209. error = true;
  210. return;
  211. }
  212.  
  213. if (offer.items_to_give !== undefined) {
  214. offer.items_to_give.forEach(function(item) {
  215. var matches = myInv.filter(function(invItem) { return invItem.id === item.assetid });
  216. var itemname;
  217.  
  218. try {
  219. itemname = matches[0].market_name;
  220. } catch (e) {
  221. console.log("## Couldn't find an item in my inventory!");
  222. }
  223.  
  224. if (itemname.indexOf('Key') > -1 /*&& itemname.indexOf('Sticker') === -1*/) {
  225. keys++;
  226. } else {
  227. console.log('226 declining...');
  228. offers.declineOffer({ tradeOfferId: offer.tradeofferid });
  229. error = true;
  230. }
  231. });
  232. } else {
  233. console.log('233 declining...');
  234. offers.declineOffer({ tradeOfferId: offer.tradeofferid });
  235. error = true;
  236. }
  237. });
  238.  
  239. setTimeout(function() {
  240. offers.loadPartnerInventory({
  241. partnerSteamId: offer.steamid_other,
  242. appId: 730,
  243. contextId: 2,
  244. tradeOfferId: offer.tradeofferid,
  245. language: "en"
  246. }, function(err, theirInv) {
  247. if (err || theirInv === undefined) {
  248. console.log(err);
  249. offers.declineOffer({ tradeOfferId: offer.tradeofferid });
  250. return;
  251. }
  252.  
  253. if (offer.items_to_receive !== undefined) {
  254. offer.items_to_receive.forEach(function(item) {
  255. var matches = theirInv.filter(function(invItem) { return invItem.id == item.assetid });
  256. var itemname;
  257.  
  258. try {
  259. itemname = matches[0].market_name;
  260. } catch (e) {
  261. console.log("## Couldn't find an item in their inventory!")
  262. }
  263.  
  264. if (buyPrices[itemname] !== undefined) {
  265. console.log(itemname + ' >> ' + buyPrices[itemname] + ' max keys');
  266. console.log(keys + ' keys from me');
  267.  
  268. if (keys <= buyPrices[itemname] && !error) {
  269. console.log("accepting... 269");
  270.  
  271. offers.acceptOffer({ tradeOfferId: offer.tradeofferid }, function(err) {
  272. if (err) console.log(err);
  273. });
  274. } else if (keys > buyPrices[itemname]) {
  275. console.log("275 declining...");
  276.  
  277. offers.declineOffer({ tradeOfferId: offer.tradeofferid });
  278. }
  279. }
  280. });
  281. } else {
  282. console.log("229 declining...");
  283.  
  284. offers.declineOffer({ tradeOfferId: offer.tradeofferid });
  285. }
  286. });
  287. }, 750 * (myItems + theirItems));
  288. } else {
  289. console.log("245 declining...");
  290.  
  291. offers.declineOffer({ tradeOfferId: offer.tradeofferid });
  292. }
  293. }
  294.  
  295. function sellItem() {
  296. if (theirItems === 1 && myItems >= 0) {
  297. if (offer.items_to_receive !== undefined) {
  298. for (var i = 0; i < offer.items_to_receive.length; i++) {
  299. if (offer.items_to_receive[i].appid !== '730') {
  300. console.log("147 declining..." + offer.items_to_receive[i].appid);
  301. offers.declineOffer({ tradeOfferId: offer.tradeofferid });
  302. error = true;
  303.  
  304. return;
  305. }
  306. }
  307. }
  308.  
  309. offers.loadPartnerInventory({
  310. partnerSteamId: offer.steamid_other,
  311. appId: 730,
  312. contextId: 2,
  313. tradeOfferId: offer.tradeofferid,
  314. language: "en"
  315. }, function(err, theirInv) {
  316. if (err || theirInv === undefined) {
  317. console.log(err);
  318. offers.declineOffer({ tradeOfferId: offer.tradeofferid });
  319. return;
  320. }
  321.  
  322. if (offer.items_to_receive !== undefined) {
  323. offer.items_to_receive.forEach(function(item) {
  324. var matches = theirInv.filter(function(invItem) { return invItem.id === item.assetid });
  325. var itemname;
  326.  
  327. try {
  328. itemname = matches[0].market_name;
  329. } catch (e) {
  330. console.log("## Couldn't find an item in my inventory!");
  331. return;
  332. }
  333.  
  334. if (itemname.indexOf('Key') > -1) {
  335. keys++;
  336. } else {
  337. console.log('335 declining...')
  338. offers.declineOffer({ tradeOfferId: offer.tradeofferid });
  339. error = true;
  340. }
  341. });
  342. }
  343. });
  344.  
  345. setTimeout(function() {
  346. offers.loadMyInventory({
  347. appId: 730,
  348. contextId: 2,
  349. language: "en"
  350. }, function(err, myInv) {
  351. if (err || myInv === undefined) {
  352. console.log(err);
  353. offers.declineOffer({ tradeOfferId: offer.tradeofferid });
  354. return;
  355. }
  356.  
  357. if (offer.items_to_give !== undefined) {
  358. offer.items_to_give.forEach(function(item) {
  359. var matches = myInv.filter(function(invItem) { return invItem.id == item.assetid });
  360. var itemname;
  361.  
  362. try {
  363. itemname = matches[0].market_name;
  364. } catch (e) {
  365. console.log("## Couldn't find an item in their inventory!")
  366. }
  367.  
  368. if (sellPrices[itemname] !== undefined) {
  369. console.log(itemname + ' >> ' + sellPrices[itemname] + ' min keys');
  370. console.log(keys + ' keys from them');
  371.  
  372. if (keys >= sellPrices[itemname] && !error) {
  373. console.log("accepting... 373");
  374.  
  375. offers.acceptOffer({ tradeOfferId: offer.tradeofferid }, function(err) {
  376. if (err) console.log(err);
  377. });
  378. } else if (keys < sellPrices[itemname]) {
  379. console.log("222 declining...");
  380.  
  381. offers.declineOffer({ tradeOfferId: offer.tradeofferid });
  382. }
  383. }
  384. });
  385. } else {
  386. console.log("229 declining...");
  387.  
  388. offers.declineOffer({ tradeOfferId: offer.tradeofferid });
  389. }
  390. });
  391. }, 750 * (myItems + theirItems));
  392. } else {
  393. console.log("245 declining...");
  394.  
  395. offers.declineOffer({ tradeOfferId: offer.tradeofferid });
  396. }
  397. }
  398. } else {
  399. console.log("250 declining...");
  400.  
  401. offers.declineOffer({ tradeOfferId: offer.tradeofferid });
  402. }
  403. });
  404. }
  405. });
  406. }
  407. });
  408. }
  409. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement