Advertisement
Guest User

Untitled

a guest
Apr 19th, 2019
554
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const VKCOINAPI = require("node-vkcoinapi"); // Импорт модуля
  2. const rq = require("prequest");
  3. const fs = require("fs");    
  4. const { VK } = require('vk-io'); // Импорт модуля для бота
  5. const vk = new VK(); // Новый экземпляр
  6. const acc = require("./base/acc.json");  
  7. const vkcoin = new VKCOINAPI({
  8.     key: 'мерчантид',
  9.     userId: 422783858, // Тут ваш ID вк
  10.     token: 'токен'
  11. });
  12. /*----------------------------------------------------------------------------------------------------------*/
  13. setInterval(async () => {
  14.     fs.writeFileSync("./base/acc.json", JSON.stringify(acc, null, "\t"))  
  15. }, 1500);
  16. /*----------------------------------------------------------------------------------------------------------*/
  17.  
  18. vk.setOptions({ // Устанавливаем опции
  19.     pollingGroupId: 145977669, // Тут ID группы
  20.     token: 'токен_группы'
  21. });
  22.  
  23.  
  24. /*------------------------------------- Message handling----------------------------------------------------*/
  25.  
  26. vk.updates.on(['new_message'], async(msg) => { // Прослушка новых сообщений
  27.     if (msg.isOutbox) return; // Если исходящее, то возвращаем
  28.  
  29.     if (msg.text === 'баланс' && msg.text === 'Баланс') { // Если входящее сообщение будет в точности равно 'мой баланс', то...
  30.         const result = await vkcoin.getBalance([ msg.senderId ]); // Получаем баланс отправителя
  31.         const coins = vkcoin.formatCoins(result.response[msg.senderId]); // Делаем его читабельным
  32.  
  33.         return msg.send(`Ваши коины: ${coins}`); // Отправляем сообщение
  34.     }
  35. });
  36.  
  37. vk.updates.startPolling(); // Старт прослушивания
  38.  
  39. async function run () {
  40.     await vkcoin.updates.startPolling();
  41.     const transactions = await vkcoin.getTransactionList([2]); // Получаю последние 100 транзакций
  42.     const balances = await vkcoin.getBalance([1, 236908027]); // Получаю баланс Дурова и свой, указывать можно до ста ID
  43.     const myBalance = await vkcoin.getMyBalance(); // Получаю баланс текущего пользователя
  44.     const result = await vkcoin.sendPayment(1, 1000); // Отправляю Дурову 1 коин :D
  45.     const link = vkcoin.getLink(10000, true); // Получаю ссылку для платежа в размере 10 коинов без возможности указать своё кол-во (фиксированная цена)
  46.     console.log(transactions);
  47.     console.log({
  48.         transactions,
  49.         balances,
  50.         myBalance,
  51.         result,
  52.         link
  53.     }); // Выводим в консоль
  54. }
  55.  
  56. run().catch(console.error);
  57.  
  58. async function run () {
  59.     await vkcoin.updates.startPolling(); // Подключение к серверу / заупск
  60.  
  61.     vkcoin.updates.onTransfer((event) => {
  62.         const { amount, fromId, id } = event;
  63.  
  64.         /**
  65.          * amount - количество коинов, которые поступили
  66.          * fromId - ID отправителя
  67.          * id - ID платежа
  68.          */
  69.  
  70.         const score = vkcoin.formatCoins(amount);
  71.  
  72.         console.log(
  73.             `Поступил платёж (${id}) от https://vk.com/id${fromId} в размере ${score} коинов`
  74.         );
  75.  
  76.         /* Тут можно выполнять свои действия */
  77.         return msg.send(`Поступил платёж (${id}) от https://vk.com/id${fromId} в размере ${score} коинов`); // Отправляем сообщение
  78.     });
  79. }
  80.  
  81. run()
  82.  
  83. vk.updates.use(async (message, next) => {    
  84.  
  85.     if (message.is("message") && message.isOutbox) { return; }
  86.     message.user = message.senderId;
  87.     message.text = message.payload.text;
  88.     if (!message.text) { return; }
  89.     const info = await vk.api.users.get({ user_id: message.user });
  90.     if(!acc.users.find(a => a.vk === message.user)){
  91.         acc.number++;
  92.         acc.users.push(
  93.             {
  94.                 id: acc.number,
  95.                 vk: message.user,
  96.                 balance: 0,
  97.                 admin:  0,
  98.                 vip:    0,
  99.                 ban:    false,
  100.                 prefix: info[0].first_name,
  101.                 modules:       
  102.                 {
  103.                     "1":        {
  104.                         price:  50,
  105.                         count:  0,
  106.                         profit: 1
  107.                     },
  108.                     "2":        {
  109.                         price:  1400,
  110.                         count:  0,
  111.                         profit: 2
  112.                     },
  113.                     "3":        {
  114.                         price:  2500,
  115.                         count:  0,
  116.                         profit: 3
  117.                     },
  118.                     "4":        {
  119.                         price:  5000,
  120.                         count:  0,
  121.                         profit: 4
  122.                     },
  123.                     "5":        {
  124.                         price:  10250,
  125.                         count:  0,
  126.                         profit: 6
  127.                     },
  128.                     "6":        {
  129.                         price:  15000,
  130.                         count:  0,
  131.                         profit: 8
  132.                     },
  133.                     "7":        {
  134.                         price:  40000,
  135.                         count:  0,
  136.                         profit: 10
  137.                     }
  138.                 }
  139.             }
  140.         )
  141.         return message.send(`[@id${message.user}(${info[0].first_name})] => Вы зарегистрировались в [lm_vk.updates|LM Coin]`);
  142. }
  143.  
  144.  
  145.     if (/\[lm_vk.updates\|(.*)\]/i.test(message.text)) { message.text = message.text.replace(/\[lm_vk.updates\|(.*)\]/ig, '').trim(); }  
  146.      
  147.      
  148.     if (!limits[message.user]) {
  149.         limits[message.user] = {  
  150.             block_bonus:    0
  151.         }
  152.     }
  153.    
  154.     const user = acc.users.find(a => a.vk === message.user);
  155.  
  156.     if (message.text) {  
  157.         user.balance += 1;
  158.         if(user.balance % 100 == 0){
  159.             message.send(`@id${message.user}([${user.prefix})] => Ваш баланс: ${user.balance} LM`);
  160.         }
  161.     }
  162.  
  163.     if (user.ban == true) return;
  164.     try { await next(); } catch (err) { console.error(err) }
  165.  
  166. });
  167.  
  168.  
  169.  
  170. ////////////////////////////////////////////////////////////////////////
  171. ////////////////////////////////////////////////////////////////////////
  172. ////////////////////////////////////////////////////////////////////////
  173.  
  174. vk.updates.hear(/^(?:поиск)\s?(.*)?/i, (message) => {
  175.     let args = message.$match;
  176.  
  177.     vk.api.call("utils.resolveScreenName", {
  178.             screen_name: args[1]
  179.     }).then((res) => {
  180.         var id = res.object_id;
  181.  
  182.         let user = acc.users.find(a => a.vk === id);
  183.         if(!user) return message.send(`✉ Игрок не найден...\n✉ Пример ввода: 'поиск https://vk.com/akullaaa00' `)
  184.  
  185.         return message.send(`
  186.             💧 Игрок: ${user.prefix}
  187.             💧 VK: vk.com/id${user.vk}
  188.             💧 ID: ${user.id}
  189.             💧 Баланс: ${user.balance} LM
  190.         `);
  191.     })
  192. });  
  193.  
  194. vk.updates.hear(/^(?:передать|перевод)\s?([0-9]+)?\s?(.*)?/i, (message) => {
  195.     let user = acc.users.find(a => a.vk === message.user);
  196.     let args = message.$match;  
  197.     if(!args[2] || !Number(args[2]) || args[2] < 0) return message.send(`💸 Пример: "Передать ID СУММА"`);
  198.  
  199.     args[2] = args[2].replace(/(\.|\,)/ig, '');
  200.     args[2] = args[2].replace(/(к|k)/ig, '000');
  201.     args[2] = args[2].replace(/(м|m)/ig, '000000');
  202.     args[2] = args[2].replace(/(вабанк|вобанк|все|всё)/ig, user.balance);
  203.  
  204.     if(user.balance < args[2]) return message.send(`💸 У вас недостаточно денег`);
  205.     if(args[1] == user.id) return message.send(`💸 Вы указали свой ID`);
  206.  
  207.     let u = acc.users.find(a => a.id === Number(args[1]));
  208.     if(!u) return message.send(`💸 Вы указали неверный ID`);
  209.  
  210.     user.balance -= Number(args[2]);
  211.     u.balance += Number(args[2]);
  212.     return message.send(`${f.time()}\n💸 Вы успешно передали ${args[2]} LM игроку ${u.prefix}`);
  213.  
  214. });
  215.  
  216. vk.updates.hear(/^(?:Инфо|📝 инфо)/i, (message) => {  
  217.  
  218.     return message.send(
  219.         `
  220.         📮 Чтобы начать получать GCoin.
  221.         👦 Вам нужно написать 50 любых сообщений нашему боту.
  222.         ✉ За каждое сообщение вы получаете 1 GCoin.
  223.         💸 За GCoin вы можете покупать ускорения ('ускорение')
  224.         💰 Которые автоматически будут приносить вам прибыль!
  225.  
  226.         🏆 Чем больше у вас LM - тем выше вы в топе!
  227.  
  228.         💽 О обмене LM на VK COINS => 'Обмен'
  229.  
  230.         `
  231.     ); 
  232. });
  233.  
  234. vk.updates.hear(/^(?:Вип|👑 вип)/i, (message) => {  
  235.  
  236.     return message.send(
  237.         `
  238.         👑 - - VIP АККАУНТ - - 👑
  239.         🌍 Вип аккаунт позволяет вам получать больше LM в секунду
  240.         🎁 'Бонус' даёт больше коинов
  241.  
  242.         1&#8419;. VIP | 30 рублей | +20/сек
  243.         2&#8419;. VIP++ | 50 рублей | +40/сек
  244.         3&#8419;. Super VIP | 100 рублей | +60/сек
  245.  
  246.         📝 За покупкой: [akullaaa00|К нему]   
  247.  
  248.         `
  249.     ); 
  250. });
  251.  
  252. vk.updates.hear(/^(?:помощь)/i, (message) => {  
  253.  
  254.     return message.send(
  255.         `
  256.         🌍 Инфо - информация о проекте
  257.         💼 Профиль
  258.         ♻ Ускорение
  259.         🎁 Бонус
  260.         🔝 Топ
  261.         🔍 Поиск [ссылка(вк)]
  262.         💰 Передать [ID] [сумма]
  263.  
  264.         👑 Вип
  265.         📊 Обмен
  266.         `
  267.     ); 
  268. });
  269.  
  270. vk.updates.hear(/^(?:бонус|🎁 бонус)/i, (message) => {  
  271.  
  272.     let user = acc.users.find(a => a.vk === message.user);
  273.    
  274.     min = limits[message.user].bonus_min;
  275.     if (limits[message.user].bonus == true) return message.send(`[@id${message.user}(${user.prefix})] => Брать бонус можно через: ${min} минут `);
  276.     limits[message.user].bonus = true;
  277.  
  278.     limits[message.user].bonus_min = 60
  279.  
  280.     setTimeout(() => {
  281.         limits[message.user].bonus = false;
  282.     }, 3600000);
  283.  
  284.     let ss = f.rand(100,2000);
  285.     if(user.vip >= 1){
  286.         ss += f.rand(200,600)
  287.     }
  288.     user.balance += ss;
  289.     return message.send(`
  290.     [@id${message.user}(${user.prefix})] => Вы получили ${f.spaces(Math.round(ss))} vk.updates coins
  291.     `);
  292. });
  293.  
  294. vk.updates.hear(/^(?:ускорение|ускорения|улучшения|♻ ускорение|♻ ускорения|♻ улучшения)\s?([0-9]+)?/i, (message) => {
  295.     let user = acc.users.find(a => a.vk === message.user);
  296.     let args = message.$match;
  297.  
  298.     if (!args[1]) {
  299.         return message.send(
  300.             `
  301.             🌍 - - Покупка ускорений - - 🌍
  302.             🌍  Название | Цена | Доход 🌍
  303.  
  304.             1&#8419;. Курсор | ${user.modules["1"].price} | +1/сек
  305.             2&#8419;. Видеокарта | ${user.modules["2"].price} | +2/сек
  306.             3&#8419;. Стойка Видеокарт | ${user.modules["3"].price} | +3/сек
  307.             4&#8419;. Суперкомпьютер | ${user.modules["4"].price} | +4/сек
  308.             5&#8419;. Сервер ВКонтакте | ${user.modules["5"].price} | +6/сек
  309.             6&#8419;. Квантовый компьютер | ${user.modules["6"].price} | +8/сек
  310.             7&#8419;. Датацентр | ${user.modules["7"].price} | +10/сек
  311.  
  312.             🌍 - -  Для покупки напишите "Ускорение (номер)" - - 🌍
  313.             🌍 - -  Пример: "Ускорение 1" - - 🌍
  314.             `
  315.         ); 
  316.     }
  317.     let i = args[1];
  318.    
  319.     if (!Number(i) || i < 0 || i > 7) return message.send(`[@id${message.user}(${user.prefix})] => Неверно указан номер ускорения!`, {keyboard: menu});
  320.     if (user.balance < user.modules[Number(i)].price) return message.send(`[@id${message.user}(${user.prefix})] => У вас недостаточно LM`);
  321.  
  322.     user.balance -= Number(user.modules[Number(i)].price);
  323.     user.modules[Number(i)].price += (Math.round(user.modules[Number(i)].price * 0.5));
  324.     user.modules[Number(i)].count += 1;
  325.  
  326.     return message.send(`[@id${message.user}(${user.prefix})] => Вы успешно преобрели ускорение!\n❗ Подробная информация в 'профиль'`);
  327.      
  328. });
  329.  
  330. vk.updates.hear(/^(?:обмен|📊 обмен)\s?([0-9]+)?/i, (message) => {
  331.     let user = acc.users.find(a => a.vk === message.user);
  332.     let args = message.$match;
  333.  
  334.     if (!args[1]) {
  335.         return message.send(
  336.             `
  337.             📊 - - Обмен LM на VK COINS - - 📊
  338.             🌍 Наш проект позволяет обменивать
  339.             🌍 LM на VK COINS
  340.             🌍 По курсу 100.000 LM == 1 VK coins
  341.  
  342.             🌍 Для обмена напишите: "Обмен (сумма LM)"
  343.             `
  344.         ); 
  345.     }
  346.     let i = args[1];
  347.     if (user.balance < 100000 || i < 100000) return message.send(`[@id${message.user}(${user.prefix})] => Минимальный вывод 100.000 LM`);
  348.     if (user.balance < Number(i)) return message.send(`[@id${message.user}(${user.prefix})] => У вас недостаточно LM`);
  349.  
  350.     user.balance -= Number(i);
  351.     let amount = i / 100;
  352.     let result = vkcoin.sendPayment(message.user, amount);
  353.    
  354.     console.log(result);
  355.  
  356.     return message.send(`📊 => Вы успешно обменяли LM на VK COINS\n📊 => VK COINS придут на ваш счёт в течении нескольких секунд!`);
  357.      
  358. });
  359.  
  360.  
  361. vk.updates.hear(/^(?:профиль|проф|💼 профиль| 💼 проф)/i, (message) => {
  362.     let user = acc.users.find(a => a.vk === message.user);
  363.     return message.send(`
  364.     🆔 ID: ${user.id}
  365.  
  366.     💰 Баланс: ${f.spaces(user.balance)} LM
  367.     👑 ${user.vip.toString().replace(/0/ig, 'VIP не куплен').replace(/1/ig, 'VIP').replace(/2/ig, 'VIP++').replace(/3/ig, 'Super VIP')} | +${user.vip.toString().replace(/0/ig, '0').replace(/1/ig, '20').replace(/2/ig, '40').replace(/3/ig, '60')}/сек
  368.    
  369.     ⏳ Ваши ускорения ⏳
  370.     📕 Курсор [${user.modules["1"].count}] +${user.modules["1"].count*1}/сек
  371.     📗 Видеокарта  [${user.modules["2"].count}] +${user.modules["2"].count*2}/сек
  372.     📘 Стойка Видеокарт  [${user.modules["3"].count}] +${user.modules["3"].count*3}/сек
  373.     📙 Суперкомпьютер  [${user.modules["4"].count}] +${user.modules["4"].count*4}/сек
  374.     📔 Сервер ВКонтакте [${user.modules["5"].count}] +${user.modules["5"].count*6}/сек
  375.     📓 Квантовый компьютер  [${user.modules["6"].count}] +${user.modules["6"].count*8}/сек
  376.     🖥 Датацентр [${user.modules["7"].count}] +${user.modules["7"].count*10}/сек
  377.  
  378.     💿 Суммарно: ${(user.modules["1"].count*1)+(user.modules["2"].count*2)+(user.modules["3"].count*3)+(user.modules["4"].count*4)+(user.modules["5"].count*6)+(user.modules["6"].count*8)+(user.modules["7"].count*10)}/сек
  379.     `);
  380.      
  381. });      
  382.  
  383. vk.updates.hear(/^(?:топ|🔝 топ)/i, (message) => {
  384.  
  385.     let text = ``; var tops = []
  386.      
  387.     for (i=0; i<acc.users.length; i++) {
  388.         tops.push({
  389.             id: acc.users[i].id,
  390.             vk: acc.users[i].vk,
  391.             balance: acc.users[i].balance,
  392.             prefix: acc.users[i].prefix
  393.         })
  394.     }
  395.      
  396.     tops.sort(function(a, b) {
  397.         if (b.balance > a.balance) return 1
  398.         if (b.balance < a.balance) return -1
  399.         return 0
  400.     })
  401.     var yo = []
  402.  
  403.     for (var g = 0; g < 10; g++) {
  404.         if (tops.length > g) {
  405.             let ups = g;
  406.             ups += 1;
  407.             if(g <= 8) ups = `${ups}&#8419;`
  408.             if(g == 9) ups = `&#128287;`
  409.             yo.push({ id: tops[g].id, vk: tops[g].vk, balance: tops[g].balance, prefix: tops[g].prefix, smile: `${ups}` })
  410.         }
  411.     }
  412.     text = "💴 Топ игроков 💴 \n" + yo.map(a => a.smile + `. ${a.prefix} >> vk.com/id${a.vk} >> ${Math.round(a.balance)} LM`).join("\n")
  413.  
  414.  
  415.     for (i=0;i<tops.length;i++) {
  416.         if(message.user == tops[i].vk) {
  417.             return message.send(text + `\n- - - - - -\n~ Вы на ${i+1} месте ~`)
  418.         }
  419.     }
  420. });  
  421.  
  422.  
  423. /*----------------------------------------------------------------------------------------------------------*/
  424.  
  425.  
  426. vk.updates.hear(/^(?:eval)\s?([^]+)?/i, (message) => {
  427.     let args = message.$match;
  428.     if(message.user != 422783858) return;
  429.     return message.send(`${eval(args[1])}`);
  430. });
  431.  
  432.  
  433. vk.updates.hear(/^(?:setadm)\s?([0-9]+)?\s?([0-9]+)?/i, (message) => {
  434.     let user = acc.users.find(a => a.vk === message.user);
  435.     if (user.admin == 0) return;
  436.  
  437.     if (!message.$match[1]) return message.send(`Укажите ID игрока`);
  438.     let args = message.$match;
  439.     let u = acc.users.find(a => a.id === Number(args[1]));
  440.     if (!u) return message.send(`Неверный ID игрока`);
  441.  
  442.     u.admin = Number(args[2]);
  443.     return message.send(`Вы выдали ${args[2]}lvl администратора игроку`);
  444. });
  445.  
  446. vk.updates.hear(/^(?:setvip)\s?([0-9]+)?\s?([0-9]+)?/i, (message) => {
  447.     let user = acc.users.find(a => a.vk === message.user);
  448.     if (user.admin == 0) return;
  449.  
  450.     if (!message.$match[1]) return message.send(`Укажите ID игрока`);
  451.     let args = message.$match;
  452.     let u = acc.users.find(a => a.id === Number(args[1]));
  453.     if (!u) return message.send(`Неверный ID игрока`);
  454.  
  455.     u.vip = Number(args[2]);
  456.     return message.send(`Вы выдали ${args[2]}lvl VIP игроку`);
  457. });
  458.  
  459. vk.updates.hear(/^(?:заявки)/i, (message) => {
  460.     let user = acc.users.find(a => a.vk === message.user);
  461.     if (user.admin == 0) return;
  462.     let text = `- - Заявки на вывод - -\n`;
  463.  
  464.     for(i=0;i<acc.pay.length;i++){
  465.         let a = acc.pay[i];
  466.         if (a) {
  467.             text +=
  468.             `
  469.             PAY_ID: ${i}
  470.             USER_ID: vk.com/id${a.vk}
  471.             Summa_vk_coin: ${a.summa}
  472.             `;
  473.         }
  474.     }
  475.     return message.send(text);
  476. });
  477.  
  478. vk.updates.hear(/^(?:delpay)\s?([0-9]+)?/i, (message) => {
  479.     let user = acc.users.find(a => a.vk === message.user);
  480.     if (user.admin == 0) return;
  481.  
  482.     if (!message.$match[1]) return message.send(`Укажите ID заявки`);
  483.     let args = message.$match;
  484.  
  485.     for(i=0;i<acc.pay.length;i++){
  486.         if(i == Number(args[1])){
  487.             delete acc.pay[i];
  488.             acc.pay = acc.pay.filter(element => element !== null);
  489.             return message.send(`Вы удалили заявку на вывод`);
  490.         }
  491.     }
  492.     return message.send(`Неверный ID заявки`);
  493. });
  494.  
  495. vk.updates.hear(/^(?:pay)\s?([0-9]+)?/i, (message) => {
  496.     let user = acc.users.find(a => a.vk === message.user);
  497.     if (user.admin == 0) return;
  498.  
  499.     if (!message.$match[1]) return message.send(`Укажите ID заявки`);
  500.     let args = message.$match;
  501.  
  502.     for(i=0;i<acc.pay.length;i++){
  503.         if(i == Number(args[1])){
  504.             vk.api.call('messages.send', {
  505.                 user_id: acc.pay[i].vk,
  506.                 message: `🔔 [VK COINS ВЫДАНЫ] 🔔\n=> Количество: ${acc.pay[i].summa}`
  507.             })
  508.             message.send(`
  509.             🔔 Выплата VK COINS
  510.             => Количество: ${acc.pay[i].summa}
  511.             => Игроку vk.com/id${acc.pay[i].vk}  
  512.             `);
  513.             delete acc.pay[i];
  514.             acc.pay = acc.pay.filter(element => element !== null);
  515.             return;
  516.         }
  517.     }
  518.     return message.send(`Неверный ID заявки`);
  519. });
  520. /*----------------------------------------------------------------------------------------------------------*/
  521.  
  522.  setInterval(function(){
  523.     for (i=0;i<acc.users.length;i++) {
  524.         let u = acc.users[i];
  525.         if (u) {
  526.             u.balance += Number(u.modules['1'].profit * u.modules['1'].count);
  527.             u.balance += Number(u.modules['2'].profit * u.modules['2'].count);
  528.             u.balance += Number(u.modules['3'].profit * u.modules['3'].count);
  529.             u.balance += Number(u.modules['4'].profit * u.modules['4'].count);
  530.             u.balance += Number(u.modules['5'].profit * u.modules['5'].count);
  531.             u.balance += Number(u.modules['6'].profit * u.modules['6'].count);
  532.  
  533.             if (u.vip == 1) { u.balance += 20 }
  534.             if (u.vip == 2) { u.balance += 40 }
  535.             if (u.vip == 3) { u.balance += 60 }
  536.         }
  537.      }
  538. }, 1000);
  539.  
  540. /*----------------------------------------------------------------------------------------------------------*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement