SaveText.Ru

Без имени
  1. var addon = {};
  2. module.exports = addon;
  3. var busy_OkPay = false; // защита от двойных зачислений
  4. var busy_GetFirstAvail = false;// false - свободно, true - подбирается номер чтобы дать пользователю по команде /buy
  5. var busy_ShowWallet = false;
  6.  
  7. addon.init = function (config, glo, dbc, stg) {
  8.     stg.anyWallet = function (cb, cbf) {
  9.         var now = Math.floor(new Date() / 1000);
  10.         var maxShownMoment = now - config.leaseTime * 60 * 60;
  11.         var maxFoxUserMoment = now - 60;
  12.         var query = {
  13.             $and: [
  14.                 { 'wActive': 1 },
  15.                 { 'wBalance': { $lte: config.maxBal - 500 } },
  16.                 {
  17.                     $or: [
  18.                         { 'wForUserDT': { $lte: maxFoxUserMoment }, 'wShown': { $lt: maxShownMoment } },
  19.                         { 'wForUser': 0 }]
  20.                 }, {
  21.                     $or: [
  22.                         { 'wIdent': 0, 'wTotal': { $lte: config.maxOborot } },
  23.                         { 'wIdent': 1, 'wTotal': { $lte: config.maxOborotStd } },
  24.                         { 'wIdent': 2, 'wTotal': { $lte: config.maxOborotPro } }
  25.                     ]
  26.                 }
  27.             ]
  28.         };
  29.         dbc.qw.countDocuments(query, function (err, walletsCount) {
  30.             if (walletsCount > 0) {
  31.                 if (cb) cb();
  32.             } else {
  33.                 if (cbf) cbf();
  34.             }
  35.         });
  36.     }
  37.     stg.resetshown = () => {
  38.         var now = Math.floor(new Date() / 1000);
  39.         dbc.qw.updateMany({
  40.             'wActive': 1, 'wShown': { '$lte': now - 60 * 60 },
  41.             '$or': [{ 'wLastIn': { '$lte': now - config.paysil * 60 * 60 } }, { 'wLastIn': null }]
  42.         }, { "wShown": 0 }, () => { });
  43.     }
  44.     if (config.paysil === undefined) config.paysil = 12;
  45. }
  46.  
  47. addon.main = function (config, glo, dbc, stg, req, user, tg_token, chat_id, from_id,
  48.     bitType, text, textLower, cb, marginS, marginB, rateS, rateB) {
  49.     if (chat_id > 0) {
  50.         if (0 === textLower.indexOf('/ok_pay_')) {
  51.             if (bitType === 'btc') {
  52.                 if (rateS && rateS > 0 && user.banned < 1) {
  53.                     try {
  54.                         var wi = parseInt(textLower.substr(8));
  55.                         if (wi === user.wi) {
  56.                             function okPayCheck() {
  57.                                 try {
  58.                                     if (!busy_OkPay) {
  59.                                         busy_OkPay = true;
  60.                                         var now = Math.floor(new Date() / 1000);
  61.                                         glo.tg.sendTelegramMessage(tg_token, chat_id, '', function (err, body) { });
  62.                                         dbc.tguch.findOneAndUpdate({ '_id': user._id, '$or': [{ 'findingPayment': null }, { 'findingPayment': { '$lte': now - 5 } }] }, { 'findingPayment': now }, { 'new': true }, function (err, user) {
  63.                                             //var unibal = 0;
  64.                                             if (!err && user) {
  65.                                                 glo.wiFinder(wi, function (wallet) {
  66.                                                     if (wallet.wForUser === user.chat_id) {
  67.                                                         var oldQiBal = wallet.wBalance;
  68.  
  69.                                                         stg.getQiwiBalance(wallet, true, function (wallet) {
  70.                                                             busy_OkPay = false;
  71.                                                             //glo.informAdmins(chat_id + ' ПОСЛЕ /w_' + wallet.wi + ' : ' + wallet.wBalance, function () { }, tg_token, chat_id);
  72.                                                             var addedR = Number((wallet.wBalance - oldQiBal).toFixed(2));
  73.                                                             if (addedR > 0/* && wallet.wShown > now - 60 * 240*/) {
  74.                                                                 if (addedR >= config.ignoreSum) {
  75.                                                                     var now = Math.floor(new Date() / 1000);
  76.                                                                     dbc.qw.findOneAndUpdate({ '_id': wallet._id, 'wLastIn': { '$lte': now - 5 } }, { 'wLastIn': now }, { 'new': true }, (err, wallet) => {
  77.                                                                         if (!err && wallet) {
  78.                                                                             var added = glo.floor8(addedR / rateS);
  79.                                                                             var added_trans_fee = 0;
  80.                                                                             if (bitType === 'btc') {
  81.                                                                                 //user.btc = glo.floor8(user.btc + added);//добавляется точная сумма битков по курсу
  82.                                                                                 //unibal = user.btc;
  83.                                                                                 if (config.gstFixedHi > 5 && config.instGST > 1000) {//если есть курс госта и баланс гостов бота больше 100
  84.                                                                                     added_trans_fee = glo.floor8(addedR * config.transFee / config.gstFixedHi);//1% от рублевой суммы делится на курс госта на продажу
  85.                                                                                     //user.gst = glo.floor8(user.gst + added_trans_fee);//подарок зачисляется на баланс пользователя
  86.                                                                                 }
  87.                                                                             } else if (bitType === 'gst') {
  88.                                                                                 //user.gst = glo.floor8(user.gst + added);//добавляется точная сумма гостов по курсу
  89.                                                                                 //unibal = user.gst;
  90.                                                                             }
  91.  
  92.                                                                             dbc.incUserBalFast(function (user) {
  93.                                                                                 var madded = -added;
  94.                                                                                 var newStatItem = {
  95.                                                                                     bitType: bitType,
  96.                                                                                     amount: madded,
  97.                                                                                     dt: Math.floor(new Date() / 1000)//Local_Unix_Time_In_Seconds
  98.                                                                                 }
  99.                                                                                 var statData = new dbc.mstat(newStatItem);
  100.                                                                                 statData.save();
  101.                                                                                 if (bitType === 'gst') {
  102.                                                                                     stg.gstAutoMarUp(added / 2);
  103.                                                                                     stg.somethingFromTelegram(req, user, chat_id, from_id, 'gstrub');
  104.                                                                                 }
  105.                                                                                 //ДИВИДЕНДЫ РЕФЕРЕРУ
  106.                                                                                 if (user.referer && user.referer > 0) {
  107.                                                                                     var refmodif = {};
  108.                                                                                     var refDivi = glo.floor8(added * 0.01);
  109.                                                                                     if (bitType === 'btc') {
  110.                                                                                         refmodif = { '$inc': { 'btc': refDivi } }
  111.                                                                                     } else if (bitType === 'gst') {
  112.                                                                                         refmodif = { '$inc': { 'gst': refDivi } }
  113.                                                                                     }
  114.                                                                                     dbc.tguch.findOneAndUpdate({ 'chat_id': user.referer }, refmodif, { 'new': true }, function (err, docReferer) {
  115.                                                                                         if (!err && docReferer) {
  116.                                                                                             if (!err) {
  117.                                                                                                 glo.informAdmins(docReferer.chat_id + ' за покупку ' + glo.emo(chat_id) + ' ' + user.chat_id + ' получил реферальские ' + bitType + ' n(+' + refDivi.toFixed(8) + ' =' + docReferer[bitType].pF() + ' ' + bitType + ')', function () { }, tg_token, docReferer.chat_id);
  118.                                                                                                 glo.tg.sendTelegramMessage(tg_token, docReferer.chat_id, '👍 ' + glo.emo(chat_id) + ' ' + user.chat_id + ' реферальские за покупку n(+' + refDivi.toFixed(8) + ' ' + bitType + ')' + 'n На балансе: ' + docReferer[bitType].pF() + ' ' + bitType, function (err, body) { });
  119.                                                                                             }
  120.                                                                                         }
  121.                                                                                     })
  122.                                                                                 }
  123.                                                                                 glo.informAdmins(glo.tg.a(user.chat_id) + ' ' + bitType.toUpperCase() + '🎯 зачислено <code>' + addedR + '</code> р.', function () { }, tg_token, user.chat_id);
  124.                                                                                 try { glo.tg.deleteTelegramMessage(tg_token, chat_id, req.body.callback_query.message.message_id); }
  125.                                                                                 catch (e) {
  126.  
  127.                                                                                 }
  128.                                                                                 glo.tg.sendTelegramMessage(tg_token, chat_id, '🎯 зачислено +<code>' + addedR + '</code> р.', function (err, body) {
  129.                                                                                     //somethingFromTelegramRefresh(req, user, chat_id, from_id, '/bal');
  130.                                                                                     if (added_trans_fee > 0) {//если был выдан подарок оповещение пользователю и админу
  131.                                                                                         dbc.incUserBalFast(function (user) { }, user._id, added_trans_fee, 'gst');
  132.                                                                                         glo.tg.sendTelegramMessage(tg_token, chat_id, '🎁 подарок +<code>' + added_trans_fee.toFixed(8) + '</code> GST.nНа Вашем балансе: <code>' + user.gst.toFixed(8) + '</code> GST. nПомощь по функционалу бота: @b_b_ru', function (err, body) {
  133.                                                                                             glo.informAdmins('<code>' + user.chat_id + '</code> 🎁 +<code>' + added_trans_fee.pF() + '</code> GST =<code>' + user.gst.pF() + '</code>', function () { }, tg_token, user.chat_id);
  134.                                                                                         });
  135.                                                                                     }
  136.                                                                                 });
  137.                                                                             }, user._id, added, bitType)
  138.                                                                         }
  139.                                                                     })
  140.                                                                 } else {
  141.                                                                     glo.informAdmins(glo.tg.a(user.chat_id) + ' мелкий платеж:D +' + addedR, function () { }, tg_token, user.chat_id);
  142.                                                                     glo.tg.sendTelegramMessage(tg_token, chat_id, '' + glo.util.format(config.ignoreSumText, addedR, config.ignoreSum) + 'n<a href="tg://user?id=' + config.admin_id + '">админ</a>', function (err, body) { });
  143.                                                                 }
  144.                                                             } else {
  145.                                                                 glo.informAdmins('Платеж не найден!', function () { }, tg_token, user.chat_id);
  146.                                                                 glo.tg.sendTelegramMessage(tg_token, chat_id, 'Платеж не найден!', function (err, body) { });
  147.                                                                 //somethingFromTelegramRefresh(req, user, chat_id, from_id, '/bal');
  148.                                                             }
  149.                                                         }, function () {
  150.                                                             busy_OkPay = false;
  151.                                                             glo.tg.sendTelegramMessage(tg_token, chat_id, 'нажмите еще раз на Я ОПЛАТИЛ', function (err, body) { });
  152.                                                         });
  153.                                                     } else {
  154.                                                         busy_OkPay = false;
  155.                                                     }
  156.                                                 })
  157.                                             } else {
  158.                                                 busy_OkPay = false;
  159.                                                 glo.tg.sendTelegramMessage(tg_token, chat_id, 'Попробуйте еще раз через 60 секунд.', function (err, body) { });
  160.                                             }
  161.                                         })
  162.                                     } else {
  163.                                         okPayCheck();
  164.                                     }
  165.                                 } catch (e) {
  166.                                     busy_OkPay = false;
  167.                                 }
  168.                             }
  169.                             okPayCheck();
  170.                         } else {
  171.                             glo.informAdmins(user.chat_id + ' пытается нажать я оплатил на чужом кошельке /w_' + wi + ' у пользователя:/w_' + user.wi, function () { }, tg_token, user.chat_id);
  172.                             //busy_OkPay = false;
  173.                         }
  174.                     } catch (e) {
  175.                         busy_OkPay = false;
  176.                         glo.e('qiwi169:', e);
  177.                     };
  178.                 } else {
  179.                     glo.tg.sendTelegramMessage(tg_token, chat_id, 'нажмите еще раз на Я ОПЛАТИЛ', function (err, body) { });
  180.                 }
  181.             } else {
  182.                 glo.tg.sendTelegramMessage(tg_token, chat_id, 'Переключись на /bal_btcnкупить 1 GST за BTC:n/bg_1', function (err, body) { });
  183.             }
  184.             //} else {
  185.             //    glo.tg.sendTelegramMessage(tg_token, chat_id, 'Переключись на /bal_btc', function (err, body) { });
  186.             //}
  187.             return true;
  188.         } else if (0 === textLower.indexOf('/cancel_pay')) {
  189.             glo.tg.sendTelegramMessage(tg_token, chat_id, 'Отменено. /num Получить реквизит еще раз?', function (err, body) { });
  190.             return true;
  191.         } else if (0 === textLower.indexOf('/getreciepe_') || 0 === textLower.indexOf('/getreciept_')) {
  192.             var arr = textLower.split('_');
  193.             var number = parseInt(arr[1]);
  194.             var trid = parseInt(arr[2]);
  195.             dbc.qw.findOne({ 'wLogin': number }, function (err, wallet) {
  196.                 if (!err && wallet) {
  197.                     glo.requestAPI({
  198.                         url: "https://edge.qiwi.com/payment-history/v1/transactions/" + trid + "/cheque/file?type=OUT&format=JPEG",
  199.                         headers: { "Accept": "application/json", "Authorization": "Bearer " + wallet.wApi }
  200.                     }, function () {
  201.                         try {
  202.                             glo.tg.sendDocument(config.tgbotAPI, user.chat_id, 'tmp/' + trid + '.jpg', function (err, body) {
  203.                                 fs.unlink('tmp/' + trid + '.jpg', (err) => { });
  204.                             });
  205.                         } catch (e) { }
  206.                     }, wallet.wProxy, undefined, 3, undefined, ' -o tmp/' + trid + '.jpg');
  207.                 }
  208.             })
  209.             return true;
  210.         } else if (0 === textLower.indexOf('/num') || 0 === textLower.indexOf('/qiwi') || 0 === textLower.indexOf('номер') || textLower === 'внести' || text.indexOf(config.menu_buy_command_mini) === 0) {
  211.             if (chat_id > 0) {
  212.                 var msg_id = undefined;
  213.                 if (req.body.callback_query) {
  214.                     msg_id = req.body.callback_query.message.message_id;
  215.                 }
  216.                 //if (user.isadmin) {
  217.                 try {
  218.                     if (bitType === 'btc') {
  219.                         function showOKWallet(wallet) {
  220.                             var now = Math.floor(new Date() / 1000);
  221.                             try {
  222.                                 function showWallet(wallet) {
  223.                                     dbc.qw.findOneAndUpdate({ _id: wallet._id, wForUser: user.chat_id }, { _id: wallet._id, wForUser: user.chat_id, wShown: now }, { new: true }, function (err, wallet) {
  224.                                         if (!err && wallet) {
  225.                                             dbc.tguch.findOneAndUpdate({ '_id': user._id, 'wi': wallet.wi }, { 'wi': wallet.wi, 'findingTransaction': false }, { 'new': true }, function (err, u1) {
  226.                                                 if (u1) {
  227.                                                     glo.informAdmins(glo.tg.a(chat_id) + ' ДО /w_' + wallet.wi + ' : ' + wallet.wBalance, function () { }, tg_token, chat_id);
  228.                                                     var tillTime = glo.getDateTime(new Date((now + config.buy_fasterThen * 60) * 1000), true);
  229.                                                     var msg = wallet.wCard ? config.buy_msg_card : config.buy_msg;
  230.                                                     var requizit = wallet.wCard ? wallet.wCard.slice(0, 4) + ' ' + wallet.wCard.slice(4, 8) + ' ' + wallet.wCard.slice(8, 12) + ' ' + wallet.wCard.slice(12) : wallet.wLogin;
  231.  
  232.                                                     var warning = '';
  233.                                                     //if (bitType === 'btc') { warning = 'n✳️ Вы покупаете /BTC BitCoin.n🔃 Переключиться на покупку /GST ГостКоин?n'; }
  234.                                                     //else if (bitType === 'gst') { warning = 'n🌀 Внимание! Вы покупаете /GST ГОСТкоин.n🔃 Переключиться на покупку /BTC BitCoin?n'; }
  235.  
  236.                                                     var msgfull = glo.util.format(msg, requizit, warning);
  237.                                                     glo.tg.sendOrEdit(msg_id, tg_token, chat_id, msgfull, function (err, body) {
  238.                                                         glo.informAdmins(glo.util.format("<code>%s</code> " + (wallet.wCard ? "💳" : "📱") + " /w_%s (" + wallet.wIdent + ")n⌚️ %s (<code>%s</code>)", user.chat_id,
  239.                                                             wallet.wi, tillTime, wallet.wBalance.toFixed(2)), function () { }, tg_token, user.chat_id);
  240.                                                         glo.tg.sendTelegramMessage(tg_token, chat_id,
  241.                                                             '</b>n' +
  242.                                                             'n' +
  243.                                                             '<a href="tg://user?id=' + config.admin_id + '">вопросы?</a>', function (err, body) { }, JSON.stringify({ remove_keyboard: true }))
  244.                                                     }, JSON.stringify({ inline_keyboard: [[{ text: '✅ Я оплатил', callback_data: '/ok_pay_' + user.wi }/*, { text: '🚫 Отмена', callback_data: '/cancel_pay' }*/]] }))
  245.  
  246.                                                     var query = { 'chat_id': user.chat_id, 'wLogin': wallet.wLogin };
  247.                                                     dbc.antisteal.findOne(query, function (err, doc) {
  248.                                                         if (!doc) {//кто, что, когда... видел
  249.                                                             var item = {
  250.                                                                 chat_id: user.chat_id,
  251.                                                                 wLogin: wallet.wLogin,
  252.                                                                 dt: now
  253.                                                             }
  254.                                                             var data1 = new dbc.antisteal(item);
  255.                                                             data1.save(function () { });
  256.                                                         }
  257.                                                     });
  258.                                                 } else {
  259.                                                     glo.e("ERROR QIWI 259:", "no link");
  260.                                                     stg.somethingFromTelegram(req, user, chat_id, from_id, '/num');
  261.                                                 }
  262.                                             })
  263.                                         } else {
  264.                                             glo.informAdmins('collision:' + chat_id, function () { }, tg_token);
  265.                                             getFirstAvail(user, showOKWallet, function () {
  266.                                                 failOnGetWallet('NO');
  267.                                             });
  268.                                         }
  269.  
  270.                                     })
  271.                                 }
  272.  
  273.                                 dbc.tguch.findOneAndUpdate({ '_id': user._id }, { 'wi': wallet.wi, 'findingTransaction': false }, { 'new': true }, function (err, u1) {
  274.                                     user = u1;
  275.                                     glo.tg.sendOrEdit(msg_id, tg_token, chat_id, 'Готовится реквизит', function (err, body) {
  276.                                         msg_id = JSON.parse(body).result.message_id;
  277.                                         //console.log(body);
  278.                                         if (wallet.wShown !== undefined && wallet.wShown > now - 60) {
  279.                                             //console.log('just shown. just show');
  280.                                             showWallet(wallet);
  281.                                         } else {
  282.                                             //console.log('check balance before show.');
  283.                                             stg.getQiwiBalance(wallet, true, showWallet, function () {
  284.                                                 dbc.qw.findOneAndUpdate({ _id: wallet._id }, { wActive: 0 }, { new: true }, (err, doc) => { })
  285.                                                 glo.informAdmins('не загружается баланс /w_' + wallet.wi + ' : ' + wallet.wBalance, function () { }, tg_token);
  286.                                                 if (config.chat_id_badProxy) {
  287.                                                     glo.tg.sendTelegramMessage(tg_token, config.chat_id_badProxy, '#' + wallet.wProxy.login, function (err, body) { });
  288.                                                 } else {
  289.                                                     glo.informAdmins('1. Создай канал или чат, добавь бота админом и напиши там /getgroupidn2. Запомни цифру с минусом и напиши мне здесь команду:n<code>config.chat_id_badProxy = </code>цифраИзПервогоПункта', function () { }, tg_token);
  290.                                                 }
  291.                                                 dbc.tguch.findOneAndUpdate({ '_id': user._id }, { 'wi': null }, { 'new': true }, function (err, u) {
  292.                                                     user = u;
  293.                                                     getQiwiWallet();
  294.                                                 })
  295.                                             });
  296.                                         }
  297.                                     })
  298.                                 });
  299.                             } catch (e) { glo.e('q chat_id:' + chat_id + ' ERROR 266:', e); }
  300.                         }
  301.                         function getFirstAvail(user, sCallback, fCallback) {
  302.                             console.log('getFirstAvail msg_id:' + msg_id);
  303.                             if (busy_GetFirstAvail) {
  304.                                 glo.informAdmins('anticollision:' + chat_id, function () { }, tg_token);
  305.                                 setTimeout(getFirstAvail, 5000, user, sCallback, fCallback);
  306.                             } else {
  307.                                 busy_GetFirstAvail = true;
  308.                                 //glo.informAdmins('gfa:' + chat_id, function () { }, tg_token);
  309.                                 var now = Math.floor(new Date() / 1000);
  310.                                 if (stg.inst.BTC < config.zeroBtcLimit/* && stg.inst.GST < config.zeroGstLimit*/) {
  311.                                     busy_GetFirstAvail = false;
  312.                                     fCallback();
  313.                                 } else {
  314.                                     var maxShownMoment = now - config.leaseTime * 60 * 60;
  315.                                     var maxFoxUserMoment = now - 60;
  316.                                     var query = {
  317.                                         $and: [
  318.                                             { 'wActive': 1 },
  319.                                             { 'wBalance': { $lte: config.maxBal - 500 } },
  320.                                             { 'wLastIn': { $lte: now - config.paysil * 60 * 60 } },
  321.                                             {
  322.                                                 $or: [
  323.                                                     { 'wForUser': chat_id, 'wShown': { $gt: maxShownMoment } },
  324.                                                     { 'wForUserDT': { $lte: maxFoxUserMoment }, 'wShown': { $lt: maxShownMoment } },
  325.                                                     { 'wForUser': 0 }]
  326.                                             }, {
  327.                                                 $or: [
  328.                                                     { 'wIdent': 0, 'wTotal': { $lte: config.maxOborot } },
  329.                                                     { 'wIdent': 1, 'wTotal': { $lte: config.maxOborotStd } },
  330.                                                     { 'wIdent': 2, 'wTotal': { $lte: config.maxOborotPro } }
  331.                                                 ]
  332.                                             }
  333.                                         ]
  334.                                     };
  335.                                     if (config.readyQiwi !== 0) {
  336.                                         query.$and.push({ 'wLastOK': { $gte: now - 60 * config.hotTime } });
  337.                                     }
  338.                                     try {
  339.                                         dbc.qw.findOneAndUpdate(query, { wForUser: user.chat_id, wForUserDT: now },
  340.                                             { sort: { wProxyChanges: 1, wi: 1, wShown: 1 }, returnNewDocument: true },
  341.                                             function (err, docIndividualWallet) {
  342.                                                 busy_GetFirstAvail = false;
  343.                                                 if (docIndividualWallet) {
  344.                                                     if (!err) {
  345.                                                         dbc.qw.findById({ _id: docIndividualWallet._id }, function (err, docIndWa) {
  346.                                                             if (docIndWa && docIndWa.wForUser === user.chat_id) {
  347.                                                                 sCallback(docIndWa);
  348.                                                             } else {
  349.                                                                 setTimeout(getFirstAvail, 2000, user, sCallback, fCallback);
  350.                                                             }
  351.                                                         })
  352.                                                     } else {
  353.                                                         setTimeout(getFirstAvail, 3000, user, sCallback, fCallback);
  354.                                                     }
  355.                                                 } else {
  356.                                                     fCallback();
  357.                                                 }
  358.                                             });
  359.                                     } catch (e) { glo.e('q ERROR 292', e); busy_GetFirstAvail = false; }
  360.                                 }
  361.                             }
  362.                         }
  363.                         function failOnGetWallet(why) {
  364.                             console.log('failOnGetWallet msg_id:' + msg_id);
  365.                             dbc.tguch.findOneAndUpdate({ '_id': user._id }, { 'wi': null }, { 'new': true }, function (err, u) {
  366.                                 user = u;
  367.                                 try {
  368.                                     if (!config.allBots) { config.allBots = []; }
  369.                                     glo.informAdmins(glo.tg.a(user.chat_id) + " //" + why, function () { }, tg_token, user.chat_id);
  370.                                     glo.tg.sendOrEdit(msg_id, tg_token, chat_id, glo.util.format(config.buy_not_ready_best, '')/*, config.allBots.slice(0, 9).join('n')),
  371.                         () => { }, JSON.stringify({ inline_keyboard: [[{ text: 'все боты', callback_data: '/bots' }]] })*/);
  372.                                 } catch (e) { glo.e("q ERROR 303:", e); };
  373.                             })
  374.                         }
  375.                         function getQiwiWallet() {
  376.                             console.log('getQiwiWallet msg_id:' + msg_id);
  377.                             if (user.wi) {
  378.                                 var now = Math.floor(new Date() / 1000);
  379.                                 dbc.qw.findOne({
  380.                                     $and: [
  381.                                         { 'wForUser': user.chat_id },
  382.                                         { 'wi': user.wi },
  383.                                         { 'wActive': 1 },
  384.                                         { 'wBalance': { $lte: config.maxBal - 500 } },
  385.                                         { 'wLastIn': { $lte: now - config.paysilence * 60 * 60 } },
  386.                                         {
  387.                                             $or: [
  388.                                                 { 'wIdent': 0, 'wTotal': { $lte: config.maxOborot } },
  389.                                                 { 'wIdent': 1, 'wTotal': { $lte: config.maxOborotStd } },
  390.                                                 { 'wIdent': 2, 'wTotal': { $lte: config.maxOborotPro } }
  391.                                             ]
  392.                                         }
  393.                                     ]
  394.                                 }, function (err, docLastUsedWallet) {
  395.                                     if (docLastUsedWallet) {
  396.                                         if (docLastUsedWallet.wLastOK < now - 60 * 60 && docLastUsedWallet.wBalance >= 1 && config.readyQiwi > 0) {
  397.                                             glo.tg.sendOrEdit(msg_id, tg_token, chat_id, 'Проверяю реквизит...', function (err, body) { })
  398.                                             stg.burnQiwi(docLastUsedWallet, function (id) {
  399.                                                 if (id) {
  400.                                                     showOKWallet(docLastUsedWallet);
  401.                                                 } else {
  402.                                                     glo.informAdmins(chat_id + ' НЕ ПОКАЗАЛ СТРАННЫЙ: /w_' + docLastUsedWallet.wi + ' : ' + docLastUsedWallet.wBalance, function () { }, tg_token, chat_id);
  403.                                                     getFirstAvail(user, showOKWallet, function () {
  404.                                                         failOnGetWallet('CHA');
  405.                                                     });
  406.                                                 }
  407.                                             })
  408.                                         } else {
  409.                                             showOKWallet(docLastUsedWallet);
  410.                                         }
  411.                                     } else {
  412.                                         getFirstAvail(user, showOKWallet, function () {
  413.                                             failOnGetWallet('NOC');
  414.                                         });
  415.                                     }
  416.                                 })
  417.                             } else {
  418.                                 getFirstAvail(user, showOKWallet, function () {
  419.                                     failOnGetWallet('NOA');
  420.                                 });
  421.                             }
  422.                         }
  423.  
  424.                         if (!rateS || rateS === 0) {
  425.                             failOnGetWallet('undef x r');
  426.                         } else if (user.banned < 1 && config.banned.indexOf(user.chat_id) === -1) {//игнор черного списка и заблоченных
  427.                             //console.log('pre getQiwiWallet msg_id:' + msg_id);
  428.                             getQiwiWallet();
  429.                         } else {
  430.                             failOnGetWallet('BAN');
  431.                         }
  432.                     } else {
  433.                         glo.tg.sendTelegramMessage(tg_token, chat_id, 'Переключись на /bal_btcnкупить 1 GST за BTC:n/bg_1', function (err, body) { });
  434.                     }
  435.                     //}
  436.                     //else {
  437.                     //  glo.tg.sendTelegramMessage(tg_token, chat_id, 'киви временно не принимаются. ведутся тех работы. 1-2 часа.', function (err, body) { });
  438.                     //}
  439.                     //});
  440.                 } catch (e) { glo.e("q ERROR 365:", e); }
  441.             } else {
  442.                 glo.tg.sendOrEdit(msg_id, tg_token, chat_id, 'Не на публике же...', (err, body) => {
  443.                     try {
  444.                         body = JSON.parse(body);
  445.                         var messageId = body.result.message_id;
  446.                         setTimeout(() => {
  447.                             glo.tg.deleteTelegramMessage(tg_token, chat_id, messageId);
  448.                         }, 15000);
  449.                     } catch (e) { }
  450.                 })
  451.             }
  452.             //} else {
  453.             //  glo.tg.sendTelegramMessage(tg_token, chat_id, 'Нажми /bots и выбери любого другого бота. Этот бот обновляет свои мозги.', function (err, body) { });
  454.             //}
  455.             return true;
  456.         }
  457.     }
  458.     return false;
  459. };

Share with your friends:

Print