Advertisement
Guest User

Untitled

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