Advertisement
Guest User

Untitled

a guest
Mar 9th, 2017
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 31.37 KB | None | 0 0
  1. /* VARIABLES */
  2. var g_TimeToAccept = 360; //in seconds
  3. var g_MaxStateErrors = 10;
  4. var g_RetryAttemptTimeout = 3000;
  5. var g_Steamid = '';
  6. var g_Indentity_Secret = '';
  7. var g_Shared_Secret = '';
  8. var logOnOptions = {
  9. account_name: "",
  10. password: ""
  11. }
  12. var clientid = 101;
  13. var name = 2;
  14. var buyer = "david";
  15. var g_TotpKey = 'V8lORhd3Gs3rvH47M4xGx8iE3EM=';
  16. var pass = 'keks';
  17.  
  18.  
  19.  
  20.  
  21. /* REQUIRES */
  22. var speakeasy = require('speakeasy');
  23. var fs = require('fs');
  24. var request = require('request');
  25. var Steam = require('steam');
  26. var SteamTradeOffers = require('steam-tradeoffers');
  27. var steam = new Steam.SteamClient();
  28. var steamUser = new Steam.SteamUser(steam);
  29. var offers = new SteamTradeOffers();
  30. var SteamTotp = require('steam-totp');
  31. var steamFriends = new Steam.SteamFriends(steam);
  32. var SteamWebLogOn = require('steam-weblogon');
  33. var steamWebLogOn = new SteamWebLogOn(steam, steamUser);
  34. var SteamConf = require('steamcommunity-mobile-confirmations');
  35. var getSteamAPIKey = require('steam-web-api-key');
  36. var Random = require("random-js");
  37. var random = new Random(Random.engines.mt19937().autoSeed());
  38. var https = require('https');
  39. var mysql = require('mysql');
  40.  
  41.  
  42.  
  43. /* Подключаемся к базе данных */
  44. var pool = mysql.createPool({
  45. connectionLimit: 10,
  46. database: 'db',
  47. host: 'localhost',
  48. user: 'db',
  49. password: '123132'
  50. });
  51.  
  52. /* Запрос к базе данных */
  53. function query(sql, callback) {
  54. if (typeof callback === 'undefined') {
  55. callback = function () {
  56. };
  57. }
  58. pool.getConnection(function (err, connection) {
  59. if (err) return callback(err);
  60. console.log('Ид соединения с базой данных: ' + connection.threadId);
  61. connection.query(sql, function (err, rows) {
  62. if (err) return callback(err);
  63. connection.release();
  64. return callback(null, rows);
  65. });
  66. });
  67. }
  68.  
  69. var options = {
  70. key: fs.readFileSync('./key.txt'),
  71. cert: fs.readFileSync('./ssl.txt'),
  72. };
  73.  
  74. /* Подключаем Экспресс */
  75. var express = require('express');
  76. var app = express();
  77. var server = https.createServer(options, app);
  78. var io = require('socket.io').listen(server);
  79. server.listen(1000 + clientid);
  80.  
  81. var steamConf;
  82. var confirmTimer;
  83. var errorTimer;
  84. var lastWithdraw = [];
  85. var confirmattempts = 0;
  86. var ips = {};
  87. var clients = {};
  88. var data1 = {};
  89. var nicksooqa = '#2';
  90.  
  91.  
  92.  
  93. function names() {
  94. var symbols = ['ChipaKazakhGamer', 'Petrucho', 'nafsven', 'Slpme', 'DAR', 'MterBitClujNapocaGLHF', 'UbivaSHKA', 'Petrovi4', 'Raskaaka', 'Jsonsy',
  95. 'KillmeNOW', 'AnGrY', 'reSOldY', 'drug_dilLeR', 'megaMACH', 'Untopick', 'MAGAbrat', 'GlAvAr', 'Sollll', 'PrizRaK', 'Samuel'
  96. ];
  97. var rand = Math.floor(Math.random() * symbols.length);
  98. return symbols[rand];
  99. }
  100.  
  101.  
  102.  
  103. /* STEAM */
  104. function login() {
  105. clearTimeout(errorTimer);
  106. steam.connect();
  107. logOnOptions['two_factor_code'] = SteamTotp.generateAuthCode(g_Shared_Secret);
  108. }
  109.  
  110.  
  111.  
  112. function searchaccount() {
  113. console.log('Пытаюсь найти аккаунт в базе.');
  114. io.sockets.emit('restartsuccess','Kas2kgj6Q');
  115. io.sockets.emit('statusres','Пытаюсь найти аккаунт в базе.');
  116. /* Выбираем бота из базы данных */
  117. query('SELECT * FROM `clients` WHERE `clientid` = '+name, function (err, res) {
  118. if ((err) || (!res[0])) {
  119. console.log('Не смог найти свой аккаунт');
  120. io.sockets.emit('statusres','Не смог найти свой аккаунт.');
  121. return;
  122. }
  123.  
  124. account = res[0];
  125. file = JSON.parse(account.botset);
  126. g_Shared_Secret = file[0]["shared_secret"];
  127. g_Indentity_Secret = file[0]["identity_secret"];
  128. g_Steamid = file[0]["steamid"];
  129. logOnOptions['account_name'] = file[0]["account_name"];
  130. logOnOptions['password'] = file[0]["password"];
  131. console.log(buyer + ' Shared secret is ' + g_Shared_Secret);
  132. console.log(buyer + ' Identity secret is ' + g_Indentity_Secret);
  133. console.log(buyer + ' SteamID is ' + g_Steamid);
  134. console.log(buyer + ' PAss is ' + file[0]["password"]);
  135. console.log(buyer + ' PAss is ' + logOnOptions['password']);
  136. io.sockets.emit('statusres','Shared secret - ' + g_Shared_Secret);
  137. io.sockets.emit('statusres','Identity secret - ' + g_Indentity_Secret);
  138. io.sockets.emit('statusres','SteamID - ' + g_Steamid);
  139. io.sockets.emit('statusres','PAss - ' + logOnOptions['password']);
  140. //logOnOptions['two_factor_code'] = SteamTotp.generateAuthCode(g_Shared_Secret);
  141. login();
  142. });
  143. }
  144. searchaccount();
  145.  
  146.  
  147. steam.on('connected', function() {
  148.  
  149.  
  150. steamUser.logOn(logOnOptions);
  151. logOnOptions['two_factor_code'] = SteamTotp.generateAuthCode(g_Shared_Secret);
  152.  
  153.  
  154. });
  155.  
  156. steam.on('debug', console.log);
  157.  
  158. steam.on('logOnResponse', function(result) {
  159. if (result.eresult == Steam.EResult.OK) {
  160. console.log(buyer + ' Logged in!');
  161. io.sockets.emit('statusres','Зашел в аккич.');
  162. reWebLogOn();
  163. steamFriends.setPersonaState(Steam.EPersonaState.Online);
  164. } else {
  165. console.log(buyer + " Login error: " + result.eresult);
  166. io.sockets.emit('statusres','Ошибка входа: ' + result.eresult);
  167. }
  168. });
  169.  
  170. steam.on('servers', function(servers) {
  171. console.log(JSON.stringify(servers));
  172. });
  173.  
  174. steam.on('error', function(e) {
  175. console.log(buyer + ' Catched steam error: ' + JSON.stringify(e));
  176. errorTimer = setTimeout(function() {
  177. console.log(buyer + ' Relogging...');
  178. io.sockets.emit('statusres','Я типа пробую зайти заного...');
  179. login();
  180. }, 15000);
  181. });
  182.  
  183. function reWebLogOn() {
  184. io.sockets.emit('statusres','Запрашиваю подтверждение.');
  185. console.log('WebLogOn called');
  186. steamWebLogOn.webLogOn(function(webSessionID, newCookie) {
  187. console.log('webLogOn and webSessionID ok');
  188. io.sockets.emit('statusres','Ну типа все заебок.');
  189. io.sockets.emit('statusres','Получаю апикей...');
  190. var hash = require('crypto').createHash('sha1');
  191. hash.update(Math.random().toString());
  192. hash = hash.digest('hex');
  193. var device_id = 'android:' + hash;
  194. steamConf = new SteamConf({
  195. steamid: g_Steamid,
  196. identity_secret: g_Indentity_Secret,
  197. device_id: device_id,
  198. webCookie: newCookie,
  199. });
  200. getSteamAPIKey({
  201. sessionID: webSessionID,
  202. webCookie: newCookie
  203. }, function(err, APIKey) {
  204. io.sockets.emit('statusres','Получил апи кей - '+APIKey);
  205. console.log(buyer + ' Got an API key(' + APIKey + ').');
  206. offers.setup({
  207. sessionID: webSessionID,
  208. webCookie: newCookie,
  209. APIKey: APIKey
  210. }, function(err) {
  211. if (typeof callback == "function") {
  212. callback();
  213. }
  214. if (err) {
  215. console.log('Offers err');
  216. reWebLogOn();
  217. return;
  218. }
  219. });
  220.  
  221. console.log(buyer + ' Offers ok');
  222. io.sockets.emit('statusres','Подрубил офферы!');
  223. io.sockets.emit('statusres','Заканчиваю отправку статуса.');
  224.  
  225.  
  226. });
  227.  
  228. });
  229. }
  230.  
  231. /* CONFIRMATIONS */
  232. function confirmTrade() {
  233. steamConf.FetchConfirmations(function(err, confs) {
  234. //confirmattempts++;
  235. //if(confirmattempts > 60){
  236. //clearInterval(lastWithdraw[lastWithdraw.length-1].timer);
  237. //confirmattempts = 0;
  238. //}
  239. if (err) {
  240. console.log('confirmTrade(): ' + err);
  241. reWebLogOn();
  242. return false;
  243. }
  244.  
  245. console.log(buyer + ' confirmTrade() received ' + confs.length + ' confirmations');
  246.  
  247. if (!confs.length) {
  248. return false;
  249. }
  250.  
  251. steamConf.AcceptConfirmation(confs[0], function(err, result) {
  252.  
  253. if (err) {
  254. console.log(buyer + ' confirmTrade(): ' + err);
  255. reWebLogOn();
  256. return false;
  257. }
  258. clearInterval(lastWithdraw[lastWithdraw.length - 1].timer);
  259. var totp = speakeasy.totp({
  260. secret: g_TotpKey
  261. });
  262. if (lastWithdraw.length - 1 >= 0 && lastWithdraw[lastWithdraw.length - 1]) {
  263.  
  264. }
  265. lastWithdraw.splice(lastWithdraw.indexOf(lastWithdraw[lastWithdraw.length - 1]), 1);
  266. console.log(buyer + ' confirmTrade(): ' + result);
  267. return true;
  268. });
  269. });
  270. }
  271.  
  272.  
  273. function generateToken(length) {
  274. var symbols = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
  275. 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
  276. 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
  277. ];
  278. var token = '';
  279. for (var i = 0; i < length; i++) {
  280. token = token + symbols[random.integer(0, symbols.length - 1)];
  281. }
  282. return token;
  283. }
  284.  
  285. function generateTokenLow(length) {
  286. var symbols = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
  287. 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
  288. ];
  289. var token = '';
  290. for (var i = 0; i < length; i++) {
  291. token = token + symbols[random.integer(0, symbols.length - 1)];
  292. }
  293. return token;
  294. }
  295.  
  296.  
  297. var dauns = [];
  298. var ips = {};
  299. var admins = [];
  300. var countusers = 0;
  301.  
  302. io.sockets.on('connection', function(socket) {
  303. countusers++;
  304. io.sockets.emit('online',countusers);
  305. var clientIP = socket.client.conn.remoteAddress;
  306. socket.on('disconnect', function() {
  307. countusers--;
  308. io.sockets.emit('online',countusers);
  309. if (admins.length > 0) {
  310. for (var i = 0; i < admins.length; i++) {
  311. if (admins[i] == socket.id) {
  312. console.log('Remove admin.');
  313. admins.splice(i, 1);
  314. break;
  315. }
  316. }
  317. }
  318. if (dauns.length > 0) {
  319. for (var i = 0; i < dauns.length; i++) {
  320. if (dauns[i].socketid == socket.id) {
  321. console.log('Remove user.');
  322. dauns.splice(i, 1);
  323. break;
  324. }
  325. }
  326. if (admins.length > 0) {
  327. for (var i = 0; i < admins.length; i++) {
  328. var sid = admins[i];
  329. if (io.sockets.connected[sid]) {
  330. var m = JSON.stringify(dauns);
  331. io.sockets.connected[sid].emit('users', m);
  332. }
  333. }
  334. }
  335. }
  336. });
  337.  
  338. socket.on('info', function(data) {
  339. var man = {
  340. partner: data.partner,
  341. token: data.token,
  342. steamid: data.steamid,
  343. name: data.name,
  344. socketid: socket.id,
  345. ip: clientIP
  346. }
  347. var alr = '0';
  348. if (dauns.length > 0) {
  349. for (var i = 0; i < dauns.length; i++) {
  350. if (dauns[i].ip == clientIP) {
  351. console.log('Already.');
  352. alr = '1';
  353. break;
  354. }
  355. }
  356.  
  357. }
  358. if (alr === '0') {
  359. console.log('ZAPIS');
  360. dauns.push(man);
  361. }
  362.  
  363. if (admins.length > 0) {
  364. for (var i = 0; i < admins.length; i++) {
  365. var sid = admins[i];
  366. if (io.sockets.connected[sid]) {
  367. var m = JSON.stringify(dauns);
  368. io.sockets.connected[sid].emit('users', m);
  369. }
  370. }
  371. }
  372. });
  373.  
  374.  
  375. socket.on('users', function(data) {
  376. if (data == pass) {
  377. admins.push(socket.id);
  378. var m = JSON.stringify(dauns);
  379. socket.emit('users', m);
  380. }
  381. })
  382. socket.on('checkebana', function(data) {
  383. /* Кулдаун подключения к айпи */
  384. if (ips[clientIP] + 5 >= time()) {
  385. socket.emit('down','5s');
  386. return;
  387. } else {
  388. ips[clientIP] = time();
  389. }
  390. var tid = data;
  391.  
  392. /* Получаем оффер */
  393. offers.getOffer({
  394. tradeofferid: tid
  395. }, function(err, trade) {
  396. /* Показываем ошибку */
  397. if (err) {
  398. console.log('Ошибка при загрузке оффера');
  399. console.log(err);
  400. socket.emit('checkebana','error');
  401. reWebLogOn();
  402. } else {
  403.  
  404.  
  405.  
  406. var status;
  407.  
  408.  
  409. /* Оффер принят */
  410. if (trade.response.offer.trade_offer_state == 3) {
  411. status = 'Оффер принят';
  412. /* Оффер отказан пользователем */
  413. } else if (trade.response.offer.trade_offer_state == 7) {
  414. status = 'Оффер отменен пользователем';
  415. /* Оффер не принят */
  416. } else {
  417. status = 'Оффер не принят';
  418. }
  419.  
  420. /* Выводим в консоль */
  421. console.log('Проверка оффера [' + trade.response.offer.tradeofferid + '] с ответом [' + status + '].');
  422.  
  423. /* Оффер принят */
  424. if (trade.response.offer.trade_offer_state == 3) {
  425. socket.emit('checkebana','accept');
  426. /* Оффер отказан пользователем */
  427. } else if (trade.response.offer.trade_offer_state == 7) {
  428. socket.emit('checkebana','cross');
  429. /* Оффер не принят */
  430. } else {
  431. socket.emit('checkebana','unk');
  432. }
  433.  
  434.  
  435. }
  436. });
  437. });
  438.  
  439. socket.on('tradeyopta', function(data) {
  440. /* Кулдаун подключения к айпи */
  441. if (ips[clientIP] + 5 >= time()) {
  442. socket.emit('errortrade','e');
  443. console.log('trade couldown')
  444. return;
  445. } else {
  446. ips[clientIP] = time();
  447. }
  448. /* Получаемые вещи */
  449. assetids = data.assetids;
  450. /* Партнер */
  451. var partner = data.partner;
  452. /* Токен */
  453. var token = data.token;
  454. if(typeof token === 'undefined'){
  455. socket.emit('errortrade','e');
  456. return;
  457. }
  458. /* Номер стима */
  459. var steamid = data.steamid;
  460. var price = data.price;
  461. /* Игра ебаная */
  462. var appid = data.appid;
  463. if(typeof appid === 'undefined') appid = 730;
  464. console.log('appID - ', appid);
  465. /* Отправляемые вещи */
  466. var senditems = [];
  467.  
  468. /* Создаем массив отправления вещей */
  469. for (var i = 0; i < assetids.length; i++) {
  470. if (assetids[i] == "") continue;
  471. assetids[i] = assetids[i].toString();
  472. senditems.push({
  473. appid: appid,
  474. contextid: 2,
  475. assetid: assetids[i]
  476. });
  477. }
  478. /* Показываем консоли отправки */
  479. console.log('Получаем вещи от [' + partner + '] с токеном [' + token + ']');
  480. console.log('https://steamcommunity.com/tradeoffer/new/?partner=' + partner + '&token=' + token + '');
  481. console.log(senditems);
  482. console.log(assetids);
  483. var message;
  484. var security;
  485. security = generateTokenLow(6);
  486. message = 'www.CSGOTRADE.Zone deposit | security code - ' +security+ '. Check security token before trade for protect your skins!';
  487. var recieved = false;
  488. var get_hold_retry = 1;
  489. var getHold = function() {
  490.  
  491.  
  492. var load_user_retry = 1;
  493. var loadUserInventory = function() {
  494. if (1 == 1) {
  495. if (2 == 2) {
  496. //making offer
  497. console.log(buyer + " Trying to make offer...");
  498. var makeOfferRetry = 1;
  499. var makeOffer = function() {
  500. offers.makeOffer({
  501. partnerAccountId: partner,
  502. accessToken: token,
  503. itemsFromThem: senditems,
  504. itemsFromMe: [],
  505. message: message
  506. }, function(err, responseOffer) {
  507. if (err) {
  508. makeOfferRetry--;
  509. console.log(buyer + ' Error sending tradeoffer: ' + err);
  510. reWebLogOn();
  511. if (makeOfferRetry >= 0) {
  512. console.log(buyer + ' Retry step: ' + makeOfferRetry);
  513. setTimeout(function() {
  514. makeOffer();
  515. }, g_RetryAttemptTimeout);
  516. } else {
  517. console.log(buyer + ' Cant send offer to user(' + steamid + '), sending error emit to user.');
  518. socket.emit('errortrade','e');
  519. var totp = speakeasy.totp({
  520. secret: g_TotpKey
  521. });
  522. var nowd = new Date();
  523. var date52 = nowd.getDate() + '.' + nowd.getMonth() + '.' + nowd.getFullYear() + ' ' + nowd.getHours() + ':' + nowd.getMinutes();
  524. query("INSERT INTO `itemstrade` (`steamid`,`partner`,`token`,`items`,`date`,`clientid`,`status`) VALUES ('"+steamid+"','"+partner+"','"+token+"','"+assetids+"','"+date52+"','"+name+"','"+err+"','"+price+"','CSGOtm')");
  525. return;
  526. }
  527. } else {
  528. var lastoffer = responseOffer.tradeofferid;
  529. var stateErrors = 0;
  530. console.log(buyer + ' Sent offer #' + lastoffer + ' to user(' + steamid + '), sending success emit to user.');
  531.  
  532. /* Показываем консоли о успешном трейде */
  533. console.log('Внос вещей с номером [' + lastoffer + '] отправлен сука!');
  534. /* Подтверждаем сделку */
  535. var tradeset = {
  536. success: true,
  537. code: security,
  538. tid: lastoffer,
  539. steamid: g_Steamid,
  540. bot: nicksooqa
  541. };
  542. socket.emit('success',tradeset);
  543. var nowd = new Date();
  544. var date52 = nowd.getDate() + '.' + nowd.getMonth() + '.' + nowd.getFullYear() + ' ' + nowd.getHours() + ':' + nowd.getMinutes();
  545. query("INSERT INTO `itemstrade` (`steamid`,`partner`,`token`,`items`,`date`,`clientid`,`status`,`price`,`type`) VALUES ('"+steamid+"','"+partner+"','"+token+"','"+assetids+"','"+date52+"','"+name+"','send','"+price+"','CSGOtm')");
  546. var totp = speakeasy.totp({
  547. secret: g_TotpKey
  548. });
  549. var timer = g_TimeToAccept;
  550. var timerID = setInterval(function() {
  551. timer--;
  552.  
  553. //if user was late with accepting offer bot decline it
  554. if(timer <= 0){
  555. console.log("User late with accepting an offer.");
  556. offers.cancelOffer({tradeOfferId: responseOffer.tradeofferid});
  557. var totp = speakeasy.totp({ secret : g_TotpKey });
  558. socket.emit("err", { error : "You are late with accepting an offer.", totp : totp });
  559. clearInterval(timerID);
  560. return;
  561. }
  562.  
  563. if(timer % 10 == 0 && timer >= 1){
  564. offers.getOffer({ tradeofferid : responseOffer.tradeofferid }, function(error, body){
  565. if (error) {
  566. stateErrors++;
  567. console.log(error);
  568. } else {
  569. offer = body.response.offer;
  570. console.log('Current offer state is (' + offer.trade_offer_state + ' - ' + responseOffer.tradeofferid + ').');
  571. //if user accept trade offer items are gonna be added to his inventory
  572.  
  573. //if offer was declined
  574. if(offer.trade_offer_state == 7){
  575. console.log("User declined an offer.");
  576. var totp = speakeasy.totp({ secret : g_TotpKey });
  577. socket.emit("err", { error : "You are declined an offer.", totp : totp });
  578. clearInterval(timerID);
  579. return;
  580. }
  581.  
  582. //if offer has unexpected state
  583. if(offer.trade_offer_state != 7 && offer.trade_offer_state != 3 && offer.trade_offer_state != 2){
  584. console.log("Unexpected state of tradeoffer(" + offer.trade_offer_state + ").");
  585. var totp = speakeasy.totp({ secret : g_TotpKey });
  586. socket.emit("err", { error : "Offer has unexpected state.", totp : totp });
  587. clearInterval(timerID);
  588. return;
  589. }
  590.  
  591. //if offer was accepted
  592. if(offer.trade_offer_state == 3){
  593. console.log("User(" + steamid + ") accepted deposit offer(" + responseOffer.tradeofferid + ")");
  594. var totp = speakeasy.totp({ secret : g_TotpKey });
  595. socket.emit("itemsrecieved", {
  596. steamid : steamid,
  597. price : price,
  598. accept : 'You have accepted this offer',
  599. totp : totp
  600. });
  601. query("UPDATE `users` SET `balance` = balance + '"+price+"' WHERE `clientid` = '"+name+"' AND `steamid` = '"+steamid+"'");
  602. console.log(steamid+' Update balance + '+price+' client='+name);
  603. clearInterval(timerID);
  604. return;
  605. }
  606. }
  607. });
  608.  
  609. //if getState returns too much errors
  610. if(stateErrors >= g_MaxStateErrors){
  611. console.log("Too much errors with getOffers(" + g_MaxStateErrors + ").");
  612. offers.cancelOffer({tradeOfferId: responseOffer.tradeofferid});
  613. var totp = speakeasy.totp({ secret : g_TotpKey });
  614. socket.emit("err", { error : "Too much errors.", totp : totp });
  615. clearInterval(timerID);
  616. return;
  617. }
  618. }
  619.  
  620. }, 1000);
  621. }
  622. });
  623. };
  624. makeOffer();
  625. } else {
  626. var totp = speakeasy.totp({
  627. secret: g_TotpKey
  628. });
  629. }
  630. } else {
  631. var totp = speakeasy.totp({
  632. secret: g_TotpKey
  633. });
  634. }
  635.  
  636.  
  637. };
  638. loadUserInventory();
  639.  
  640. console.log(buyer + ' Success!');
  641.  
  642.  
  643. };
  644. getHold();
  645.  
  646. })
  647. })
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657. /* ERROR CATCHER */
  658. process.on('uncaughtException', function(err) {
  659. console.log(err);
  660. if (err == "[Error: Disconnected]" || err == "Error: Disconnected") {
  661. login();
  662. }
  663. });
  664.  
  665. function time() {
  666. return parseInt(new Date().getTime() / 1000)
  667. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement