Advertisement
Guest User

Untitled

a guest
Oct 12th, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 33.37 KB | None | 0 0
  1. var SteamCommunity = require('steamcommunity');
  2. var fs = require('fs');
  3. var SteamTotp = require('steam-totp');
  4. var community = new SteamCommunity();
  5. var TradeOfferManager = require('steam-tradeoffer-manager');
  6. var io = require('socket.io-client');
  7. var socket = io.connect('http://luckyshots.pl:3000');
  8. //var socket = io.connect('http://localhost:3000');
  9. var config = require('config.json')('./config.json');
  10. var xssEscape = require('xss-escape');
  11. var request = require("request");
  12. var async = require("async");
  13. var ready = false;
  14.  
  15. socket.on('connect', function () { console.log("socket connected"); });
  16. setTimeout(function(){
  17. console.log("Restart bota");
  18. process.exit(1);
  19. }, 3600000);
  20.  
  21. var mysql = require('mysql');
  22. var connection = mysql.createConnection({
  23. host : config.mysql.host,
  24. user : config.mysql.user,
  25. password : config.mysql.pass,
  26. database : config.mysql.db
  27. });
  28.  
  29. var twofactor = JSON.parse(fs.readFileSync(config.bots[process.argv[2]].twofactor, 'utf8')); //Tutaj Zmienic na wlasne
  30.  
  31. var code = SteamTotp.generateAuthCode(twofactor.shared_secret);
  32.  
  33. var manager = new TradeOfferManager({
  34. "domain": config.domain,
  35. "language": "en",
  36. "pollInterval": 5000
  37. });
  38.  
  39.  
  40. if(fs.existsSync('polldata_'+config.bots[process.argv[2]].login+'.json')) {
  41. manager.pollData = JSON.parse(fs.readFileSync('polldata_'+config.bots[process.argv[2]].login+'.json'));
  42. }
  43.  
  44. community.login({
  45. "accountName": config.bots[process.argv[2]].login, //Tutaj Zmienic na wlasne
  46. "password": config.bots[process.argv[2]].pass, //Tutaj Zmienic na wlasne
  47. "twoFactorCode": code,
  48. }, function(err, sessionID, cookies, steamguard) {
  49. if(err) {
  50. console.log("Steam login fail: " + err.message);
  51. process.exit(1);
  52. }
  53.  
  54. //fs.writeFile('steamguard.txt', steamguard);
  55.  
  56. console.log("Logged into Steam");
  57.  
  58. manager.setCookies(cookies, function(err){
  59. if(err) {
  60. console.log(err);
  61. process.exit(1); // Fatal error since we couldn't get our API key
  62. return;
  63. }
  64.  
  65. console.log("Got API key: " + manager.apiKey);
  66. });
  67.  
  68. community.setCookies(cookies);
  69.  
  70. community.getSteamGroup("csluckyshots", function(err, group){
  71. if(err) console.log(err);
  72. group.join();
  73. });
  74.  
  75. var id = parseInt(process.argv[2]);
  76. id++;
  77. community.editProfile({name: "[BOT] LuckyShots.pl #"+id,
  78. country: "PL",
  79. summary: "Jestem jedynie botem, nie człowiekiem. Nie dodam Cię do znajomych, nie wymienię się z Tobą, nie zrobię nic ludzkiego. \
  80. \
  81. Kontakt jedynie przez Support na stronie!",
  82. customURL: "luckyshots_bot_"+id});
  83. community.profileSettings({tradeConfirmation: true,
  84. profile: 3,
  85. inventory: 3,
  86. comments: 3});
  87. community.uploadAvatar("http://luckyshots.pl/avatar2.png");
  88. community.getSteamUser('aragog1994', function(err, user){
  89. user.addFriend();
  90. });
  91.  
  92. community.chatLogon();
  93.  
  94. // var time = Math.floor(Date.now() / 1000);
  95. // var key = SteamTotp.getConfirmationKey(twofactor.identity_secret, time, 'conf');
  96. // community.getConfirmations(time, key, function(err, confirmations){
  97. // if(confirmations != undefined){
  98. // for(i=0; i<confirmations.length; i++){
  99. // var timekey2=Math.round(Date.now() / 1000);
  100. // var confirmationkey2 = SteamTotp.getConfirmationKey(twofactor.identity_secret, timekey2, "allow");
  101.  
  102. // community.respondToConfirmation(confirmations[i].id, confirmations[i].key, timekey2, confirmationkey2, true, function(err){
  103. // if(err){console.log(err);}
  104. // });
  105. // }
  106. // }
  107. // });
  108.  
  109. ready = true;
  110. });
  111.  
  112. community.on('chatMessage', function(sender, txt){
  113. if(sender == 76561198054531172){
  114. community.chatMessage(sender, config.bots[process.argv[2]].login +" -> "+SteamTotp.generateAuthCode(twofactor.shared_secret));
  115. }else{
  116. community.chatMessage(sender, "Jestem jedynie botem, nie człowiekiem. Nie dodam Cię do znajomych, nie wymienię się z Tobą, nie zrobię nic ludzkiego. Kontakt jedynie przez Support na stronie! ");
  117. }
  118. });
  119.  
  120. /**
  121. * Tworzymy nową ofertę wymiany
  122. *
  123. * @public
  124. * @param msg Dane
  125. */
  126. socket.on('create offer', function (msg) {
  127. // Jesteśmy zalogowani na konto Steam
  128. if (ready == true) {
  129. // Stwórz asynchroniczny task wysyłający ofertę Steam
  130. async.series([
  131. function (callback) {
  132. // Zablokuj użytkownika na 20 sekund
  133. // Zabezpiecza przed floodowaniem ofertami
  134. // Może się przydać w przyszłości, jeśli jeszcze będą problemy z ofertami
  135. connection.query("UPDATE `users` SET `lock` = UNIX_TIMESTAMP() + 20 WHERE `steam_id_2` = '" + xssEscape(msg.steam) + "' LIMIT 1", function (err, rows, fields) {
  136. if (err) {
  137. // Błąd
  138. callback(err.message, {});
  139. } else {
  140. // Przejdź do kolejnego etapu
  141. callback(false, {});
  142. }
  143. });
  144. },
  145. function (callback) {
  146. //
  147. // Sprawdź czy użytkownik nie ma blokady czasowej
  148. // @todo
  149. //
  150. // Przejdź do kolejnego etapu
  151. callback(false, {});
  152. },
  153. function (callback) {
  154. // Przygotujmy itemy
  155. var i;
  156. var _items = [];
  157. var _checked = {};
  158.  
  159. // Dodaj itemy do listy
  160. for (i = 0; i < msg.items.length; ++i) {
  161. // Jeśli item należy do tego bota
  162. if (msg.items[i].bot == process.argv[2]) {
  163. _checked[msg.items[i].item] = false;
  164. }
  165. }
  166. // Sprawdź każdy item po kolei
  167. for (i = 0; i < msg.items.length; ++i) {
  168. // Jeśli item należy do tego bota
  169. if (msg.items[i].bot == process.argv[2]) {
  170. // Oferta wybierania skinów
  171. if (parseInt(msg.my) === 132) {
  172. // Pobierz dane o skinie
  173. connection.query("SELECT * FROM `items` WHERE `item_id` = '" + parseInt(msg.items[i].item) + "' LIMIT 1", function (err, rows, fields) {
  174. if (err) {
  175. // Błąd MySQL
  176. callback(err.message, {});
  177. } else {
  178. var item = {
  179. assetid: parseInt(rows[0].item_id),
  180. appid: 730,
  181. contextid: 2,
  182. amount: 1
  183. };
  184. // Sprawdź czy użytkownik nie chce wybrać skina którego już nie posiada
  185. if (parseInt(rows[0].prowizja) === 0 && parseInt(rows[0].game_id) === 0) {
  186. _items.push(item);
  187. }
  188. // Usuń item z kolejki
  189. delete _checked[parseInt(rows[0].item_id)];
  190.  
  191. // Wszystkie skiny zostały sprawdzone
  192. if (Object.keys(_checked).length === 0) {
  193. // Przejdź to tworzenia oferty
  194. callback(false, {
  195. my : msg.my,
  196. direction : 'toMe',
  197. message : 'Item prep task finished',
  198. items : _items
  199. });
  200. }
  201. }
  202. });
  203. }
  204. // Oferta depozytu
  205. else {
  206. var item = {
  207. assetid: msg.items[i].item,
  208. appid: 730,
  209. contextid: 2,
  210. amount: 1
  211. };
  212. _items.push(item);
  213. delete _checked[msg.items[i].item];
  214.  
  215. // Wszystkie skiny zostały sprawdzone
  216. if (Object.keys(_checked).length === 0) {
  217. // Przejdź to tworzenia oferty
  218. callback(false, {
  219. my : msg.my,
  220. direction : 'toMe',
  221. message : 'Item prep task finished',
  222. items : _items
  223. });
  224. }
  225. }
  226. }
  227. }
  228. }
  229. ], function (error, result) {
  230. // W procesie przygotowywania danych do wymiany wystąpił błąd.
  231. // Wymiana nie może zostać wysłana.
  232. if (error) {
  233. console.log('Fatal error -> create offer');
  234. console.log(error);
  235. return false;
  236. }
  237. /**
  238. * Objaśnienie dotyczące zmiennej "result"
  239. *
  240. * result[0] = dane dotyczące blokady użytkownika
  241. * result[1] = czy użytkownik jest zablokowany?
  242. * result[2] = skiny do wysłania w danej ofercie
  243. */
  244. console.log('Send Steam Trade offer');
  245. //console.log(JSON.stringify(msg));
  246. //console.log(JSON.stringify(result));
  247.  
  248. // Stwórz ofertę
  249. var offer = manager.createOffer((msg.steam).toString());
  250. var i;
  251. var query = [];
  252. var token = randomString();
  253. var offerMessage = config.domain + ' - Token zabezpieczający oferty: ' + token;
  254.  
  255. // Itemy do oferty
  256. var items = result[2].items;
  257.  
  258. // Mamy co najmniej jeden prawidłowy item
  259. if (Object.keys(items).length > 0) {
  260. items.forEach(function (item) {
  261. // Wybieranie skinów
  262. // console.log(JSON.stringify(msg));
  263. // console.log(JSON.stringify(item));
  264.  
  265. if (parseInt(msg.my) === 132) {
  266. console.log('Uzytkownik chce wybrac itemy.');
  267. offer.addMyItem(item);
  268. query.push('`item_id` = ' + parseInt(item.assetid));
  269. }
  270. // Depozyt
  271. else {
  272. console.log('Uzytkownik chce wyslac itemy.');
  273. offer.addTheirItem(item);
  274. }
  275. });
  276. // Wyślij powyższą ofertę (lokalną) na serwery Steam
  277. offer.send(offerMessage, msg.token, function (error, status) {
  278. if (error) {
  279. // Wystąpił błąd
  280. // Wybieranie skinów
  281. if (parseInt(msg.my) === 132) {
  282. var bot_id = process.argv[2];
  283. var max = config.bots.length - 1;
  284.  
  285. if (process.argv[2] < max) {
  286. bot_id++;
  287. } else {
  288. bot_id = 0;
  289. }
  290. for (i = 0; i < msg.items.length; ++i) {
  291. msg.items[i].bot = bot_id;
  292. }
  293. if (msg.count > 0) {
  294. msg.count++;
  295. } else {
  296. msg.count = 1;
  297. }
  298. if (msg.count < 6) {
  299. socket.emit('create offer', msg);
  300. } else {
  301. socket.emit('user-info', {
  302. msg: 'Nie możemy wysłać chwilowo oferty wymiany. Spróbuj ponownie później.<br/>(' + error + ")",
  303. user: msg.steam,
  304. type: 'danger',
  305. dimiss: true,
  306. delay: 10000
  307. });
  308. }
  309. } else {
  310. socket.emit('user-info', {
  311. msg: 'Nie możemy wysłać chwilowo oferty wymiany. Spróbuj ponownie później.<br/>(' + error + ")",
  312. user: msg.steam,
  313. type: 'danger',
  314. dimiss: true,
  315. delay: 10000
  316. });
  317. }
  318. socket.emit('new_items');
  319. } else {
  320. // Oferta została wysłana
  321. console.log('Oferta została wysłana ' + offer.id);
  322.  
  323. socket.emit('user-info', {
  324. msg: '<p class="text-center">Oferta została wysłana.<br/><a target="_blank" href="https://steamcommunity.com/tradeoffer/' + offer.id + '/">Przyjmij ofertę.</a><br/>\
  325. Token zabezpieczający oferty: ' + token + '</p>',
  326. user: msg.steam,
  327. type: 'success',
  328. dimiss: true,
  329. delay: 30000
  330. });
  331. socket.emit('new_items');
  332.  
  333. // Wybieranie skinów
  334. if (parseInt(msg.my) === 132) {
  335. var sql = "UPDATE `items` SET `status`='1' WHERE " + query.join(' OR ');
  336. connection.query(sql, function (err, rows, fields) {
  337. if (err) {
  338. throw err;
  339. }
  340. });
  341. socket.emit('new_items');
  342. connection.query("INSERT INTO `offers` SET `status`='0', `offer_id`='"+offer.id+"', `bot_id`='"+process.argv[2]+"', `hash`='"+token+"', `user_steam`='"+msg.steam+"', `type`='1'", function (err, rows, fields) {
  343. if (err) {
  344. throw err;
  345. }
  346. });
  347. } else {
  348. connection.query("INSERT INTO `offers` SET `status`='0', `offer_id`='"+offer.id+"', `bot_id`='"+process.argv[2]+"', `hash`='"+token+"', `user_steam`='"+msg.steam+"', `type`='0'", function (err, rows, fields){
  349. if (err) {
  350. throw err;
  351. }
  352. });
  353. }
  354. }
  355. });
  356. // ???
  357. connection.query("UPDATE `bots` SET `time` = UNIX_TIMESTAMP(NOW()) WHERE `num` = '" + process.argv[2] + "'", function (error, rows, fields) {
  358. if (error) {
  359. throw error;
  360. }
  361. });
  362. }
  363. // Brak itemów
  364. else {
  365. socket.emit('user-info', {
  366. msg: 'Brak itemów do wysłania. Nie możemy wysłać oferty wymiany.',
  367. user: msg.steam,
  368. type: 'danger',
  369. dimiss: true,
  370. delay: 10000
  371. });
  372. }
  373. });
  374. // END
  375. return false;
  376.  
  377.  
  378.  
  379. console.log('Create offer');
  380.  
  381. var offer = manager.createOffer((msg.steam).toString());
  382. var i;
  383. var query = [];
  384. var ile = 0;
  385. for (i = 0; i < msg.items.length; ++i){
  386. if (msg.items[i].bot == process.argv[2]) {
  387. var item = {
  388. assetid: msg.items[i].item,
  389. appid: 730,
  390. contextid: 2,
  391. amount: 1
  392. };
  393. if (msg.my == 132) {
  394. // Sprawdź item
  395. console.log('Sprawdz item');
  396. connection.query("SELECT * FROM `items` WHERE `item_id` = '" + parseInt(item.assetid) + "' LIMIT 1", function (err, rows, fields) {
  397. console.log(err);
  398. console.log(rows);
  399. if (err) {
  400. throw err;
  401. }
  402. rows.forEach(function (row, callback) {
  403. console.log('addMyItem #1');
  404. if (parseInt(row.prowizja) === 0 && parseInt(row.game_id) === 0) {
  405. // Wygląda na to, że możemy wysłać ten item
  406. console.log('addMyItem #2');
  407. offer.addMyItem(item);
  408. query.push('`item_id`=\'' + parseInt(row.item_id) + '\'');
  409. ile++;
  410. } else {
  411. popup = true;
  412. }
  413. });
  414. });
  415. } else {
  416. offer.addTheirItem(item);
  417. ile++;
  418. }
  419. // ile++;
  420. }
  421. }
  422. var token = randomString();
  423. var text = config.domain+' - Token zabezpieczający oferty: '+ token;
  424.  
  425. console.log('Prep finished');
  426. console.log('ile = ' + ile);
  427. if(ile > 0){
  428. console.log('Send trade offer');
  429. offer.send(text, msg.token, function(err, status){
  430. if(err){
  431. console.log(err);
  432. if(msg.my != 132){
  433. var bot_id = process.argv[2];
  434. var max = config.bots.length-1;
  435. if(process.argv[2] < max){
  436. bot_id++;
  437. }else{
  438. bot_id = 0;
  439. }
  440. for (i = 0; i < msg.items.length; ++i){
  441. msg.items[i].bot = bot_id;
  442. }
  443. if(msg.count > 0){
  444. msg.count++;
  445. }else{
  446. msg.count = 1;
  447. }
  448. if(msg.count < 6){
  449. socket.emit('create offer', msg);
  450. }else{
  451. socket.emit('user-info', {msg: 'Nie możemy wysłać chwilowo oferty wymiany. Spróbuj ponownie później.<br/>('+err+")",
  452. user: msg.steam,
  453. type: 'danger',
  454. dimiss: true,
  455. delay: 10000});
  456. }
  457. }else{
  458. socket.emit('user-info', {msg: 'Nie możemy wysłać chwilowo oferty wymiany. Spróbuj ponownie później.<br/>('+err+")",
  459. user: msg.steam,
  460. type: 'danger',
  461. dimiss: true,
  462. delay: 10000});
  463. }
  464. socket.emit('new_items');
  465. }else{
  466. console.log('Oferta pobrania skinów wyslana... '+offer.id);
  467. socket.emit('user-info', {
  468. msg: '<p class="text-center">Oferta została wysłana.<br/>\
  469. <a target="_blank" href="https://steamcommunity.com/tradeoffer/'+offer.id+'/">Przyjmij ofertę.</a><br/>\
  470. Token zabezpieczający oferty: '+token+'</p>',
  471. user: msg.steam,
  472. type: 'success',
  473. dimiss: true,
  474. delay: 30000
  475. });
  476. socket.emit('new_items');
  477.  
  478. if(msg.my == 132){
  479. var sql = "UPDATE `items` SET `status`='1' WHERE "+query.join(' OR ');
  480. console.log(sql);
  481. connection.query(sql, function(err, rows, fields){
  482. if (err) throw err;
  483. });
  484. socket.emit('new_items');
  485. connection.query("INSERT INTO `offers` SET `status`='0', `offer_id`='"+offer.id+"', `bot_id`='"+process.argv[2]+"', `hash`='"+token+"', `user_steam`='"+msg.steam+"', `type`='1'", function(err, rows, fields){
  486. if (err) throw err;
  487. });
  488. }else{
  489. connection.query("INSERT INTO `offers` SET `status`='0', `offer_id`='"+offer.id+"', `bot_id`='"+process.argv[2]+"', `hash`='"+token+"', `user_steam`='"+msg.steam+"', `type`='0'", function(err, rows, fields){
  490. if (err) throw err;
  491. });
  492. }
  493. }
  494. connection.query("UPDATE `bots` SET `time`=UNIX_TIMESTAMP(NOW()) WHERE `num`='"+process.argv[2]+"'", function(err, rows, fields){
  495. if (err) throw err;
  496. });
  497. });
  498. }
  499.  
  500. console.log('popup = ' + popup);
  501. }
  502. });
  503.  
  504. socket.on('refresh_offer', function(data){
  505. if(data.bot_id == process.argv[2]){
  506. console.log(data.offer_id);
  507. manager.getOffer(data.offer_id, function(err, offer){
  508. if(err){console.log(err);}
  509. offer.getReceivedItems(function(err, items){
  510. if(err){console.log(err);}
  511. if(items.length > 0){
  512. var items2 = [];
  513. for(var k=0; k<items.length; k++){
  514. items2.push(items[k].assetid);
  515. }
  516. request({
  517. uri: "http://luckyshots.pl/ajax.php?s=refresh_offer&bot_id="+data.bot_id+"&user="+data.user+"&items="+JSON.stringify(items2),
  518. }, function(error, response, body){
  519. if(error){console.log(error);}
  520. console.log(body);
  521. socket.emit('refresh_offer_return', body);
  522. socket.emit('new_items');
  523. });
  524. }
  525. });
  526. });
  527. }
  528. });
  529. setInterval(function(){
  530. if(ready == true){
  531. var time = Math.floor(Date.now() / 1000);
  532. var key = SteamTotp.getConfirmationKey(twofactor.identity_secret, time, 'conf');
  533. community.getConfirmations(time, key, function(err, confirmations){
  534. if(err){console.log("Confimration error: "+err);}
  535. if(confirmations != undefined){
  536. if(confirmations.length > 0){
  537. for(i=0; i<confirmations.length; i++){
  538. potwierdz_wymiane(confirmations[i].id, confirmations[i].key);
  539. }
  540. }
  541. }
  542. });
  543. }
  544. }, 5000);
  545.  
  546. function potwierdz_wymiane(id, key){
  547. var timekey2=Math.round(Date.now() / 1000);
  548. var confirmationkey2 = SteamTotp.getConfirmationKey(twofactor.identity_secret, timekey2, "allow");
  549. community.respondToConfirmation(id, key, timekey2, confirmationkey2, true, function(err){
  550. if(err){
  551. console.log("Confirmation #"+id+" : "+err);
  552. setTimeout(potwierdz_wymiane(id, key), 5000);
  553. }
  554. });
  555. }
  556.  
  557. var timer = setInterval(function(){
  558. if(ready == true){
  559. var game;
  560. var user;
  561. var items = [];
  562.  
  563. connection.query("SELECT * FROM `offers` WHERE `status`='0' AND `bot_id`='"+process.argv[2]+"' ORDER BY `time` LIMIT 1", function(err, rows, fields){
  564. if (err) throw err;
  565. rows.forEach(function(row, callback){
  566. manager.getOffer(row.offer_id, function(err, offer){
  567. if (err) console.log(err);
  568. if(offer != undefined){
  569. //console.log(offer.id+" "+TradeOfferManager.getStateName(offer.state));
  570. if(offer.state == TradeOfferManager.ETradeOfferState.Accepted){
  571. var user_id = '';
  572. connection.query('SELECT * FROM `users` WHERE `steam_id`=\''+offer.partner.accountid+'\' LIMIT 1', function(err, rows, fields){
  573. if (err) throw err;
  574. rows.forEach(function(row, callback){
  575. user_id = row.id;
  576. });
  577. });
  578.  
  579. offer.getReceivedItems(function(err, items){
  580. if(err){
  581. console.log("Couldn't get received items: " + err);
  582. }else{
  583. if(items.length > 0){
  584. for(var k=0; k<items.length; k++){
  585. var temp_item = {user: user_id, item: items[k]};
  586. connection.query("SELECT * FROM `items` WHERE `item_id`='"+items[k].id+"'", (function(temp_item){
  587. return function(err, rows, fields) {
  588. if(rows.length == 0){
  589. connection.query("INSERT INTO `items` SET `user_id`='"+temp_item.user+"', `item_id`='"+temp_item.item.id+"', `name`='"+temp_item.item.market_hash_name+"', `image`='"+temp_item.item.icon_url+"', `bot_id`='"+process.argv[2]+"'", function(err, rows, fields){
  590. if (err) throw err;
  591. });
  592. console.log(temp_item.item.market_hash_name);
  593. socket.emit('new_items', temp_item.user);
  594. }
  595. };
  596. })(temp_item));
  597. }
  598. socket.emit('new_items', user_id);
  599. connection.query("UPDATE `offers` SET `status`='1', `time`=UNIX_TIMESTAMP(NOW()) WHERE `offer_id`='"+offer.id+"'", function(err, rows, fields){
  600. if (err) throw err;
  601. });
  602. }
  603. }
  604. });
  605.  
  606. if(offer.itemsToGive.length > 0){
  607. for(var it = 0; it<offer.itemsToGive.length; it++){
  608. connection.query("DELETE FROM `items` WHERE `item_id`='"+offer.itemsToGive[it].id+"'", function(err, rows, fields){
  609. if (err) throw err;
  610. });
  611. socket.emit('new_items', user_id);
  612. }
  613. connection.query("UPDATE `offers` SET `status`='1', `time`=UNIX_TIMESTAMP(NOW()) WHERE `offer_id`='"+offer.id+"'", function(err, rows, fields){
  614. if (err) throw err;
  615. });
  616. }
  617. }else if((offer.state == 1) || (offer.state == 4) || (offer.state == 5) || (offer.state == 6) || (offer.state == 7) || (offer.state == 8) || (offer.state == 10)){
  618. connection.query("UPDATE `offers` SET `status`='2', `time`=UNIX_TIMESTAMP(NOW()) WHERE `offer_id`='"+offer.id+"'", function(err, rows, fields){
  619. if (err) throw err;
  620. });
  621. if(offer.itemsToGive.length > 0){
  622. for(var it = 0; it<offer.itemsToGive.length; it++){
  623. connection.query("UPDATE `items` SET `status`='0' WHERE `item_id`='"+offer.itemsToGive[it].id+"'", function(err, rows, fields){
  624. if (err) throw err;
  625. });
  626. }
  627. }
  628. socket.emit('new_items');
  629. }else if(offer.state == 11){
  630. connection.query("UPDATE `offers` SET `time`=UNIX_TIMESTAMP(NOW()), `status`='4' WHERE `offer_id`='"+offer.id+"'", function(err, rows, fields){
  631. if (err) throw err;
  632. });
  633. if(offer.itemsToGive.length > 0){
  634. for(var it = 0; it<offer.itemsToGive.length; it++){
  635. connection.query("UPDATE `items` SET `status`='0' WHERE `item_id`='"+offer.itemsToGive[it].id+"'", function(err, rows, fields){
  636. if (err) throw err;
  637. });
  638. }
  639. }
  640. socket.emit('new_items');
  641. }else{
  642. if((Date.parse(offer.created) / 1000) + 300 < Math.floor(Date.now() / 1000)){
  643. offer.cancel();
  644. console.log('Anulowanie oferty #'+offer.id+' (ponad 15 min)');
  645. connection.query("UPDATE `offers` SET `time`=UNIX_TIMESTAMP(NOW()), `status`='3' WHERE `offer_id`='"+offer.id+"'", function(err, rows, fields){
  646. if (err) throw err;
  647. });
  648. if(offer.itemsToGive.length > 0){
  649. for(var it = 0; it<offer.itemsToGive.length; it++){
  650. connection.query("UPDATE `items` SET `status`='0' WHERE `item_id`='"+offer.itemsToGive[it].id+"'", function(err, rows, fields){
  651. if (err) throw err;
  652. });
  653. }
  654. }
  655. socket.emit('new_items');
  656. }else{
  657. connection.query("UPDATE `offers` SET `time`=UNIX_TIMESTAMP(NOW()) WHERE `offer_id`='"+offer.id+"'", function(err, rows, fields){
  658. if (err) throw err;
  659. });
  660. // var time = Math.floor(Date.now() / 1000);
  661. // var key = SteamTotp.getConfirmationKey(twofactor.identity_secret, time, 'conf');
  662. // community.getConfirmations(time, key, function(err, confirmations){
  663. // if(confirmations != undefined){
  664. // for(i=0; i<confirmations.length; i++){
  665. // var timekey2=Math.round(Date.now() / 1000);
  666. // var confirmationkey2 = SteamTotp.getConfirmationKey(twofactor.identity_secret, timekey2, "allow");
  667.  
  668. // community.respondToConfirmation(confirmations[i].id, confirmations[i].key, timekey2, confirmationkey2, true, function(err){
  669. // if(err){console.log(err);}
  670. // });
  671. // }
  672. // }
  673. // });
  674. }
  675. }
  676. }
  677. });
  678. });
  679. });
  680. }
  681. }, 2500);
  682.  
  683. var timer2 = setInterval(function(){
  684. if(ready == true){
  685. var game;
  686. var user;
  687. var items = [];
  688.  
  689. connection.query("SELECT * FROM `offers` WHERE `status`='4' AND `bot_id`='"+process.argv[2]+"' ORDER BY `time` LIMIT 1", function(err, rows, fields){
  690. if (err) throw err;
  691. rows.forEach(function(row, callback){
  692. manager.getOffer(row.offer_id, function(err, offer){
  693. if (err) console.log(err);
  694. if(offer != undefined){
  695. console.log(offer.id+" "+TradeOfferManager.getStateName(offer.state));
  696. if(offer.state == TradeOfferManager.ETradeOfferState.Accepted){
  697. var user_id = '';
  698. connection.query('SELECT * FROM `users` WHERE `steam_id`=\''+offer.partner.accountid+'\' LIMIT 1', function(err, rows, fields){
  699. if (err) throw err;
  700. rows.forEach(function(row, callback){
  701. user_id = row.id;
  702. });
  703. });
  704.  
  705. offer.getReceivedItems(function(err, items){
  706. if(err){
  707. console.log("Couldn't get received items: " + err);
  708. }else{
  709. if(items.length > 0){
  710. for(var k=0; k<items.length; k++){
  711. var temp_item = {user: user_id, item: items[k]};
  712. connection.query("SELECT * FROM `items` WHERE `item_id`='"+items[k].id+"'", (function(temp_item){
  713. return function(err, rows, fields) {
  714. if(rows.length == 0){
  715. connection.query("INSERT INTO `items` SET `user_id`='"+temp_item.user+"', `item_id`='"+temp_item.item.id+"', `name`='"+temp_item.item.market_hash_name+"', `image`='"+temp_item.item.icon_url+"', `bot_id`='"+process.argv[2]+"'", function(err, rows, fields){
  716. if (err) throw err;
  717. });
  718. console.log(temp_item.item.market_hash_name);
  719. socket.emit('new_items', temp_item.user);
  720. }
  721. };
  722. })(temp_item));
  723. }
  724. socket.emit('new_items', user_id);
  725. connection.query("UPDATE `offers` SET `status`='1', `time`=UNIX_TIMESTAMP(NOW()) WHERE `offer_id`='"+offer.id+"'", function(err, rows, fields){
  726. if (err) throw err;
  727. });
  728. }
  729. }
  730. });
  731.  
  732. if(offer.itemsToGive.length > 0){
  733. for(var it = 0; it<offer.itemsToGive.length; it++){
  734. connection.query("DELETE FROM `items` WHERE `item_id`='"+offer.itemsToGive[it].id+"'", function(err, rows, fields){
  735. if (err) throw err;
  736. });
  737. socket.emit('new_items', user_id);
  738. }
  739. connection.query("UPDATE `offers` SET `status`='1', `time`=UNIX_TIMESTAMP(NOW()) WHERE `offer_id`='"+offer.id+"'", function(err, rows, fields){
  740. if (err) throw err;
  741. });
  742. }
  743. }else if((offer.state == 1) || (offer.state == 4) || (offer.state == 5) || (offer.state == 6) || (offer.state == 7) || (offer.state == 8) || (offer.state == 10)){
  744. connection.query("UPDATE `offers` SET `status`='2', `time`=UNIX_TIMESTAMP(NOW()) WHERE `offer_id`='"+offer.id+"'", function(err, rows, fields){
  745. if (err) throw err;
  746. });
  747. if(offer.itemsToGive.length > 0){
  748. for(var it = 0; it<offer.itemsToGive.length; it++){
  749. connection.query("UPDATE `items` SET `status`='0' WHERE `item_id`='"+offer.itemsToGive[it].id+"'", function(err, rows, fields){
  750. if (err) throw err;
  751. });
  752. }
  753. }
  754. socket.emit('new_items');
  755. }else if(offer.state == 11){
  756. connection.query("UPDATE `offers` SET `time`=UNIX_TIMESTAMP(NOW()), `status`='4' WHERE `offer_id`='"+offer.id+"'", function(err, rows, fields){
  757. if (err) throw err;
  758. });
  759. if(offer.itemsToGive.length > 0){
  760. for(var it = 0; it<offer.itemsToGive.length; it++){
  761. connection.query("UPDATE `items` SET `status`='0' WHERE `item_id`='"+offer.itemsToGive[it].id+"'", function(err, rows, fields){
  762. if (err) throw err;
  763. });
  764. }
  765. }
  766. socket.emit('new_items');
  767. }else{
  768. if((Date.parse(offer.created) / 1000) + 300 < Math.floor(Date.now() / 1000)){
  769. offer.cancel();
  770. console.log('Anulowanie oferty #'+offer.id+' (ponad 15 min)');
  771. connection.query("UPDATE `offers` SET `time`=UNIX_TIMESTAMP(NOW()), `status`='3' WHERE `offer_id`='"+offer.id+"'", function(err, rows, fields){
  772. if (err) throw err;
  773. });
  774. if(offer.itemsToGive.length > 0){
  775. for(var it = 0; it<offer.itemsToGive.length; it++){
  776. connection.query("UPDATE `items` SET `status`='0' WHERE `item_id`='"+offer.itemsToGive[it].id+"'", function(err, rows, fields){
  777. if (err) throw err;
  778. });
  779. }
  780. }
  781. socket.emit('new_items');
  782. }else{
  783. connection.query("UPDATE `offers` SET `time`=UNIX_TIMESTAMP(NOW()) WHERE `offer_id`='"+offer.id+"'", function(err, rows, fields){
  784. if (err) throw err;
  785. });
  786. }
  787. }
  788. }
  789. });
  790. });
  791. });
  792. }
  793. }, 60000);
  794.  
  795. manager.on('pollData', function(pollData) {
  796. fs.writeFile('polldata_'+config.bots[process.argv[2]].login+'.json', JSON.stringify(pollData));
  797. });
  798.  
  799. // manager.on('newOffer', function(offer) {
  800. // console.log("New offer #" + offer.id + " from " + offer.partner.getSteam3RenderedID());
  801. // offer.cancel();
  802. // });
  803.  
  804. function randomString(){
  805. var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
  806. var string_length = 10;
  807. var randomstring = '';
  808. for (var i=0; i<string_length; i++) {
  809. var rnum = Math.floor(Math.random() * chars.length);
  810. randomstring += chars.substring(rnum,rnum+1);
  811. }
  812. return randomstring;
  813. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement