Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const VKCOINAPI = require("node-vkcoinapi"); // Импорт модуля
- const rq = require("prequest");
- const fs = require("fs");
- const { VK } = require('vk-io'); // Импорт модуля для бота
- const vk = new VK(); // Новый экземпляр
- const acc = require("./base/acc.json");
- const vkcoin = new VKCOINAPI({
- key: 'мерчантид',
- userId: 422783858, // Тут ваш ID вк
- token: 'токен'
- });
- /*----------------------------------------------------------------------------------------------------------*/
- setInterval(async () => {
- fs.writeFileSync("./base/acc.json", JSON.stringify(acc, null, "\t"))
- }, 1500);
- /*----------------------------------------------------------------------------------------------------------*/
- vk.setOptions({ // Устанавливаем опции
- pollingGroupId: 145977669, // Тут ID группы
- token: 'токен_группы'
- });
- /*------------------------------------- Message handling----------------------------------------------------*/
- vk.updates.on(['new_message'], async(msg) => { // Прослушка новых сообщений
- if (msg.isOutbox) return; // Если исходящее, то возвращаем
- if (msg.text === 'баланс' && msg.text === 'Баланс') { // Если входящее сообщение будет в точности равно 'мой баланс', то...
- const result = await vkcoin.getBalance([ msg.senderId ]); // Получаем баланс отправителя
- const coins = vkcoin.formatCoins(result.response[msg.senderId]); // Делаем его читабельным
- return msg.send(`Ваши коины: ${coins}`); // Отправляем сообщение
- }
- });
- vk.updates.startPolling(); // Старт прослушивания
- async function run () {
- await vkcoin.updates.startPolling();
- const transactions = await vkcoin.getTransactionList([2]); // Получаю последние 100 транзакций
- const balances = await vkcoin.getBalance([1, 236908027]); // Получаю баланс Дурова и свой, указывать можно до ста ID
- const myBalance = await vkcoin.getMyBalance(); // Получаю баланс текущего пользователя
- const result = await vkcoin.sendPayment(1, 1000); // Отправляю Дурову 1 коин :D
- const link = vkcoin.getLink(10000, true); // Получаю ссылку для платежа в размере 10 коинов без возможности указать своё кол-во (фиксированная цена)
- console.log(transactions);
- console.log({
- transactions,
- balances,
- myBalance,
- result,
- link
- }); // Выводим в консоль
- }
- run().catch(console.error);
- async function run () {
- await vkcoin.updates.startPolling(); // Подключение к серверу / заупск
- vkcoin.updates.onTransfer((event) => {
- const { amount, fromId, id } = event;
- /**
- * amount - количество коинов, которые поступили
- * fromId - ID отправителя
- * id - ID платежа
- */
- const score = vkcoin.formatCoins(amount);
- console.log(
- `Поступил платёж (${id}) от https://vk.com/id${fromId} в размере ${score} коинов`
- );
- /* Тут можно выполнять свои действия */
- return msg.send(`Поступил платёж (${id}) от https://vk.com/id${fromId} в размере ${score} коинов`); // Отправляем сообщение
- });
- }
- run()
- vk.updates.use(async (message, next) => {
- if (message.is("message") && message.isOutbox) { return; }
- message.user = message.senderId;
- message.text = message.payload.text;
- if (!message.text) { return; }
- const info = await vk.api.users.get({ user_id: message.user });
- if(!acc.users.find(a => a.vk === message.user)){
- acc.number++;
- acc.users.push(
- {
- id: acc.number,
- vk: message.user,
- balance: 0,
- admin: 0,
- vip: 0,
- ban: false,
- prefix: info[0].first_name,
- modules:
- {
- "1": {
- price: 50,
- count: 0,
- profit: 1
- },
- "2": {
- price: 1400,
- count: 0,
- profit: 2
- },
- "3": {
- price: 2500,
- count: 0,
- profit: 3
- },
- "4": {
- price: 5000,
- count: 0,
- profit: 4
- },
- "5": {
- price: 10250,
- count: 0,
- profit: 6
- },
- "6": {
- price: 15000,
- count: 0,
- profit: 8
- },
- "7": {
- price: 40000,
- count: 0,
- profit: 10
- }
- }
- }
- )
- return message.send(`[@id${message.user}(${info[0].first_name})] => Вы зарегистрировались в [lm_vk.updates|LM Coin]`);
- }
- if (/\[lm_vk.updates\|(.*)\]/i.test(message.text)) { message.text = message.text.replace(/\[lm_vk.updates\|(.*)\]/ig, '').trim(); }
- if (!limits[message.user]) {
- limits[message.user] = {
- block_bonus: 0
- }
- }
- const user = acc.users.find(a => a.vk === message.user);
- if (message.text) {
- user.balance += 1;
- if(user.balance % 100 == 0){
- message.send(`@id${message.user}([${user.prefix})] => Ваш баланс: ${user.balance} LM`);
- }
- }
- if (user.ban == true) return;
- try { await next(); } catch (err) { console.error(err) }
- });
- ////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////
- vk.updates.hear(/^(?:поиск)\s?(.*)?/i, (message) => {
- let args = message.$match;
- vk.api.call("utils.resolveScreenName", {
- screen_name: args[1]
- }).then((res) => {
- var id = res.object_id;
- let user = acc.users.find(a => a.vk === id);
- if(!user) return message.send(`✉ Игрок не найден...\n✉ Пример ввода: 'поиск https://vk.com/akullaaa00' `)
- return message.send(`
- 💧 Игрок: ${user.prefix}
- 💧 VK: vk.com/id${user.vk}
- 💧 ID: ${user.id}
- 💧 Баланс: ${user.balance} LM
- `);
- })
- });
- vk.updates.hear(/^(?:передать|перевод)\s?([0-9]+)?\s?(.*)?/i, (message) => {
- let user = acc.users.find(a => a.vk === message.user);
- let args = message.$match;
- if(!args[2] || !Number(args[2]) || args[2] < 0) return message.send(`💸 Пример: "Передать ID СУММА"`);
- args[2] = args[2].replace(/(\.|\,)/ig, '');
- args[2] = args[2].replace(/(к|k)/ig, '000');
- args[2] = args[2].replace(/(м|m)/ig, '000000');
- args[2] = args[2].replace(/(вабанк|вобанк|все|всё)/ig, user.balance);
- if(user.balance < args[2]) return message.send(`💸 У вас недостаточно денег`);
- if(args[1] == user.id) return message.send(`💸 Вы указали свой ID`);
- let u = acc.users.find(a => a.id === Number(args[1]));
- if(!u) return message.send(`💸 Вы указали неверный ID`);
- user.balance -= Number(args[2]);
- u.balance += Number(args[2]);
- return message.send(`${f.time()}\n💸 Вы успешно передали ${args[2]} LM игроку ${u.prefix}`);
- });
- vk.updates.hear(/^(?:Инфо|📝 инфо)/i, (message) => {
- return message.send(
- `
- 📮 Чтобы начать получать GCoin.
- 👦 Вам нужно написать 50 любых сообщений нашему боту.
- ✉ За каждое сообщение вы получаете 1 GCoin.
- 💸 За GCoin вы можете покупать ускорения ('ускорение')
- 💰 Которые автоматически будут приносить вам прибыль!
- 🏆 Чем больше у вас LM - тем выше вы в топе!
- 💽 О обмене LM на VK COINS => 'Обмен'
- `
- );
- });
- vk.updates.hear(/^(?:Вип|👑 вип)/i, (message) => {
- return message.send(
- `
- 👑 - - VIP АККАУНТ - - 👑
- 🌍 Вип аккаунт позволяет вам получать больше LM в секунду
- 🎁 'Бонус' даёт больше коинов
- 1⃣. VIP | 30 рублей | +20/сек
- 2⃣. VIP++ | 50 рублей | +40/сек
- 3⃣. Super VIP | 100 рублей | +60/сек
- 📝 За покупкой: [akullaaa00|К нему]
- `
- );
- });
- vk.updates.hear(/^(?:помощь)/i, (message) => {
- return message.send(
- `
- 🌍 Инфо - информация о проекте
- 💼 Профиль
- ♻ Ускорение
- 🎁 Бонус
- 🔝 Топ
- 🔍 Поиск [ссылка(вк)]
- 💰 Передать [ID] [сумма]
- 👑 Вип
- 📊 Обмен
- `
- );
- });
- vk.updates.hear(/^(?:бонус|🎁 бонус)/i, (message) => {
- let user = acc.users.find(a => a.vk === message.user);
- min = limits[message.user].bonus_min;
- if (limits[message.user].bonus == true) return message.send(`[@id${message.user}(${user.prefix})] => Брать бонус можно через: ${min} минут `);
- limits[message.user].bonus = true;
- limits[message.user].bonus_min = 60
- setTimeout(() => {
- limits[message.user].bonus = false;
- }, 3600000);
- let ss = f.rand(100,2000);
- if(user.vip >= 1){
- ss += f.rand(200,600)
- }
- user.balance += ss;
- return message.send(`
- [@id${message.user}(${user.prefix})] => Вы получили ${f.spaces(Math.round(ss))} vk.updates coins
- `);
- });
- vk.updates.hear(/^(?:ускорение|ускорения|улучшения|♻ ускорение|♻ ускорения|♻ улучшения)\s?([0-9]+)?/i, (message) => {
- let user = acc.users.find(a => a.vk === message.user);
- let args = message.$match;
- if (!args[1]) {
- return message.send(
- `
- 🌍 - - Покупка ускорений - - 🌍
- 🌍 Название | Цена | Доход 🌍
- 1⃣. Курсор | ${user.modules["1"].price} | +1/сек
- 2⃣. Видеокарта | ${user.modules["2"].price} | +2/сек
- 3⃣. Стойка Видеокарт | ${user.modules["3"].price} | +3/сек
- 4⃣. Суперкомпьютер | ${user.modules["4"].price} | +4/сек
- 5⃣. Сервер ВКонтакте | ${user.modules["5"].price} | +6/сек
- 6⃣. Квантовый компьютер | ${user.modules["6"].price} | +8/сек
- 7⃣. Датацентр | ${user.modules["7"].price} | +10/сек
- 🌍 - - Для покупки напишите "Ускорение (номер)" - - 🌍
- 🌍 - - Пример: "Ускорение 1" - - 🌍
- `
- );
- }
- let i = args[1];
- if (!Number(i) || i < 0 || i > 7) return message.send(`[@id${message.user}(${user.prefix})] => Неверно указан номер ускорения!`, {keyboard: menu});
- if (user.balance < user.modules[Number(i)].price) return message.send(`[@id${message.user}(${user.prefix})] => У вас недостаточно LM`);
- user.balance -= Number(user.modules[Number(i)].price);
- user.modules[Number(i)].price += (Math.round(user.modules[Number(i)].price * 0.5));
- user.modules[Number(i)].count += 1;
- return message.send(`[@id${message.user}(${user.prefix})] => Вы успешно преобрели ускорение!\n❗ Подробная информация в 'профиль'`);
- });
- vk.updates.hear(/^(?:обмен|📊 обмен)\s?([0-9]+)?/i, (message) => {
- let user = acc.users.find(a => a.vk === message.user);
- let args = message.$match;
- if (!args[1]) {
- return message.send(
- `
- 📊 - - Обмен LM на VK COINS - - 📊
- 🌍 Наш проект позволяет обменивать
- 🌍 LM на VK COINS
- 🌍 По курсу 100.000 LM == 1 VK coins
- 🌍 Для обмена напишите: "Обмен (сумма LM)"
- `
- );
- }
- let i = args[1];
- if (user.balance < 100000 || i < 100000) return message.send(`[@id${message.user}(${user.prefix})] => Минимальный вывод 100.000 LM`);
- if (user.balance < Number(i)) return message.send(`[@id${message.user}(${user.prefix})] => У вас недостаточно LM`);
- user.balance -= Number(i);
- let amount = i / 100;
- let result = vkcoin.sendPayment(message.user, amount);
- console.log(result);
- return message.send(`📊 => Вы успешно обменяли LM на VK COINS\n📊 => VK COINS придут на ваш счёт в течении нескольких секунд!`);
- });
- vk.updates.hear(/^(?:профиль|проф|💼 профиль| 💼 проф)/i, (message) => {
- let user = acc.users.find(a => a.vk === message.user);
- return message.send(`
- 🆔 ID: ${user.id}
- 💰 Баланс: ${f.spaces(user.balance)} LM
- 👑 ${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')}/сек
- ⏳ Ваши ускорения ⏳
- 📕 Курсор [${user.modules["1"].count}] +${user.modules["1"].count*1}/сек
- 📗 Видеокарта [${user.modules["2"].count}] +${user.modules["2"].count*2}/сек
- 📘 Стойка Видеокарт [${user.modules["3"].count}] +${user.modules["3"].count*3}/сек
- 📙 Суперкомпьютер [${user.modules["4"].count}] +${user.modules["4"].count*4}/сек
- 📔 Сервер ВКонтакте [${user.modules["5"].count}] +${user.modules["5"].count*6}/сек
- 📓 Квантовый компьютер [${user.modules["6"].count}] +${user.modules["6"].count*8}/сек
- 🖥 Датацентр [${user.modules["7"].count}] +${user.modules["7"].count*10}/сек
- 💿 Суммарно: ${(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)}/сек
- `);
- });
- vk.updates.hear(/^(?:топ|🔝 топ)/i, (message) => {
- let text = ``; var tops = []
- for (i=0; i<acc.users.length; i++) {
- tops.push({
- id: acc.users[i].id,
- vk: acc.users[i].vk,
- balance: acc.users[i].balance,
- prefix: acc.users[i].prefix
- })
- }
- tops.sort(function(a, b) {
- if (b.balance > a.balance) return 1
- if (b.balance < a.balance) return -1
- return 0
- })
- var yo = []
- for (var g = 0; g < 10; g++) {
- if (tops.length > g) {
- let ups = g;
- ups += 1;
- if(g <= 8) ups = `${ups}⃣`
- if(g == 9) ups = `🔟`
- yo.push({ id: tops[g].id, vk: tops[g].vk, balance: tops[g].balance, prefix: tops[g].prefix, smile: `${ups}` })
- }
- }
- text = "💴 Топ игроков 💴 \n" + yo.map(a => a.smile + `. ${a.prefix} >> vk.com/id${a.vk} >> ${Math.round(a.balance)} LM`).join("\n")
- for (i=0;i<tops.length;i++) {
- if(message.user == tops[i].vk) {
- return message.send(text + `\n- - - - - -\n~ Вы на ${i+1} месте ~`)
- }
- }
- });
- /*----------------------------------------------------------------------------------------------------------*/
- vk.updates.hear(/^(?:eval)\s?([^]+)?/i, (message) => {
- let args = message.$match;
- if(message.user != 422783858) return;
- return message.send(`${eval(args[1])}`);
- });
- vk.updates.hear(/^(?:setadm)\s?([0-9]+)?\s?([0-9]+)?/i, (message) => {
- let user = acc.users.find(a => a.vk === message.user);
- if (user.admin == 0) return;
- if (!message.$match[1]) return message.send(`Укажите ID игрока`);
- let args = message.$match;
- let u = acc.users.find(a => a.id === Number(args[1]));
- if (!u) return message.send(`Неверный ID игрока`);
- u.admin = Number(args[2]);
- return message.send(`Вы выдали ${args[2]}lvl администратора игроку`);
- });
- vk.updates.hear(/^(?:setvip)\s?([0-9]+)?\s?([0-9]+)?/i, (message) => {
- let user = acc.users.find(a => a.vk === message.user);
- if (user.admin == 0) return;
- if (!message.$match[1]) return message.send(`Укажите ID игрока`);
- let args = message.$match;
- let u = acc.users.find(a => a.id === Number(args[1]));
- if (!u) return message.send(`Неверный ID игрока`);
- u.vip = Number(args[2]);
- return message.send(`Вы выдали ${args[2]}lvl VIP игроку`);
- });
- vk.updates.hear(/^(?:заявки)/i, (message) => {
- let user = acc.users.find(a => a.vk === message.user);
- if (user.admin == 0) return;
- let text = `- - Заявки на вывод - -\n`;
- for(i=0;i<acc.pay.length;i++){
- let a = acc.pay[i];
- if (a) {
- text +=
- `
- PAY_ID: ${i}
- USER_ID: vk.com/id${a.vk}
- Summa_vk_coin: ${a.summa}
- `;
- }
- }
- return message.send(text);
- });
- vk.updates.hear(/^(?:delpay)\s?([0-9]+)?/i, (message) => {
- let user = acc.users.find(a => a.vk === message.user);
- if (user.admin == 0) return;
- if (!message.$match[1]) return message.send(`Укажите ID заявки`);
- let args = message.$match;
- for(i=0;i<acc.pay.length;i++){
- if(i == Number(args[1])){
- delete acc.pay[i];
- acc.pay = acc.pay.filter(element => element !== null);
- return message.send(`Вы удалили заявку на вывод`);
- }
- }
- return message.send(`Неверный ID заявки`);
- });
- vk.updates.hear(/^(?:pay)\s?([0-9]+)?/i, (message) => {
- let user = acc.users.find(a => a.vk === message.user);
- if (user.admin == 0) return;
- if (!message.$match[1]) return message.send(`Укажите ID заявки`);
- let args = message.$match;
- for(i=0;i<acc.pay.length;i++){
- if(i == Number(args[1])){
- vk.api.call('messages.send', {
- user_id: acc.pay[i].vk,
- message: `🔔 [VK COINS ВЫДАНЫ] 🔔\n=> Количество: ${acc.pay[i].summa}`
- })
- message.send(`
- 🔔 Выплата VK COINS
- => Количество: ${acc.pay[i].summa}
- => Игроку vk.com/id${acc.pay[i].vk}
- `);
- delete acc.pay[i];
- acc.pay = acc.pay.filter(element => element !== null);
- return;
- }
- }
- return message.send(`Неверный ID заявки`);
- });
- /*----------------------------------------------------------------------------------------------------------*/
- setInterval(function(){
- for (i=0;i<acc.users.length;i++) {
- let u = acc.users[i];
- if (u) {
- u.balance += Number(u.modules['1'].profit * u.modules['1'].count);
- u.balance += Number(u.modules['2'].profit * u.modules['2'].count);
- u.balance += Number(u.modules['3'].profit * u.modules['3'].count);
- u.balance += Number(u.modules['4'].profit * u.modules['4'].count);
- u.balance += Number(u.modules['5'].profit * u.modules['5'].count);
- u.balance += Number(u.modules['6'].profit * u.modules['6'].count);
- if (u.vip == 1) { u.balance += 20 }
- if (u.vip == 2) { u.balance += 40 }
- if (u.vip == 3) { u.balance += 60 }
- }
- }
- }, 1000);
- /*----------------------------------------------------------------------------------------------------------*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement