Advertisement
Guest User

Tradebot

a guest
Sep 1st, 2015
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.49 KB | None | 0 0
  1. var admin = 'S###';
  2.  
  3. var logOnOptions = {
  4. accountName: '+++',
  5. password: '###'
  6. };
  7. var GameTime = 120;
  8.  
  9.  
  10. ////
  11.  
  12. var authCode = '###';
  13.  
  14. var globalSessionID;
  15.  
  16. if (require('fs').existsSync('sentry_'+logOnOptions['accountName']+'.hash')) {
  17. logOnOptions['shaSentryfile'] = require('fs').readFileSync('sentry_'+logOnOptions['accountName']+'.hash');
  18. } else if (authCode != '') {
  19. logOnOptions['authCode'] = authCode;
  20. }
  21.  
  22. var sitename;
  23.  
  24. sitename = "http://csgotestjackpot.square7.ch/";
  25. var Steam = require('steam');
  26. var SteamTradeOffers = require('steam-tradeoffers');
  27. var mysql = require('mysql');
  28. var request = require("request");
  29. var steamuserinfo = require('steam-userinfo');
  30.  
  31. steamuserinfo.setup("02A3EEC199EB1B3932E94AA3297C8585");
  32.  
  33. var mysqlInfo;
  34. mysqlInfo = {
  35. host : 'localhost',
  36. user : 'csg###t',
  37. password : 'm###',
  38. database : 'cs###pot',
  39. charset : 'utf8_general_ci'
  40. };
  41.  
  42. var mysqlConnection = mysql.createConnection(mysqlInfo);
  43.  
  44. var steam = new Steam.SteamClient();
  45. var offers = new SteamTradeOffers();
  46.  
  47. var recheck = true;
  48.  
  49. steam.logOn(logOnOptions);
  50.  
  51. steam.on('debug', console.log);
  52.  
  53. function getUserName(steamid) {
  54. steamuserinfo.getUserInfo(steamid, function(error, data){
  55. if(error) throw error;
  56. var datadec = JSON.parse(JSON.stringify(data.response));
  57. return (datadec.players[0].personaname);
  58. });
  59. }
  60.  
  61. function proceedWinners() {
  62. var url = 'http://'+sitename+'/getwinner34634f.php';
  63. request(url, function(error, response, body){});
  64. }
  65.  
  66. var locked=false,proceeded;
  67. var itemscopy;
  68. var detected=false;
  69. var detected2=false;
  70. function CheckTimer() {
  71. if(locked == true) return;
  72. locked = true;
  73. if(recheck == true) {
  74. recheck = false;
  75. checkoffers(1000);
  76. }
  77. mysqlConnection.query('SELECT `value` FROM `info` WHERE `name`=\'current_game\'', function(err, rows, fields) {
  78. if(err) return;
  79. mysqlConnection.query('SELECT `starttime` FROM `games` WHERE `id`=\''+rows[0].value+'\'', function(errs, rowss, fieldss) {
  80. if(errs) return;
  81. var timeleft;
  82. if(rowss[0].starttime == 2147483647) timeleft = GameTime;
  83. else {
  84. var unixtime = Math.round(new Date().getTime()/1000.0);
  85. timeleft = rowss[0].starttime+GameTime-unixtime;
  86. if(timeleft < 0) timeleft = 0;
  87. }
  88. if(timeleft == 0) {
  89. if(proceeded == true) return;
  90. proceedWinners();
  91. proceeded = true;
  92. } else proceeded = false;
  93. });
  94. });
  95. detected2 = false;
  96. offers.loadMyInventory({
  97. appId: 730,
  98. contextId: 2
  99. }, function(err, itemx) {
  100. if(err) {
  101. steam.webLogOn(function(newCookie) {
  102. offers.setup({
  103. sessionID: globalSessionID,
  104. webCookie: newCookie
  105. }, function(err) {
  106. if (err) {
  107. }
  108. });
  109. });
  110. return;
  111. }
  112. if(detected2 == true) {
  113. return;
  114. }
  115. detected2 = true;
  116. itemscopy = itemx;
  117. detected = false;
  118. mysqlConnection.query('SELECT * FROM `queue` WHERE `status`=\'active\'', function(err, row, fields) {
  119. if(err) {
  120. return;
  121. }
  122. if(detected == true) {
  123. return;
  124. }
  125. detected = true;
  126. for(var i=0; i < row.length; i++) {
  127. var gameid = row[i].id;
  128. mysqlConnection.query('UPDATE `queue` SET `status`=\'sent\' WHERE `id`=\''+gameid+'\'', function(err, row, fields) {});
  129. var sendItems = (row[i].items).split('/');
  130. var item=[],num=0;
  131. for (var x = 0; x < itemscopy.length; x++) {
  132. for(var j=0; j < sendItems.length; j++) {
  133. if (itemscopy[x].tradable && (itemscopy[x].market_name).indexOf(sendItems[j]) == 0) {
  134. sendItems[j] = "FASGASFHGASFHGFasdasdasd";
  135. item[num] = {
  136. appid: 730,
  137. contextid: 2,
  138. amount: itemscopy[x].amount,
  139. assetid: itemscopy[x].id
  140. }
  141. num++;
  142. }
  143. }
  144. }
  145. if (num > 0) {
  146. var gamenum = row[i].id;
  147. offers.makeOffer ({
  148. partnerSteamId: row[i].userid,
  149. itemsFromMe: item,
  150. accessToken: row[i].token,
  151. itemsFromThem: [],
  152. message: 'Ваш выигрыш на сайте '+sitename+' в игре #'+gamenum
  153. }, function(err, response){
  154. if (err) {
  155. return;
  156. }
  157. console.log('Trade offer for queue '+gamenum+' sent!');
  158. });
  159. }
  160. }
  161. });
  162. });
  163. setTimeout(function(){locked = false;},100000);
  164. }
  165.  
  166. steam.on('loggedOn', function(result) {
  167. console.log('Logged in!');
  168. steam.setPersonaState(Steam.EPersonaState.LookingToTrade);
  169. steam.addFriend("19901770");
  170. steam.sendMessage(admin,"Я включился!");
  171. });
  172.  
  173. steam.on('webSessionID', function(sessionID) {
  174. globalSessionID = sessionID;
  175. steam.webLogOn(function(newCookie) {
  176. offers.setup({
  177. sessionID: sessionID,
  178. webCookie: newCookie
  179. }, function(err) {
  180. if (err) {
  181. throw err;
  182. }
  183. setInterval(CheckTimer,1000);
  184. });
  185. });
  186. });
  187.  
  188. steam.on('friendMsg', function(steamID, message, type) {
  189. if(type != Steam.EChatEntryType.ChatMsg) return;
  190. if(steamID == admin) {
  191. if(message.indexOf("/sendallitems") == 0) {
  192. offers.loadMyInventory({
  193. appId: 730,
  194. contextId: 2
  195. }, function(err, items) {
  196. if(err) {
  197. steam.sendMessage(steamID, 'Не могу загрузить свой инвентарь, попробуй ещё раз');
  198. steam.webLogOn(function(newCookie) {
  199. offers.setup({
  200. sessionID: globalSessionID,
  201. webCookie: newCookie
  202. }, function(err) {
  203. if (err) {
  204. }
  205. });
  206. });
  207. return;
  208. }
  209. var item=[],num=0;
  210. for (var i = 0; i < items.length; i++) {
  211. if (items[i].tradable) {
  212. item[num] = {
  213. appid: 730,
  214. contextid: 2,
  215. amount: items[i].amount,
  216. assetid: items[i].id
  217. }
  218. num++;
  219. }
  220. }
  221. if (num > 0) {
  222. offers.makeOffer ({
  223. partnerSteamId: steamID,
  224. itemsFromMe: item,
  225. itemsFromThem: [],
  226. message: ''
  227. }, function(err, response){
  228. if (err) {
  229. throw err;
  230. }
  231. steam.sendMessage(steamID, 'Обмен отправлен!');
  232. });
  233. }
  234. });
  235. } else if(message.indexOf("/send") == 0) {
  236. var params = message.split(' ');
  237. if(params.length == 1) return steam.sendMessage(steamID, 'Формат: /send [название предмета]');
  238. offers.loadMyInventory({
  239. appId: 730,
  240. contextId: 2
  241. }, function(err, items) {
  242. if(err) {
  243. steam.sendMessage(steamID, 'Не могу загрузить свой инвентарь, попробуй ещё раз');
  244. steam.webLogOn(function(newCookie) {
  245. offers.setup({
  246. sessionID: globalSessionID,
  247. webCookie: newCookie
  248. }, function(err) {
  249. if (err) {
  250. }
  251. });
  252. });
  253. return;
  254. }
  255. var item=0;
  256. for (var i = 0; i < items.length; i++) {
  257. if((items[i].market_name).indexOf(params[1]) != -1) {
  258. item = items[i].id;
  259. break;
  260. }
  261. }
  262. if (item != 0) {
  263. offers.makeOffer ({
  264. partnerSteamId: steamID,
  265. itemsFromMe: [
  266. {
  267. appid: 730,
  268. contextid: 2,
  269. amount: 1,
  270. assetid: item
  271. }
  272. ],
  273. itemsFromThem: [],
  274. message: ''
  275. }, function(err, response){
  276. if (err) {
  277. throw err;
  278. }
  279. steam.sendMessage(steamID, 'Обмен отправлен!');
  280. });
  281. }
  282. });
  283. } else if(message.indexOf("/show") == 0) {
  284. var params = message.split(' ');
  285. offers.loadMyInventory({
  286. appId: 730,
  287. contextId: 2
  288. }, function(err, items) {
  289. if(err) {
  290. steam.sendMessage(steamID, 'Не могу загрузить свой инвентарь, попробуй ещё раз');
  291. steam.webLogOn(function(newCookie) {
  292. offers.setup({
  293. sessionID: globalSessionID,
  294. webCookie: newCookie
  295. }, function(err) {
  296. if (err) {
  297. }
  298. });
  299. });
  300. return;
  301. }
  302. steam.sendMessage(steamID,'Смотри: ');
  303. for (var i = 0; i < items.length; i++) {
  304. steam.sendMessage(steamID,'https://steamcommunity.com/profiles/76561197996897882/inventory/#730'+items[i].appid+'_'+items[i].contextid+'_'+items[i].id);
  305. }
  306. });
  307. }
  308. }
  309. steamuserinfo.getUserInfo(steamID, function(error, data){
  310. if(error) throw error;
  311. var datadec = JSON.parse(JSON.stringify(data.response));
  312. var name = datadec.players[0].personaname;
  313. console.log(name + ': ' + message); // Log it
  314. });
  315. //steam.sendMessage(steamID, 'I\'m a bot that accepts all your unwanted items. If you would like to grab a few crates from me, please request a trade.');
  316. });
  317.  
  318. function checkoffers(number) {
  319. if (number > 0) {
  320. offers.getOffers({
  321. get_received_offers: 1,
  322. active_only: 1,
  323. get_sent_offers: 0,
  324. get_descriptions: 1,
  325. language: "en_us"
  326. }, function(error, body) {
  327. if(error) return;
  328. if(body.response.trade_offers_received){
  329. body.response.trade_offers_received.forEach(function(offer) {
  330. if (offer.trade_offer_state == 2){
  331. if(offer.items_to_give) {
  332. offers.declineOffer({tradeOfferId: offer.tradeofferid});
  333. return;
  334. }
  335. mysqlConnection.query('SELECT `value` FROM `info` WHERE `name`=\'maxitems\'', function(err, row, fields) {
  336. if(offer.items_to_receive.length > row[0].value) {
  337. offers.declineOffer({tradeOfferId: offer.tradeofferid});
  338. offer.items_to_receive = [];
  339. mysqlConnection.query('INSERT INTO `messages` (`userid`,`msg`,`from`) VALUES (\''+offer.steamid_other+'\',\'toomuch\',\'System\')', function(err, row, fields) {});
  340. return;
  341. }
  342. });
  343. offers.loadPartnerInventory({partnerSteamId: offer.steamid_other, appId: 730, contextId: 2, tradeOfferId: offer.tradeofferid, language: "en"}, function(err, hitems) {
  344. if(err) {
  345. steam.webLogOn(function(newCookie) {
  346. offers.setup({
  347. sessionID: globalSessionID,
  348. webCookie: newCookie
  349. }, function(err) {
  350. if (err) {
  351. }
  352. });
  353. });
  354. recheck = true;
  355. return;
  356. }
  357. var items = offer.items_to_receive;
  358. var wgg=[],num=0;
  359. for (var i = 0; i < items.length; i++) {
  360. for(var j=0; j < hitems.length; j++) {
  361. if(items[i].assetid == hitems[j].id) {
  362. wgg[num] = hitems[j];
  363. num++;
  364. break;
  365. }
  366. }
  367. }
  368. var price=[];
  369. for(var i=0; i < num; i++) {
  370. if(wgg[i].appid != 730) {
  371. offers.declineOffer({tradeOfferId: offer.tradeofferid});
  372. mysqlConnection.query('INSERT INTO `messages` (`userid`,`msg`,`from`) VALUES (\''+offer.steamid_other+'\',\'onlycsgo\',\'System\')', function(err, row, fields) {});
  373. return;
  374. }
  375. if(wgg[i].market_name.indexOf("Souvenir") != -1) {
  376. offers.declineOffer({tradeOfferId: offer.tradeofferid});
  377. mysqlConnection.query('INSERT INTO `messages` (`userid`,`msg`,`from`) VALUES (\''+offer.steamid_other+'\',\'souvenir\',\'System\')', function(err, row, fields) {});
  378. return;
  379. }
  380. var itemname = wgg[i].market_name;
  381. var url = 'http://'+sitename+'/cost.php?item='+encodeURIComponent(itemname);
  382. (function(someshit) {
  383. request(url, function(error, response, body){
  384. if(!error && response.statusCode === 200){
  385. if(body == "notfound") { offers.declineOffer({tradeOfferId: offer.tradeofferid}); mysqlConnection.query('INSERT INTO `messages` (`userid`,`msg`,`from`) VALUES (\''+offer.steamid_other+'\',\'notavailable\',\'System\')', function(err, row, fields) {}); }
  386. else {
  387. wgg[someshit].cost = parseFloat(body);
  388. }
  389. } else offers.declineOffer({tradeOfferId: offer.tradeofferid});
  390. });})(i)
  391. }
  392. setTimeout(function() {
  393. var sum=0;
  394. for(var i=0; i < num; i++) {
  395. sum += wgg[i].cost;
  396. }
  397. mysqlConnection.query('SELECT `value` FROM `info` WHERE `name`=\'minbet\'', function(err, row, fields) {
  398. if(sum < row[0].value) {
  399. num = 0;
  400. offers.declineOffer({tradeOfferId: offer.tradeofferid});
  401. mysqlConnection.query('INSERT INTO `messages` (`userid`,`msg`,`from`) VALUES (\''+offer.steamid_other+'\',\'toosmall!\',\'System\')', function(err, row, fields) {});
  402. return;
  403. }
  404. });
  405. steamuserinfo.getUserInfo(offer.steamid_other, function(error, data){
  406. if(error) throw error;
  407. var datadec = JSON.parse(JSON.stringify(data.response));
  408. var name = datadec.players[0].personaname;
  409. var avatar = datadec.players[0].avatarfull;
  410.  
  411. if(num == 0) return;
  412.  
  413. mysqlConnection.query('SELECT `value` FROM `info` WHERE `name`=\'current_game\'', function(err, row, fields) {
  414. var current_game = (row[0].value);
  415. mysqlConnection.query('SELECT `cost`,`itemsnum` FROM `games` WHERE `id`=\''+current_game+'\'', function(err, row, fields) {
  416. var current_bank = parseFloat(row[0].cost);
  417. var itemsnum = row[0].itemsnum;
  418.  
  419. if(item.length > 0) {
  420. mysqlConnection.query('UPDATE `games` SET `starttime`=UNIX_TIMESTAMP() WHERE `id` = \'' + current_game + '\'', function(err, row, fields) {});
  421. }
  422.  
  423. for(var j=0; j < num; j++) {
  424. mysqlConnection.query('INSERT INTO `game' + current_game + '` (`userid`,`username`,`item`,`color`,`value`,`avatar`,`image`,`from`,`to`) VALUES (\'' + offer.steamid_other + '\',\'' + name + '\',\'' + wgg[j].market_name + '\',\'' + wgg[j].name_color + '\',\'' + wgg[j].cost + '\',\'' + avatar + '\',\'' + wgg[j].icon_url + '\',\''+current_bank+'\'+\'0\',\''+current_bank+'\'+\''+wgg[j].cost+'\')', function(err, row, fields) {});
  425. mysqlConnection.query('UPDATE `games` SET `itemsnum`=`itemsnum`+1, `cost`=`cost`+\''+wgg[j].cost+'\' WHERE `id` = \'' + current_game + '\'', function(err, row, fields) {});
  426. current_bank = parseFloat(current_bank + wgg[j].cost);
  427. itemsnum++;
  428. }
  429.  
  430.  
  431. if(itemsnum > 50) {
  432. proceedWinners();
  433. }
  434. offers.acceptOffer({tradeOfferId: offer.tradeofferid});
  435. console.log('Accepted trade offer #'+offer.tradeofferid+' by '+name+' ('+offer.steamid_other+')');
  436. });
  437. });
  438. });
  439. },3000);
  440. });
  441. }
  442. });
  443. }
  444. });
  445. }
  446. }
  447.  
  448. var pew;
  449. steam.on('tradeOffers', checkoffers);
  450.  
  451. steam.on('sentry', function(data) {
  452. require('fs').writeFileSync('sentry_'+logOnOptions['accountName']+'.hash', data);
  453. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement