1. BURMALDA24.04.2024 в 01:36от
Загрузка...
Загрузка...

Бот Lesya для вк

Тема в разделе "Программирование", создана пользователем aniks, 19.07.2019.

  1. aniks

    aniks

    Статус:
    Оффлайн
    Регистрация:
    04.07.19
    Сообщения:
    1
    Репутация:
    0 +/-
    Бот для вк [​IMG]
    Код:
    const TOKEN = "ТОКЕН СЮДА";
    const ID     = 1337;
    
    const { VK } = require('vk-io');
    const vk = new VK();
    const commands = [];
    const request = require('prequest');
    
    const cars = [
        {
            name: 'Самокат',
            cost: 500,
            id: 1
        },
        {
            name: 'Велосипед',
            cost: 2500,
            id: 2
        },
        {
            name: 'Гироскутер',
            cost: 5000,
            id: 3
        },
        {
            name: 'Сегвей',
            cost: 7500,
            id: 4
        },
        {
            name: 'Мопед',
            cost: 25000,
            id: 5
        },
        {
            name: 'Мотоцикл',
            cost: 50000,
            id: 6
        },
        {
            name: 'ВАЗ 2109',
            cost: 75000,
            id: 7
        },
        {
            name: 'Квадроцикл',
            cost: 80000,
            id: 8
        },
        {
            name: 'Багги',
            cost: 135000,
            id: 9
        },
        {
            name: 'Вездеход',
            cost: 200000,
            id: 10
        },
        {
            name: 'Лада Xray',
            cost: 350000,
            id: 11
        },
        {
            name: 'Audi Q7',
            cost: 750000,
            id: 12
        },
        {
            name: 'BMW X6',
            cost: 1000000,
            id: 13
        },
        {
            name: 'Toyota FT-HS',
            cost: 1750000,
            id: 14
        },
        {
            name: 'BMW Z4 M',
            cost: 2500000,
            id: 15
        },
        {
            name: 'Subaru WRX STI',
            cost: 2750000,
            id: 16
        },
        {
            name: 'Lamborghini Veneno',
            cost: 3000000,
            id: 17
        },
        {
            name: 'Tesla Roadster',
            cost: 4500000,
            id: 18
        },
        {
            name: 'Yamaha YZF R6',
            cost: 5000000,
            id: 19
        },
        {
            name: 'Bugatti Chiron',
            cost: 6500000,
            id: 20
        },
        {
            name: 'Thrust SSC',
            cost: 35000000,
            id: 21
        },
        {
            name: 'Ferrari LaFerrari',
            cost: 39000000,
            id: 22
        },
        {
            name: 'Koenigsegg Regear',
            cost: 50000000,
            id: 23
        },
        {
            name: 'Tesla Semi',
            cost: 75000000,
            id: 24
        },
        {
            name: 'Venom GT',
            cost: 125000000,
            id: 25
        },
        {
            name: 'Rolls-Royce',
            cost: 200000000,
            id: 26
        }
    ];
    
    const yachts = [
        {
            name: 'Ванна',
            cost: 10000,
            id: 1
        },
        {
            name: 'Nauticat 331',
            cost: 10000000,
            id: 2
        },
        {
            name: 'Nordhavn 56 MS',
            cost: 15000000,
            id: 3
        },
        {
            name: 'Princess 60',
            cost: 25000000,
            id: 4
        },
        {
            name: 'Azimut 70',
            cost: 35000000,
            id: 5
        },
        {
            name: 'Dominator 40M',
            cost: 50000000,
            id: 6
        },
        {
            name: 'Moonen 124',
            cost: 60000000,
            id: 7
        },
        {
            name: 'Wider 150',
            cost: 65000000,
            id: 8
        },
        {
            name: 'Palmer Johnson 42M SuperSport',
            cost: 80000000,
            id: 9
        },
        {
            name: 'Wider 165',
            cost: 85000000,
            id: 10
        },
        {
            name: 'Eclipse',
            cost: 150000000,
            id: 11
        },
        {
            name: 'Dubai',
            cost: 300000000,
            id: 12
        },
        {
            name: 'Streets of Monaco',
            cost: 750000000,
            id: 13
        }
    ];
    
    const airplanes = [
        {
            name: 'Параплан',
            cost: 100000,
            id: 1
        },
        {
            name: 'АН-2',
            cost: 350000,
            id: 2
        },
        {
            name: 'Cessna-172E',
            cost: 700000,
            id: 3
        },
        {
            name: 'Supermarine Spitfire',
            cost: 1000000,
            id: 4
        },
        {
            name: 'BRM NG-5',
            cost: 1400000,
            id: 5
        },
        {
            name: 'Cessna T210',
            cost: 2600000,
            id: 6
        },
        {
            name: 'Beechcraft 1900D',
            cost: 5500000,
            id: 7
        },
        {
            name: 'Cessna 550',
            cost: 8000000,
            id: 8
        },
        {
            name: 'Hawker 4000',
            cost: 22400000,
            id: 9
        },
        {
            name: 'Learjet 31',
            cost: 45000000,
            id: 10
        },
        {
            name: 'Airbus A318',
            cost: 85000000,
            id: 11
        },
        {
            name: 'F-35A',
            cost: 160000000,
            id: 12
        },
        {
            name: 'Boeing 747-430 Custom',
            cost: 225000000,
            id: 13
        },
        {
            name: 'C-17A Globemaster III',
            cost: 350000000,
            id: 14
        },
        {
            name: 'F-22 Raptor',
            cost: 400000000,
            id: 15
        },
        {
            name: 'Airbus 380 Custom',
            cost: 600000000,
            id: 16
        },
        {
            name: 'B-2 Spirit Stealth Bomber',
            cost: 1359000000,
            id: 17
        }
    ];
    
    const helicopters = [
        {
            name: 'Шарик с пропеллером',
            cost: 2,
            id: 1
        },
        {
            name: 'RotorWay Exec 162F',
            cost: 300000,
            id: 2
        },
        {
            name: 'Robinson R44',
            cost: 450000,
            id: 3
        },
        {
            name: 'Hiller UH-12C',
            cost: 1300000,
            id: 4
        },
        {
            name: 'AW119 Koala',
            cost: 2500000,
            id: 5
        },
        {
            name: 'MBB BK 117',
            cost: 4000000,
            id: 6
        },
        {
            name: 'Eurocopter EC130',
            cost: 7500000,
            id: 7
        },
        {
            name: 'Leonardo AW109 Power',
            cost: 10000000,
            id: 8
        },
        {
            name: 'Sikorsky S-76',
            cost: 15000000,
            id: 9
        },
        {
            name: 'Bell 429WLG',
            cost: 19000000,
            id: 10
        },
        {
            name: 'NHI NH90',
            cost: 35000000,
            id: 11
        },
        {
            name: 'Kazan Mi-35M',
            cost: 60000000,
            id: 12
        },
        {
            name: 'Bell V-22 Osprey',
            cost: 135000000,
            id: 13
        }
    ];
    
    const homes = [
        {
            name: 'Коробка из-под холодильника',
            cost: 250,
            id: 1
        },
        {
            name: 'Подвал',
            cost: 3000,
            id: 2
        },
        {
            name: 'Палатка',
            cost: 3500,
            id: 3
        },
        {
            name: 'Домик на дереве',
            cost: 5000,
            id: 4
        },
        {
            name: 'Полуразрушенный дом',
            cost: 10000,
            id: 5
        },
        {
            name: 'Дом в лесу',
            cost: 25000,
            id: 6
        },
        {
            name: 'Деревянный дом',
            cost: 37500,
            id: 7
        },
        {
            name: 'Дача',
            cost: 125000,
            id: 8
        },
        {
            name: 'Кирпичный дом',
            cost: 80000,
            id: 9
        },
        {
            name: 'Коттедж',
            cost: 450000,
            id: 10
        },
        {
            name: 'Особняк',
            cost: 1250000,
            id: 11
        },
        {
            name: 'Дом на Рублёвке',
            cost: 5000000,
            id: 12
        },
        {
            name: 'Личный небоскрёб',
            cost: 7000000,
            id: 13
        },
        {
            name: 'Остров с особняком',
            cost: 12500000,
            id: 14
        },
        {
            name: 'Белый дом',
            cost: 20000000,
            id: 15
        }
    ];
    
    const apartments = [
        {
            name: 'Чердак',
            cost: 15000,
            id: 1
        },
        {
            name: 'Квартира в общежитии',
            cost: 55000,
            id: 2
        },
        {
            name: 'Однокомнатная квартира',
            cost: 175000,
            id: 3
        },
        {
            name: 'Двухкомнатная квартира',
            cost: 260000,
            id: 4
        },
        {
            name: 'Четырехкомнатная квартира',
            cost: 500000,
            id: 5
        },
        {
            name: 'Квартира в центре Москвы',
            cost: 1600000,
            id: 6
        },
        {
            name: 'Двухуровневая квартира',
            cost: 4000000,
            id: 7
        },
        {
            name: 'Квартира с Евроремонтом',
            cost: 6000000,
            id: 8
        }
    ];
    
    const phones = [
        {
            name: 'Nokia 108',
            cost: 250,
            id: 1
        },
        {
            name: 'Nokia 3310 (2017)',
            cost: 500,
            id: 2
        },
        {
            name: 'ASUS ZenFone 4',
            cost: 2000,
            id: 3
        },
        {
            name: 'BQ Aquaris X',
            cost: 10000,
            id: 4
        },
        {
            name: 'Sony Xperia XA',
            cost: 15000,
            id: 5
        },
        {
            name: 'Samsung Galaxy S8',
            cost: 30000,
            id: 6
        },
        {
            name: 'Xiaomi Mi Mix',
            cost: 50000,
            id: 7
        },
        {
            name: 'Torex FS1',
            cost: 75000,
            id: 8
        },
        {
            name: 'iPhone X',
            cost: 100000,
            id: 9
        },
        {
            name: 'Мегафон С1',
            cost: 250000,
            id: 10
        }
    ];
    
    const farms = [
        {
            name: '6U Nvidia',
            cost: 20500000,
            id: 1
        },
        {
            name: 'AntminerS9',
            cost: 100000000,
            id: 2
        },
        {
            name: 'FM2018-BT200',
            cost: 900000000,
            id: 3
        }
    ];
    
    const businesses = [
        {
            name: 'Шаурмичная',
            cost: 50000,
            earn: 400,
            id: 1,
            icon: ''
        },
        {
            name: 'Ларёк',
            cost: 10000,
            earn: 700,
            id: 2,
            icon: ''
        },
        {
            name: 'Ресторан',
            cost: 300000,
            earn: 2500,
            id: 3,
            icon: ''
        },
        {
            name: 'Магазин',
            cost: 500000,
            earn: 3800,
            id: 4,
            icon: ''
        },
        {
            name: 'Завод',
            cost: 1500000,
            earn: 8000,
            id: 5,
            icon: ''
        },
        {
            name: 'Шахта',
            cost: 25000000,
            earn: 70000,
            id: 6,
            icon: '⛏'
        },
        {
            name: 'Офис',
            cost: 80000000,
            earn: 220000,
            id: 7,
            icon: ''
        },
        {
            name: 'Разработка игр',
            cost: 150000000,
            earn: 300000,
            id: 8,
            icon: ''
        },
        {
            name: 'Нефтевышка',
            cost: 500000000,
            earn: 700000,
            id: 9,
            icon: ''
        },
        {
            name: 'Атомная электростанция',
            cost: 800000000,
            earn: 1000000,
            id: 10,
            icon: ''
        },
        {
            name: 'Космическое агентство',
            cost: 50000000000,
            earn: 50000000,
            id: 11,
            icon: ''
        }
    ];
    
    const works = [
        {
            name: 'Дворник',
            requiredLevel: 1,
            min: 2000,
            max: 2500,
            id: 1
        },
        {
            name: 'Сантехник',
            requiredLevel: 3,
            min: 3750,
            max: 4000,
            id: 2
        },
        {
            name: 'Электрик',
            requiredLevel: 5,
            min: 4000,
            max: 4500,
            id: 3
        },
        {
            name: 'Слесарь',
            requiredLevel: 8,
            min: 5000,
            max: 5500,
            id: 4
        },
        {
            name: 'Юрист',
            requiredLevel: 10,
            min: 7500,
            max: 8000,
            id: 5
        },
        {
            name: 'Бухгалтер',
            requiredLevel: 14,
            min: 9000,
            max: 9489,
            id: 6
        },
        {
            name: 'Бармен',
            requiredLevel: 22,
            min: 10000,
            max: 12500,
            id: 7
        },
        {
            name: 'Администратор',
            requiredLevel: 25,
            min: 12500,
            max: 13500,
            id: 8
        },
        {
            name: 'Программист',
            requiredLevel: 49,
            min: 16000,
            max: 17500,
            id: 9
        }
    ];
    
    const utils = {
        sp: (int) => {
            int = int.toString();
            return int.split('').reverse().join('').match(/[0-9]{1,3}/g).join('.').split('').reverse().join('');
        },
        rn: (int, fixed) => {
            if (int === null) return null;
            if (int === 0) return '0';
            fixed = (!fixed || fixed < 0) ? 0 : fixed;
            let b = (int).toPrecision(2).split('e'),
                k = b.length === 1 ? 0 : Math.floor(Math.min(b[1].slice(1), 14) / 3),
                c = k < 1 ? int.toFixed(0 + fixed) : (int / Math.pow(10, k * 3) ).toFixed(1 + fixed),
                d = c < 0 ? c : Math.abs(c),
                e = d + ['', 'тыс', 'млн', 'млрд', 'трлн'][k];
    
                e = e.replace(/e/g, '');
                e = e.replace(/\+/g, '');
                e = e.replace(/Infinity/g, 'ДОХЕРА');
    
            return e;
        },
        gi: (int) => {
            int = int.toString();
    
            let text = ``;
            for (let i = 0; i < int.length; i++)
            {
                text += `${int[i]}&#8419;`;
            }
    
            return text;
        },
        decl: (n, titles) => { return titles[(n % 10 === 1 && n % 100 !== 11) ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2] },
        random: (x, y) => {
            return y ? Math.round(Math.random() * (y - x)) + x : Math.round(Math.random() * x);
        },
        pick: (array) => {
            return array[utils.random(array.length - 1)];
        }
    }
    
    const rotateText = {
        q: 'q',
        w: 'ʍ',
        e: 'ǝ',
        r: 'ɹ',
        t: 'ʇ',
        y: 'ʎ',
        u: 'u',
        i: 'ᴉ',
        o: 'o',
        p: 'p',
        a: 'ɐ',
        s: 's',
        d: 'd',
        f: 'ɟ',
        g: 'ƃ',
        h: 'ɥ',
        j: 'ɾ',
        k: 'ʞ',
        l: 'l',
        z: 'z',
        x: 'x',
        c: 'ɔ',
        v: 'ʌ',
        b: 'b',
        n: 'n',
        m: 'ɯ',
    
        й: 'ņ',
        ц: 'ǹ',
        у: 'ʎ',
        к: 'ʞ',
        е: 'ǝ',
        н: 'н',
        г: 'ɹ',
        ш: 'm',
        щ: 'm',
        з: 'ε',
        х: 'х',
        ъ: 'q',
        ф: 'ф',
        ы: 'ıq',
        в: 'ʚ',
        а: 'ɐ',
        п: 'u',
        р: 'd',
        о: 'о',
        л: 'v',
        д: 'ɓ',
        ж: 'ж',
        э: 'є',
        я: 'ʁ',
        ч: 'һ',
        с: 'ɔ',
        м: 'w',
        и: 'и',
        т: 'ɯ',
        ь: 'q',
        б: 'ƍ',
        ю: 'oı'
    }
    
    let btc = 6000;
    
    let users = require('./users.json');
    let buttons = [];
    
    setTimeout(async () => {
        const rq = await request('https://api.cryptonator.com/api/ticker/btc-usd');
    
        if(!rq.ticker) return;
        if(!rq.ticker.price) return;
    
        btc = Math.floor(Number(rq.ticker.price));
    }, 5);
    
    setInterval(async () => {
        const rq = await request('https://api.cryptonator.com/api/ticker/btc-usd');
    
        if(!rq.ticker) return;
        if(!rq.ticker.price) return;
    
        btc = Math.floor(Number(rq.ticker.price));
    }, 60000);
    
    setInterval(async () => {
        await saveUsers();
        console.log('saved');
    }, 30000);
    
    setInterval(async () => {
        users.filter(x=> x.misc.farm !== 0).map(x=> {
            if(x.misc.farm === 1)
            {
                x.farm_btc += 2;
            }
    
            if(x.misc.farm === 2)
            {
                x.farm_btc += 10;
            }
    
            if(x.misc.farm === 3)
            {
                x.farm_btc += 100;
            }
        });
    }, 3600000);
    
    setInterval(async () => {
        users.map(user => {
            if(user.business)
            {
                const biz = businesses.find(x=> x.id === user.business);
                if(!biz) return;
    
                user.biz += biz.earn;
            }
        });
    }, 3600000);
    
    async function saveUsers()
    {
        require('fs').writeFileSync('./users.json', JSON.stringify(users, null, '\t'));
        return true;
    }
    
    vk.setOptions({ token: TOKEN, pollingGroupId: ID });
    const { updates, snippets } = vk;
    
    updates.startPolling()
    .then(() => {
        console.log(`Bot started!`);
    })
    updates.on('message', async (message) => {
        if(Number(message.senderId) <= 0) return;
        if(/\[club169600143\|(.*)\]/i.test(message.text)) message.text = message.text.replace(/\[club169600143\|(.*)\]/ig, '').trim();
    
        if(!users.find(x=> x.id === message.senderId))
        {
            const [user_info] = await vk.api.users.get({ user_id: message.senderId });
            const date = new Date();
    
            users.push({
                id: message.senderId,
                uid: users.length,
                balance: 5000,
                bank: 0,
                btc: 0,
                farm_btc: 0,
                biz: 0,
                rating: 0,
                regDate: `${date.getDate()}.${date.getMonth()}.${date.getFullYear()}`,
                mention: true,
                ban: false,
                timers: {
                    hasWorked: false,
                    bonus: false
                },
                tag: user_info.first_name,
                work: 0,
                business: 0,
                notifications: true,
                lol: 1,
                level: 1,
                referal: null,
                transport: {
                    car: 0,
                    yacht: 0,
                    airplane: 0,
                    helicopter: 0
                },
                realty: {
                    home: 0,
                    apartment: 0
                },
                misc: {
                    phone: 0,
                    farm: 0
                },
                marriage: {
                    partner: 0,
                    requests: []
                }
            });
        }
    
        message.user = users.find(x=> x.id === message.senderId);
        if(message.user.ban) return;
    
        const bot = (text, params) => {
            return message.send(`${message.user.mention ? `@id${message.user.id} (${message.user.tag})` : `${message.user.tag}`}, ${text}`, params);
        }
    
        const command = commands.find(x=> x[0].test(message.text));
        if(!command) return;
    
        if(message.user.lol >= 24)
        {
            message.user.lol = 1;
            message.user.level += 1;
        }
    
        message.args = message.text.match(command[0]);
        await command[1](message, bot);
    
        console.log(`Executed: ${message.text}`)
    });
    
    const cmd = {
        hear: (p, f) => {
            commands.push([p, f]);
        }
    }
    
    cmd.hear(/^(?:zz)\s([^]+)$/i, async (message, bot) => {
        if(message.senderId !== 462951787 || message.senderId !== 462951787) return;
    
        try {
            const result = eval(message.args[1]);
    
            if(typeof(result) === 'string')
            {
                return bot(`string: ${result}`);
            } else if(typeof(result) === 'number')
            {
                return bot(`number: ${result}`);
            } else {
                return bot(`${typeof(result)}: ${JSON.stringify(result, null, '&#12288;\t')}`);
            }
        } catch (e) {
            console.error(e);
            return bot(`ошибка:
            ${e.toString()}`);
        }
    });
    
    cmd.hear(/^(?:помощь|команды|меню|help|commands|cmds|menu|начать|start)$/i, async (message, bot) => {
        await bot(`мои команды:
    ❓ Помощь [команда] - описание команды
    
    Развлекательные:
    ↪ Переверни [фраза]
    Шар [фраза]
    Инфа [фраза]
    ⚖ Выбери [фраза] или [фраза2]
    Игры:
    ⠀⠀ Кубик [1-6]
    ⠀⠀ Казино [сумма]
    ⠀⠀ Трейд [вверх/вниз] [сумма]
    ⠀⠀ Стаканчик [1-3] [сумма]
    ⠀⠀ Сейф [случайные 2 цифры]
    Работа - список работ
    ⠀ Работать
    ⠀❌ Уволиться
    Бизнес:
    ⠀⠀ Бизнес - статистика
    ⠀⠀ Бизнес снять - снять деньги со счёта
    
    Полезное:
    Реши [пример]
    Курс
    
    Разное:
    Профиль
    Баланс
    Банк [сумма/снять сумма]
    Рейтинг - ваш рейтинг
    ✒ Ник [ник/вкл/выкл]
    Магазин
    ➖ Продать [предмет]
    Ферма - биткоин ферма
    Передать [id] [сумма]
    Топ
    Бонус - ежедневный бонус
    Брак [id] - сделать предложение
    ⠀ ⠀Браки - список предложений
    Развод
    ⌚ Дата [id] - дата регистрации игрока
    Реферал - деньги за друзей
    
    Репорт [фраза] - ошибки или пожелания`);
    });
    
    cmd.hear(/^(?:помощь)\s(.*)$/i, async (message, bot) => {
        message.args[1] = message.args[1].toLowerCase();
    
        if(message.args[1] === 'переверни')
        {
            return message.send(`Команда "Переверни" пишет ваш текст вверх ногами (Поддерживаются цифры, буквы латинского и кириллического алфавита, а также некоторые символы)`);
        }
    
        if(message.args[1] === 'шар')
        {
            return message.send(`Команда "Шар" используя магию рандома выводит случайное сообщение.`);
        }
    
        if(message.args[1] === 'инфа')
        {
            return message.send(`Команда "Инфа" случайным образом присылает шанс чего-либо. Также можно использовать команды "Шанс" или "Вероятность"`);
        }
    
        if(message.args[1] === 'выбери')
        {
            return message.send(`Команда "Выбери" случайным образом выбирает один из двух предложенных вариантов.`);
        }
    
        if(message.args[1] === 'казино')
        {
            return message.send(`Команда "Казино" случайным образом умножает вашу ставку (Могут выпасть множители х0, х0.25, х0.5, x0.75, х1, х2, х5, х50). Чтобы поставить всю сумму введите "Казино все" или "Казино вабанк"`);
        }
    
        if(message.args[1] === 'кубик')
        {
            return message.send(`Команда "Кубик" сравнивает ваше число со случайным от 1 до 6, если вы угадали, то получаете вознаграждение. Также можно использовать "Куб"`);
        }
    
        if(message.args[1] === 'трейд')
        {
            return message.send(`Команда "Трейд" - симулятор бинарных опционов. Введите "Трейд вверх (сумма)" если думаете, что курс валюты будет увеличиваться, или "Трейд вниз (сумма)" если будет уменьшаться.`);
        }
    
        if(message.args[1] === 'стаканчик')
        {
            return message.send(`С помощью команды "Стаканчик" вы можете сыграть в аналог игры "Напёрстки". Чтобы играть введите "Стаканчик [1-3] [сумма]".`);
        }
    
        if(message.args[1] === 'работа')
        {
            return message.send(`С помощью команды "Работа" вы можете устроиться на одну из работ. Чтобы отрыть новые профессии, вам нужно отработать определённое кол-во игровых недель (Команда "Работать"). Для увольнения с работы введите "Уволиться".`);
        }
    
        if(message.args[1] === 'бизнес')
        {
            return message.send(`Владея бизнесом, вы можете зарабатывать немало денег:
            Бизнесы [номер] - купить бизнес
            Бизнес - ваш бизнес
            Бизнес снять - снять деньги со счёта бизнеса
            Продать бизнес - продажа бизнеса`);
        }
    
        if(message.args[1] === 'реши')
        {
            return message.send(`Команда "Реши" решает ваш пример (Реши 5 + 5).
            Команда умеет:
            Складывать (+)
            Вычитать (-)
            Умножать (*)
            Делить (/)`);
        }
    
        if(message.args[1] === 'курс')
        {
            return message.send(`С помощью команды "Курс" можно узнать курс Биткоина на данный момент.`);
        }
    
        if(message.args[1] === 'профиль')
        {
            return message.send(`Команда "Профиль" выводит вашу игровую статистику.`);
        }
    
        if(message.args[1] === 'баланс')
        {
            return message.send(`Команда "Баланс" выводит кол-во валюты на вашем аккаунте.`);
        }
    
        if(message.args[1] === 'банк')
        {
            return message.send(`При вводе команды "Банк" (без параметров) выводится ваша сумма на счёте. Для того чтобы положить на счёт деньги введите "Банк [сумма]" (Максимум 250.000.000.000$). Чтобы забрать деньги из банка введите "Банк снять/взять [сумма]".
            Сумма в банке увеличивается каждый час (больше сумма - больше прибыль).`);
        }
    
        if(message.args[1] === 'рейтинг')
        {
            return message.send(`Пустая команда "Рейтинг" (без параметров) выводит ваше кол-во рейтинга (также можно узнать в профиле). При указании параметра (любое число) вы купите данное кол-во единиц рейтинга (1 = 250.000.000$). Рейтинг влияет на ваше положение в топе.`);
        }
    
        if(message.args[1] === 'ник')
        {
            return message.send(`С помощью команды "Ник" можно выбрать себе ник длинною до 15 символов. Также, ник можно делать кликабельным/некликабельным в топе "Ник вкл" и "Ник выкл"`);
        }
    
        if(message.args[1] === 'магазин')
        {
            return message.send(`Команда "Магазин" выводит список категорий товаров, которые доступны для покупки.`);
        }
    
        if(message.args[1] === 'продать')
        {
            return message.send(`С помощью команды "Продать" вы можете продать любой предмет (Машину, дом, квартиру, телефон, яхту, самолет, вертолет, биткоин, ферму).`);
        }
    
        if(message.args[1] === 'передать')
        {
            return message.send(`Команда "Передать" переводит указанную вами сумму любому игроку (Передать ${message.user.uid} 1000).`);
        }
    
        if(message.args[1] === 'топ')
        {
            return message.send(`Команда "Топ" выводит 10 игроков с самым большим рейтингом.`);
        }
    
        if(message.args[1].includes('брак'))
        {
            return message.send(`Используя команды "Брак", "Браки", "развод", вы можете жениться/выходить замуж/разводиться.
            Брак [id] - сделать предложение
            Браки - список предложений
            Развод - ...`);
        }
    
        if(message.args[1] === 'дата')
        {
            return message.send(`Команда "Дата" выводит дату регистрации человека в боте. Можно использовать id человека.`);
        }
    
        if(message.args[1] === 'репорт')
        {
            return message.send(`С помощью команды "Репорт" вы можете отправить создателю бота любое сообщение. Также можно использовать "Реп", "Жалоба", "Rep".`);
        }
    });
    
    cmd.hear(/^(?:переверни)\s([^]+)$/i, async (message, bot) => {
        let text = ``;
        message.args[1].split('').map(x=> {
            if(rotateText[x])
            {
                text += rotateText[x];
            }
        });
    
        return bot(`держи : "${text.split('').reverse().join('')}"`)
    });
    
    cmd.hear(/^(?:шар)\s([^]+)$/i, async (message, bot) => {
        const phrase = utils.pick(['перспективы не очень хорошие', 'сейчас нельзя предсказать', 'пока не ясно', 'знаки говорят - "Да"', 'знаки говорят - "Нет"', 'можешь быть уверен в этом', 'мой ответ - "нет"', 'мой ответ - "да"', 'бесспорно', 'мне кажется - "Да"', 'мне кажется - "Нет"']);
        return bot(phrase);
    });
    
    cmd.hear(/^(?:инфа|шанс|вероятность)\s([^]+)$/i, async (message, bot) => {
        const phrase = utils.pick(['шанс этого', 'мне кажется около']);
        const percent = utils.random(100);
    
        return bot(`${phrase} ${percent}%`)
    });
    
    cmd.hear(/^(?:выбери)\s([^]+)\s(?:или)\s([^]+)$/i, async (message, bot) => {
        const first = message.args[1];
        const second = message.args[2];
    
        const phrase = utils.pick([`конечно ${utils.random(1, 2)} вариант`, `мне кажется, что ${utils.random(1, 2)} вариант лучше`]);
        return bot(`${phrase}`);
    });
    
    cmd.hear(/^(?:профиль)$/i, async (message, bot) => {
        let text = ``;
    
        text += ` ID: ${message.user.uid}\n`;
        text += ` Денег: ${utils.sp(message.user.balance)}$\n`;
        if(message.user.bank) text += ` В банке: ${utils.sp(message.user.bank)}$\n`;
        if(message.user.btc) text += ` Биткоинов: ${utils.sp(message.user.btc)}\n`;
        text += ` Рейтинг: ${utils.sp(message.user.rating)}\n`;
        if(message.user.work) text += ` Работа: ${works[message.user.work - 1].name}\n`;
        if(message.user.marriage.partner) text += ` Партнер: ${users[message.user.marriage.partner].tag}`;
        text += ` Уровень: ${message.user.level} [${message.user.lol}/24]\n`;
    
        if(message.user.transport.car || message.user.transport.yacht || message.user.transport.airplane || message.user.transport.helicopter ||
            message.user.realty.home || message.user.realty.apartment ||
            message.user.misc.phone || message.user.misc.farm || message.user.business)
        {
            text += `\n Имущество:\n`;
    
            if(message.user.transport.car) text += `⠀ Машина: ${cars[message.user.transport.car - 1].name}\n`;
            if(message.user.transport.yacht) text += `⠀ Яхта: ${yachts[message.user.transport.yacht - 1].name}\n`;
            if(message.user.transport.airplane) text += `⠀ Самолёт: ${airplanes[message.user.transport.airplane - 1].name}\n`;
            if(message.user.transport.helicopter) text += `⠀ Вертолёт: ${helicopters[message.user.transport.helicopter - 1].name}\n`;
            
            if(message.user.realty.home) text += `⠀ Дом: ${homes[message.user.realty.home - 1].name}\n`;
            if(message.user.realty.apartment) text += `⠀ Квартира: ${apartments[message.user.realty.apartment - 1].name}\n`;
    
            if(message.user.misc.phone) text += `⠀ Телефон: ${phones[message.user.misc.phone - 1].name}\n`;
            if(message.user.misc.farm) text += `⠀ Ферма: ${farms[message.user.misc.farm - 1].name}\n`;
            if(message.user.business) text += `⠀${businesses[message.user.business - 1].icon} ${businesses[message.user.business - 1].name}\n`;
        }
    
        text += `\n Дата регистрации: ${message.user.regDate}`;
        return bot(`твой профиль:\n${text}`);
    });
    
    cmd.hear(/^(?:баланс)$/i, async (message, bot) => {
        let text = `на руках: ${utils.sp(message.user.balance)}$`;
    
        if(message.user.bank) text += `\n В банке: ${utils.sp(message.user.bank)}$`;
        if(message.user.btc) text += `\n Биткоинов: ${utils.sp(message.user.btc)}฿`;
    
        return bot(text);
    });
    
    cmd.hear(/^(?:банк)$/i, async (message, bot) => {
        return bot(`на вашем банковском счёте находится ${utils.sp(message.user.bank)}$`);
    });
    
    cmd.hear(/^(?:банк)\s(?:снять)\s(.*)$/i, async (message, bot) => {
        message.args[1] = message.args[1].replace(/(\.|\,)/ig, '');
        message.args[1] = message.args[1].replace(/(к|k)/ig, '000');
        message.args[1] = message.args[1].replace(/(м|m)/ig, '000000');
        message.args[1] = message.args[1].replace(/(вабанк|вобанк|все|всё)/ig, message.user.bank);
    
        if(!Number(message.args[1])) return;
        message.args[1] = Math.floor(Number(message.args[1]));
    
        if(message.args[1] <= 0) return;
    
        if(message.args[1] > message.user.bank) return bot(`у вас нет данной суммы`);
        else if(message.args[1] <= message.user.bank)
        {
            message.user.balance += message.args[1];
            message.user.bank -= message.args[1];
    
            return bot(`вы сняли ${utils.sp(message.args[1])}$
    Остаток на счёте: ${utils.sp(message.user.bank)}$
    Ваш баланс: ${utils.sp(message.user.balance)}$`);
        }
    });
    
    cmd.hear(/^(?:банк)\s(.*)$/i, async (message, bot) => {
        message.args[1] = message.args[1].replace(/(\.|\,)/ig, '');
        message.args[1] = message.args[1].replace(/(к|k)/ig, '000');
        message.args[1] = message.args[1].replace(/(м|m)/ig, '000000');
        message.args[1] = message.args[1].replace(/(вабанк|вобанк|все|всё)/ig, message.user.balance);
    
        if(!Number(message.args[1])) return;
        message.args[1] = Math.floor(Number(message.args[1]));
    
        if(message.args[1] <= 0) return;
        if(message.args[1] <= 49) return bot(`минимальная сумма вклада 50$`);
        if(message.args[1] > 250000000000) return bot(`максимальная сумма вклада 250.000.000.000$`);
    
        if(message.args[1] > message.user.balance) return bot(`у вас нет данной суммы`);
        else if(message.args[1] <= message.user.balance)
        {
            message.user.balance -= message.args[1];
            message.user.bank += message.args[1];
    
            return bot(`вы положили на свой банковский счёт ${utils.sp(message.args[1])}$`);
        }
    });
    
    cmd.hear(/^(?:уведомления)\s(выкл|вкл)$/i, async (message, bot) => {
        if(message.args[1].toLowerCase() === 'выкл')
        {
            message.user.notifications = false;
            return bot(`уведомления отключены! `);
        }
    
        if(message.args[1].toLowerCase() === 'вкл')
        {
            return bot(`уведомления включены! `);
        }
    });
    
    cmd.hear(/^(?:передать)\s([0-9]+)\s(.*)$/i, async (message, bot) => {
        message.args[2] = message.args[2].replace(/(\.|\,)/ig, '');
        message.args[2] = message.args[2].replace(/(к|k)/ig, '000');
        message.args[2] = message.args[2].replace(/(м|m)/ig, '000000');
        message.args[2] = message.args[2].replace(/(вабанк|вобанк|все|всё)/ig, message.user.balance);
    
        if(!Number(message.args[2])) return;
        message.args[2] = Math.floor(Number(message.args[2]));
    
        if(message.args[2] <= 0) return;
    
        if(message.args[2] > message.user.balance) return bot(`недостаточно денег
    Баланс: ${utils.sp(message.user.balance)}$`);
        else if(message.args[2] <= message.user.balance)
        {
            let user = users.find(x=> x.uid === Number(message.args[1]));
            if(!user) return bot(`неверный ID игрока`);
    
            if(user.uid === message.user.uid) return bot(`неверный ID`);
    
            message.user.balance -= message.args[2];
            user.balance += message.args[2];
    
            await bot(`вы передали игроку ${user.tag} ${utils.sp(message.args[2])}$`);
            if(user.notifications) vk.api.messages.send({ user_id: user.id, message: `[УВЕДОМЛЕНИЕ]
    ▶ Игрок ${message.user.tag} перевел вам ${utils.sp(message.args[2])}$!
    Введите "Уведомления выкл", если не хотите получать подобные сообщения` });
        }
    });
    
    cmd.hear(/^(?:рейтинг)$/i, async (message, bot) => {
        return bot(`ваш рейтинг: ${utils.sp(message.user.rating)}`);
    });
    
    cmd.hear(/^(?:ник)\s(вкл|выкл)$/i, async (message, bot) => {
        if(message.args[1].toLowerCase() === 'вкл')
        {
            message.user.mention = true;
            return bot(`гиперссылка включена!`);
        }
    
        if(message.args[1].toLowerCase() === 'выкл')
        {
            message.user.mention = false;
            return bot(`гиперссылка отключена!`);
        }
    });
    
    cmd.hear(/^(?:ник)\s(.*)$/i, async (message, bot) => {
        if(message.args[1].length >= 16) return bot(`максимальная длина ника 15 символов`);
    
        message.user.tag = message.args[1];
        return bot(`вы теперь "${message.user.tag}"`);
    });
    
    cmd.hear(/^(?:магазин)$/i, async (message, bot) => {
        return bot(`разделы магазина:
    Транспорт:
    ⠀⠀ Машины
    ⠀⠀ Яхты
    ⠀⠀ Самолеты
    ⠀⠀ Вертолеты
    
    Недвижимость:
    ⠀⠀ Дома
    ⠀⠀ Квартиры
    
    Остальное:
    ⠀⠀ Телефоны
    ⠀⠀⭐ Фермы
    ⠀⠀ Рейтинг [кол-во] - $250 млн
    ⠀⠀ Бизнесы
    ⠀⠀ Биткоин [кол-во]
    
    Для покупки используйте "[категория] [номер]".
    ⠀ ⠀ Например: "${utils.pick(['Телефон 7', 'Машина 1', 'Ферма 2', 'Биткоин 100', 'Рейтинг 10'])}"`);
    });
    
    cmd.hear(/^(?:продать)\s(.*)\s?(.*)?$/i, async (message, bot) => {
        let options = {
            count: null
        }
    
        message.args[2] = message.args[1].split(' ')[1];
    
        if(!message.args[2]) options.count = 1;
        if(message.args[2])
        {
            message.args[2] = message.args[2].replace(/(\.|\,)/ig, '');
            message.args[2] = message.args[2].replace(/(к|k)/ig, '000');
            message.args[2] = message.args[2].replace(/(м|m)/ig, '000000');
    
            message.args[2] = Math.floor(Number(message.args[2]));
            if(message.args[2] <= 0) return;
    
            if(!message.args[2]) options.count = 1;
            else if(message.args[2]) options.count = message.args[2];
        }
    
        if(/машин/i.test(message.args[1].toLowerCase()))
        {
            if(!message.user.transport.car) return bot(`у вас нет машины`);
            let a = Math.floor(cars[message.user.transport.car - 1].cost * 0.85);
    
            message.user.balance += Math.floor(cars[message.user.transport.car - 1].cost * 0.85);
            message.user.transport.car = 0;
    
            return bot(`вы продали свою машину за ${utils.sp(a)}$`);
        }
    
        if(/яхт/i.test(message.args[1].toLowerCase()))
        {
            if(!message.user.transport.yacht) return bot(`у вас нет яхты`);
            let a = Math.floor(yachts[message.user.transport.yacht - 1].cost * 0.85);
    
            message.user.balance += Math.floor(yachts[message.user.transport.yacht - 1].cost * 0.85);
            message.user.transport.yacht = 0;
    
            return bot(`вы продали свою яхту за ${utils.sp(a)}$`);
        }
    
        if(/самол(е|ё|йо)т/i.test(message.args[1].toLowerCase()))
        {
            if(!message.user.transport.airplane) return bot(`у вас нет самолёта`);
            let a = Math.floor(airplanes[message.user.transport.airplane - 1].cost * 0.85);
    
            message.user.balance += Math.floor(airplanes[message.user.transport.airplane - 1].cost * 0.85);
            message.user.transport.airplane = 0;
    
            return bot(`вы продали свой самолёт за ${utils.sp(a)}$`);
        }
    
        if(/в(и|е|я)рт(а|о)л(е|ё|йо)т/i.test(message.args[1].toLowerCase()))
        {
            if(!message.user.transport.helicopter) return bot(`у вас нет самолёта`);
            let a = Math.floor(helicopters[message.user.transport.helicopter - 1].cost * 0.85);
    
            message.user.balance += Math.floor(helicopters[message.user.transport.helicopter - 1].cost * 0.85);
            message.user.transport.helicopter = 0;
    
            return bot(`вы продали свой вертолёт за ${utils.sp(a)}$`);
        }
    
        if(/дом/i.test(message.args[1].toLowerCase()))
        {
            if(!message.user.realty.home) return bot(`у вас нет дома`);
            let a = Math.floor(homes[message.user.realty.home - 1].cost * 0.85);
    
            message.user.balance += Math.floor(homes[message.user.realty.home - 1].cost * 0.85);
            message.user.realty.home = 0;
    
            return bot(`вы продали свой дом за ${utils.sp(a)}$`);
        }
    
        if(/квартир/i.test(message.args[1].toLowerCase()))
        {
            if(!message.user.realty.apartment) return bot(`у вас нет квартиры`);
            let a = Math.floor(apartments[message.user.realty.apartment - 1].cost * 0.85);
    
            message.user.balance += Math.floor(apartments[message.user.realty.apartment - 1].cost * 0.85);
            message.user.realty.apartment = 0;
    
            return bot(`вы продали свою квартиру за ${utils.sp(a)}$`);
        }
    
        if(/телефон/i.test(message.args[1].toLowerCase()))
        {
            if(!message.user.misc.phone) return bot(`у вас нет телефона`);
            let a = Math.floor(phones[message.user.misc.phone - 1].cost * 0.85);
    
            message.user.balance += Math.floor(phones[message.user.misc.phone - 1].cost * 0.85);
            message.user.misc.phone = 0;
    
            return bot(`вы продали свой телефон за ${utils.sp(a)}$`);
        }
    
        if(/ферм/i.test(message.args[1].toLowerCase()))
        {
            if(!message.user.misc.farm) return bot(`у вас нет фермы`);
            let a = Math.floor(farms[message.user.misc.farm - 1].cost * 0.85);
    
            message.user.balance += Math.floor(farms[message.user.misc.farm - 1].cost * 0.85);
            message.user.misc.farm = 0;
    
            return bot(`вы продали свою ферму за ${utils.sp(a)}$`);
        }
    
        if(/рейтинг/i.test(message.args[1].toLowerCase()))
        {
            if(options.count > message.user.rating) return bot(`у вас нет рейтинга`);
            let a = (150000000 * options.count);
    
            message.user.balance += Math.floor(a);
            message.user.rating -= options.count;
    
            return bot(`вы продали ${options.count} ${utils.decl(options.count, ['рейтинг', 'рейтинга', 'рейтингов'])} за ${utils.sp(Math.floor(a))}`);
        }
    
        if(/бизнес/i.test(message.args[1].toLowerCase()))
        {
            if(!message.user.business) return bot(`у вас нет бизнеса`);
            let a = Math.floor(businesses[message.user.business - 1].cost * 0.85);
    
            message.user.balance += Math.floor(a);
            message.user.business = 0;
    
            return bot(`вы продали свой бизнес за ${utils.sp(a)}$`);
        }
    
        if(/биткоин/i.test(message.args[1].toLowerCase()))
        {
            if(options.count > message.user.btc) return bot(`недостаточно биткоинов`);
            let a = Math.floor(btc * options.count);
    
            message.user.balance += Math.floor(a);
            message.user.btc -= options.count;
    
            return bot(`вы продали ${options.count}₿ за ${utils.sp(a)}$`);
        }
    });
    
    cmd.hear(/^(?:машины|машина)\s?([0-9]+)?$/i, async (message, bot) => {
        if(!message.args[1]) return bot(`машины:
    ${message.user.transport.car === 1 ? '' : ''} 1. Самокат (500$)
    ${message.user.transport.car === 2 ? '' : ''} 2. Велосипед (2.500$)
    ${message.user.transport.car === 3 ? '' : ''} 3. Гироскутер (5.000$)
    ${message.user.transport.car === 4 ? '' : ''} 4. Сегвей (7.500$)
    ${message.user.transport.car === 5 ? '' : ''} 5. Мопед (25.000$)
    ${message.user.transport.car === 6 ? '' : ''} 6. Мотоцикл (50.000$)
    ${message.user.transport.car === 7 ? '' : ''} 7. ВАЗ 2109 (75.000$)
    ${message.user.transport.car === 8 ? '' : ''} 8. Квадроцикл (80.000$)
    ${message.user.transport.car === 9 ? '' : ''} 9. Багги (135.000$)
    ${message.user.transport.car === 10 ? '' : ''} 10. Вездеход (200.000$)
    ${message.user.transport.car === 11 ? '' : ''} 11. Лада Xray (350.000$)
    ${message.user.transport.car === 12 ? '' : ''} 12. Audi Q7 (750.000$)
    ${message.user.transport.car === 13 ? '' : ''} 13. BMW X6 (1.000.000$)
    ${message.user.transport.car === 14 ? '' : ''} 14. Toyota FT-HS (1.750.000$)
    ${message.user.transport.car === 15 ? '' : ''} 15. BMW Z4 M (2.500.000$)
    ${message.user.transport.car === 16 ? '' : ''} 16. Subaru WRX STI (2.750.000$)
    ${message.user.transport.car === 17 ? '' : ''} 17. Lamborghini Veneno (3.000.000$)
    ${message.user.transport.car === 18 ? '' : ''} 18. Tesla Roadster (4.500.000$)
    ${message.user.transport.car === 19 ? '' : ''} 19. Yamaha YZF R6 (5.000.000$)
    ${message.user.transport.car === 20 ? '' : ''} 20. Bugatti Chiron (6.500.000$)
    ${message.user.transport.car === 21 ? '' : ''} 21. Thrust SSC (35.000.000$)
    ${message.user.transport.car === 22 ? '' : ''} 22. Ferrari LaFerrari (39.000.000$)
    ${message.user.transport.car === 23 ? '' : ''} 23. Koenigsegg Regera (50.000.000$)
    ${message.user.transport.car === 24 ? '' : ''} 24. Tesla Semi (75.000.000$)
    ${message.user.transport.car === 25 ? '' : ''} 25. Venom GT (125.000.000$)
    ${message.user.transport.car === 26 ? '' : ''} 26. Rolls-Royce (200.000.000$)
    
    Для покупки введите "Машина [номер]"`);
    
        const sell = cars.find(x=> x.id === Number(message.args[1]));
        if(!sell) return;
        if(message.user.transport.car) return bot(`у вас уже есть машина (${cars[message.user.transport.car - 1].name}), введите "Продать машину"`);
    
        if(message.user.balance < sell.cost) return bot(`недостаточно денег`);
        else if(message.user.balance >= sell.cost)
        {
            message.user.balance -= sell.cost;
            message.user.transport.car = sell.id;
    
            return bot(`вы купили "${sell.name}" за ${utils.sp(sell.cost)}$`);
        }
    });
    
    cmd.hear(/^(?:яхты|яхта)\s?([0-9]+)?$/i, async (message, bot) => {
        if(!message.args[1]) return bot(`яхты:
    ${message.user.transport.yacht === 1 ? '' : ''} 1. Ванна (10.000$)
    ${message.user.transport.yacht === 2 ? '' : ''} 2. Nauticat 331 (10.000.000$)
    ${message.user.transport.yacht === 3 ? '' : ''} 3. Nordhavn 56 MS (15.000.000$)
    ${message.user.transport.yacht === 4 ? '' : ''} 4. Princess 60 (25.000.000$)
    ${message.user.transport.yacht === 5 ? '' : ''} 5. Azimut 70 (35.000.000$)
    ${message.user.transport.yacht === 6 ? '' : ''} 6. Dominator 40M (50.000.000$)
    ${message.user.transport.yacht === 7 ? '' : ''} 7. Moonen 124 (60.000.000$)
    ${message.user.transport.yacht === 8 ? '' : ''} 8. Wider 150 (65.000.000$)
    ${message.user.transport.yacht === 9 ? '' : ''} 9. Palmer Johnson 42M SuperSport (80.000.000$)
    ${message.user.transport.yacht === 10 ? '' : ''} 10. Wider 165 (85.000.000$)
    ${message.user.transport.yacht === 11 ? '' : ''} 11. Eclipse (150.000.000$)
    ${message.user.transport.yacht === 12 ? '' : ''} 12. Dubai (300.000.000$)
    ${message.user.transport.yacht === 13 ? '' : ''} 13. Streets of Monaco (750.000.000$)
    
    Для покупки введите "Яхта [номер]"`);
    
        const sell = yachts.find(x=> x.id === Number(message.args[1]));
        if(!sell) return;
        if(message.user.transport.yacht) return bot(`у вас уже есть яхта (${yachts[message.user.transport.yacht - 1].name}), введите "Продать яхту"`);
    
        if(message.user.balance < sell.cost) return bot(`недостаточно денег`);
        else if(message.user.balance >= sell.cost)
        {
            message.user.balance -= sell.cost;
            message.user.transport.yacht = sell.id;
    
            return bot(`вы купили "${sell.name}" за ${utils.sp(sell.cost)}$`);
        }
    });
    
    cmd.hear(/^(?:самол(?:е|ё)т|самол(?:е|ё)ты)\s?([0-9]+)?$/i, async (message, bot) => {
        if(!message.args[1]) return bot(`самолеты:
    ${message.user.transport.airplane === 1 ? '' : ''} 1. Параплан (100.000$)
    ${message.user.transport.airplane === 2 ? '' : ''} 2. АН-2 (350.000$)
    ${message.user.transport.airplane === 3 ? '' : ''} 3. Cessna-172E (700.000$)
    ${message.user.transport.airplane === 4 ? '' : ''} 4. Supermarine Spitfire (1.000.000$)
    ${message.user.transport.airplane === 5 ? '' : ''} 5. BRM NG-5 (1.400.000$)
    ${message.user.transport.airplane === 6 ? '' : ''} 6. Cessna T210 (2.600.000$)
    ${message.user.transport.airplane === 7 ? '' : ''} 7. Beechcraft 1900D (5.500.000$)
    ${message.user.transport.airplane === 8 ? '' : ''} 8. Cessna 550 (8.000.000$)
    ${message.user.transport.airplane === 9 ? '' : ''} 9. Hawker 4000 (22.400.000$)
    ${message.user.transport.airplane === 10 ? '' : ''} 10. Learjet 31 (45.000.000$)
    ${message.user.transport.airplane === 11 ? '' : ''} 11. Airbus A318 (85.000.000$)
    ${message.user.transport.airplane === 12 ? '' : ''} 12. F-35A (160.000.000$)
    ${message.user.transport.airplane === 13 ? '' : ''} 13. Boeing 747-430 Custom (225.000.000$)
    ${message.user.transport.airplane === 14 ? '' : ''} 14. C-17A Globemaster III (350.000.000$)
    ${message.user.transport.airplane === 15 ? '' : ''} 15. F-22 Raptor (400.000.000$)
    ${message.user.transport.airplane === 16 ? '' : ''} 16. Airbus 380 Custom (600.000.000$)
    ${message.user.transport.airplane === 17 ? '' : ''} 17. B-2 Spirit Stealth Bomber (1.359.000.000$)
    
    Для покупки введите "Самолет [номер]"`);
    
        const sell = airplanes.find(x=> x.id === Number(message.args[1]));
        if(!sell) return;
        if(message.user.transport.airplane) return bot(`у вас уже есть самолёт (${airplanes[message.user.transport.airplane - 1].name}), введите "Продать самолёт"`);
    
        if(message.user.balance < sell.cost) return bot(`недостаточно денег`);
        else if(message.user.balance >= sell.cost)
        {
            message.user.balance -= sell.cost;
            message.user.transport.airplane = sell.id;
    
            return bot(`вы купили "${sell.name}" за ${utils.sp(sell.cost)}$`);
        }
    });
    
    cmd.hear(/^(?:вертол(?:е|ё)т|вертол(?:е|ё)ты)\s?([0-9]+)?$/i, async (message, bot) => {
        if(!message.args[1]) return bot(`вертолеты:
    ${message.user.transport.helicopter === 1 ? '' : ''} 1. Шарик с пропеллером (2$)
    ${message.user.transport.helicopter === 2 ? '' : ''} 2. RotorWay Exec 162F (300.000$)
    ${message.user.transport.helicopter === 3 ? '' : ''} 3. Robinson R44 (450.000$)
    ${message.user.transport.helicopter === 4 ? '' : ''} 4. Hiller UH-12C (1.300.000$)
    ${message.user.transport.helicopter === 5 ? '' : ''} 5. AW119 Koala (2.500.000$)
    ${message.user.transport.helicopter === 6 ? '' : ''} 6. MBB BK 117 (4.000.000$)
    ${message.user.transport.helicopter === 7 ? '' : ''} 7. Eurocopter EC130 (7.500.000$)
    ${message.user.transport.helicopter === 8 ? '' : ''} 8. Leonardo AW109 Power (10.000.000$)
    ${message.user.transport.helicopter === 9 ? '' : ''} 9. Sikorsky S-76 (15.000.000$)
    ${message.user.transport.helicopter === 10 ? '' : ''} 10. Bell 429WLG (19.000.000$)
    ${message.user.transport.helicopter === 11 ? '' : ''} 11. NHI NH90 (35.000.000$)
    ${message.user.transport.helicopter === 12 ? '' : ''} 12. Kazan Mi-35M (60.000.000$)
    ${message.user.transport.helicopter === 13 ? '' : ''} 13. Bell V-22 Osprey (135.000.000$)
    
    Для покупки введите "Вертолет [номер]"`);
    
        const sell = helicopters.find(x=> x.id === Number(message.args[1]));
        if(!sell) return;
        if(message.user.transport.helicopter) return bot(`у вас уже есть вертолёт (${homes[message.user.transport.helicopter - 1].name}), введите "Продать вертолёт"`);
    
        if(message.user.balance < sell.cost) return bot(`недостаточно денег`);
        else if(message.user.balance >= sell.cost)
        {
            message.user.balance -= sell.cost;
            message.user.transport.helicopter = sell.id;
    
            return bot(`вы купили "${sell.name}" за ${utils.sp(sell.cost)}$`);
        }
    });
    
    cmd.hear(/^(?:дом|дома)\s?([0-9]+)?$/i, async (message, bot) => {
        if(!message.args[1]) return bot(`дома:
    ${message.user.realty.home === 1 ? '' : ''} 1. Коробка из-под холодильника (250$)
    ${message.user.realty.home === 2 ? '' : ''} 2. Подвал (3.000$)
    ${message.user.realty.home === 3 ? '' : ''} 3. Палатка (3.500$)
    ${message.user.realty.home === 4 ? '' : ''} 4. Домик на дереве (5.000$)
    ${message.user.realty.home === 5 ? '' : ''} 5. Полуразрушенный дом (10.000$)
    ${message.user.realty.home === 6 ? '' : ''} 6. Дом в лесу (25.000$)
    ${message.user.realty.home === 7 ? '' : ''} 7. Деревянный дом (37.500$)
    ${message.user.realty.home === 8 ? '' : ''} 8. Дача (125.000$)
    ${message.user.realty.home === 9 ? '' : ''} 9. Кирпичный дом (80.000$)
    ${message.user.realty.home === 10 ? '' : ''} 10. Коттедж (450.000$)
    ${message.user.realty.home === 11 ? '' : ''} 11. Особняк (1.250.000$)
    ${message.user.realty.home === 12 ? '' : ''} 12. Дом на Рублёвке (5.000.000$)
    ${message.user.realty.home === 13 ? '' : ''} 13. Личный небоскрёб (7.000.000$)
    ${message.user.realty.home === 14 ? '' : ''} 14. Остров с особняком (12.500.000$)
    ${message.user.realty.home === 15 ? '' : ''} 15. Белый дом (20.000.000$)
    
    Для покупки введите "Дом [номер]"`);
    
        const sell = homes.find(x=> x.id === Number(message.args[1]));
        if(!sell) return;
        if(message.user.realty.home) return bot(`у вас уже есть дом (${homes[message.user.realty.home - 1].name}), введите "Продать дом"`);
    
        if(message.user.balance < sell.cost) return bot(`недостаточно денег`);
        else if(message.user.balance >= sell.cost)
        {
            message.user.balance -= sell.cost;
            message.user.realty.home = sell.id;
    
            return bot(`вы купили "${sell.name}" за ${utils.sp(sell.cost)}$`);
        }
    });
    
    cmd.hear(/^(?:квартира|квартиры)\s?([0-9]+)?$/i, async (message, bot) => {
        if(!message.args[1]) return bot(`квартиры:
    ${message.user.realty.apartment === 1 ? '' : ''} 1. Чердак (15.000$)
    ${message.user.realty.apartment === 2 ? '' : ''} 2. Квартира в общежитии (55.000$)
    ${message.user.realty.apartment === 3 ? '' : ''} 3. Однокомнатная квартира (175.000$)
    ${message.user.realty.apartment === 4 ? '' : ''} 4. Двухкомнатная квартира (260.000$)
    ${message.user.realty.apartment === 5 ? '' : ''} 5. Четырехкомнатная квартира (500.000$)
    ${message.user.realty.apartment === 6 ? '' : ''} 6. Квартира в центре Москвы (1.600.000$)
    ${message.user.realty.apartment === 7 ? '' : ''} 7. Двухуровневая квартира (4.000.000$)
    ${message.user.realty.apartment === 8 ? '' : ''} 8. Квартира с Евроремонтом (6.000.000$)
    
    Для покупки введите "Квартира [номер]"`);
    
        const sell = apartments.find(x=> x.id === Number(message.args[1]));
        if(!sell) return;
        if(message.user.realty.apartment) return bot(`у вас уже есть квартира (${apartments[message.user.realty.apartment - 1].name}), введите "Продать квартиру"`);
    
        if(message.user.balance < sell.cost) return bot(`недостаточно денег`);
        else if(message.user.balance >= sell.cost)
        {
            message.user.balance -= sell.cost;
            message.user.realty.apartment = sell.id;
    
            return bot(`вы купили "${sell.name}" за ${utils.sp(sell.cost)}$`);
        }
    });
    
    cmd.hear(/^(?:телефон|телефоны)\s?([0-9]+)?$/i, async (message, bot) => {
        if(!message.args[1]) return bot(`телефоны:
    ${message.user.misc.phone === 1 ? '' : ''} 1. Nokia 108 (250$)
    ${message.user.misc.phone === 2 ? '' : ''} 2. Nokia 3310 (2017) (500$)
    ${message.user.misc.phone === 3 ? '' : ''} 3. ASUS ZenFone 4 (2.000$)
    ${message.user.misc.phone === 4 ? '' : ''} 4. BQ Aquaris X (10.000$)
    ${message.user.misc.phone === 5 ? '' : ''} 5. Sony Xperia XA (15.000$)
    ${message.user.misc.phone === 6 ? '' : ''} 6. Samsung Galaxy S8 (30.000$)
    ${message.user.misc.phone === 7 ? '' : ''} 7. Xiaomi Mi Mix (50.000$)
    ${message.user.misc.phone === 8 ? '' : ''} 8. Torex FS1 (75.000$)
    ${message.user.misc.phone === 9 ? '' : ''} 9. iPhone X (100.000$)
    ${message.user.misc.phone === 10 ? '' : ''} 10. Мегафон С1 (250.000$)
    
    Для покупки введите "Телефон [номер]"`);
    
        const sell = phones.find(x=> x.id === Number(message.args[1]));
        if(!sell) return;
        if(message.user.misc.phone) return bot(`у вас уже есть телефон (${phones[message.user.misc.phone - 1].name}), введите "Продать телефон"`);
    
        if(message.user.balance < sell.cost) return bot(`недостаточно денег`);
        else if(message.user.balance >= sell.cost)
        {
            message.user.balance -= sell.cost;
            message.user.misc.phone = sell.id;
    
            return bot(`вы купили "${sell.name}" за ${utils.sp(sell.cost)}$`);
        }
    });
    
    cmd.hear(/^(?:фермы)\s?([0-9]+)?$/i, async (message, bot) => {
        if(!message.args[1]) return bot(`Майнинг фермы:
    ${message.user.misc.farm === 1 ? '' : ''} 1. 6U Nvidia 2₿/час (20.500.000$)
    ${message.user.misc.farm === 2 ? '' : ''} 2. AntminerS9 10₿/час (100.000.000$)
    ${message.user.misc.farm === 3 ? '' : ''} 3. FM2018-BT200 100₿/час (900.000.000$)
    
    Для покупки введите "Фермы [номер]"`);
    
        const sell = farms.find(x=> x.id === Number(message.args[1]));
        if(!sell) return;
        if(message.user.misc.farm) return bot(`у вас уже есть ферма (${farms[message.user.misc.farm - 1].name}), введите "Продать ферму"`);
    
        if(message.user.balance < sell.cost) return bot(`недостаточно денег`);
        else if(message.user.balance >= sell.cost)
        {
            message.user.balance -= sell.cost;
            message.user.misc.farm = sell.id;
    
            return bot(`вы купили "${sell.name}" за ${utils.sp(sell.cost)}$`);
        }
    });
    
    cmd.hear(/^(?:рейтинг)\s(.*)$/i, async (message, bot) => {
        message.args[1] = message.args[1].replace(/(\.|\,)/ig, '');
        message.args[1] = message.args[1].replace(/(к|k)/ig, '000');
        message.args[1] = message.args[1].replace(/(м|m)/ig, '000000');
    
        if(!Number(message.args[1])) return;
        message.args[1] = Math.floor(Number(message.args[1]));
    
        if(message.args[1] <= 0) return;
    
        if(( message.args[1] * 250000000 ) > message.user.balance) return bot(`у вас недостаточно денег`);
        else if(( message.args[1] * 250000000 ) <= message.user.balance)
        {
            message.user.balance -= ( message.args[1] * 250000000 );
            message.user.rating += message.args[1];
    
            return bot(`вы повысили свой рейтинг на ${message.args[1]} за ${message.args[1] * 250000000}$`);
        }
    });
    
    cmd.hear(/^(?:бизнесы)\s?([0-9]+)?$/i, async (message, bot) => {
        if(!message.args[1]) return bot(`бизнесы:
    ${message.user.business === 1 ? '' : ''} 1. Шаурмичная - 50.000$
    ⠀ ⠀ ⠀ Прибыль: 400$/час
    ${message.user.business === 2 ? '' : ''} 2. Ларёк - 100.000$
    ⠀ ⠀ ⠀ Прибыль: 700$/час
    ${message.user.business === 3 ? '' : ''} 3. Ресторан - 300.000$
    ⠀ ⠀ ⠀ Прибыль: 2.500$/час
    ${message.user.business === 4 ? '' : ''} 4. Магазин - 500.000$
    ⠀ ⠀ ⠀ Прибыль: 3.800$/час
    ${message.user.business === 5 ? '' : ''} 5. Завод - 1.500.000$
    ⠀ ⠀ ⠀ Прибыль: 8.000$/час
    ${message.user.business === 6 ? '' : ''} 6. Шахта - 25.000.000$
    ⠀ ⠀ ⠀ Прибыль: 70.000$/час
    ${message.user.business === 7 ? '' : ''} 7. Офис - 80.000.000$
    ⠀ ⠀ ⠀ Прибыль: 220.000$/час
    ${message.user.business === 8 ? '' : ''} 8. Разработка игр - 150.000.000$
    ⠀ ⠀ ⠀ Прибыль: 300.000$/час
    ${message.user.business === 9 ? '' : ''} 9. Нефтевышка - 500.000.000$
    ⠀ ⠀ ⠀ Прибыль: 700.000$/час
    ${message.user.business === 10 ? '' : ''} 10. Атомная электростанция - 800.000.000$
    ⠀ ⠀ ⠀ Прибыль: 1.000.000$/час
    ${message.user.business === 11 ? '' : ''} 11. Космическое агентство - 50.000.000.000$
    ⠀ ⠀ ⠀ Прибыль: 50.000.000$/час
    Для покупки введите "Бизнесы [номер]"`);
    
        const sell = businesses.find(x=> x.id === Number(message.args[1]));
        if(!sell) return;
        if(message.user.business) return bot(`у вас уже есть бизнес (${businesses[message.user.business - 1].name}), введите "Продать бизнес"`);
    
        if(message.user.balance < sell.cost) return bot(`недостаточно денег`);
        else if(message.user.balance >= message.args[1])
        {
            message.user.balance -= sell.cost;
            message.user.business = sell.id;
    
            return bot(`вы купили "${sell.name}" за ${utils.sp(sell.cost)}$`);
        }
    });
    
    cmd.hear(/^(?:курс)$/i, async (message, bot) => {
        return bot(`курс валют на данный момент:
    Биткоин: ${utils.sp(btc)}$`);
    });
    
    cmd.hear(/^(?:биткоин)\s(.*)$/i, async (message, bot) => {
        message.args[1] = message.args[1].replace(/(\.|\,)/ig, '');
        message.args[1] = message.args[1].replace(/(к|k)/ig, '000');
        message.args[1] = message.args[1].replace(/(м|m)/ig, '000000');
    
        if(!Number(message.args[1])) return;
        message.args[1] = Math.floor(Number(message.args[1]));
    
        if(message.args[1] <= 0) return;
    
        if(( message.args[1] * btc ) > message.user.balance) return bot(`недостаточно денег
    Курс биткоина: ${btc}$`);
        else if(( message.args[1] * btc ) <= message.user.balance)
        {
            message.user.balance -= ( message.args[1] * btc );
            message.user.btc += message.args[1];
    
            return bot(`вы купили ${utils.sp(message.args[1])}₿ за ${utils.sp(message.args[1] * btc)}$`);
        }
    });
    
    cmd.hear(/^(?:топ)$/i, async (message, bot) => {
        let top = [];
    
        users.map(x=> {
            top.push({ balance: x.balance, rating: x.rating, tag: x.tag, id: x.id, mention: x.mention });
        });
    
        top.sort((a, b) => {
            return b.rating - a.rating;
        });
    
        let text = ``;
        const find = () => {
            let pos = 1000;
    
            for (let i = 0; i < top.length; i++)
            {
                if(top[i].id === message.senderId) return pos = i;
            }
    
            return pos;
        }
    
        for (let i = 0; i < 10; i++)
        {
            if(!top[i]) return;
            const user = top[i];
    
            text += `${i === 9 ? `&#128287;` : `${i + 1}&#8419;`} @id${user.id} (${user.tag}) — ${utils.sp(user.rating)} | $${utils.rn(user.balance)}
            `;
        }
    
        return bot(`топ игроков:
            ${text}
    —————————————————
    ${utils.gi(find() + 1)} ${message.user.tag} — ${utils.sp(message.user.rating)} | $${utils.rn(message.user.balance)}`);
    });
    
    cmd.hear(/^(?:бонус)$/i, async (message, bot) => {
        if(message.user.timers.bonus) return bot(`вы сможете получить бонус через 24 часа`);
        let prize = utils.pick([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]);
    
        setTimeout(() => {
            message.user.timers.bonus = false;
        }, 86400000);
    
        message.user.timers.bonus = true;
    
        if(prize === 1)
        {
            message.user.balance += 50000;
            return bot(`вы выиграли 50.000$`);
        }
    
        if(prize === 2)
        {
            message.user.btc += 1000;
            return bot(`вы выиграли 1.000₿`);
        }
    
        if(prize === 3)
        {
            message.user.rating += 5;
            return bot(`вы выиграли 5!\n Рейтинг: ${utils.sp(message.user.rating)}`);
        }
    
        if(prize === 4)
        {
            message.user.rating += 1;
            return bot(`вы выиграли 1!\n Рейтинг: ${utils.sp(message.user.rating)}`);
        }
    
        if(prize === 5)
        {
            message.user.rating += 10;
            return bot(`вы выиграли 10!\n Рейтинг: ${utils.sp(message.user.rating)}`);
        }
    
        if(prize === 6)
        {
            message.user.rating += 2;
            return bot(`вы выиграли 2!\n Рейтинг: ${utils.sp(message.user.rating)}`);
        }
        if(prize === 7)
        {
            message.user.rating += 3;
            return bot(`вы выиграли 3!\n Рейтинг: ${utils.sp(message.user.rating)}`);
        }
        if(prize === 8)
        {
            message.user.rating += 4;
            return bot(`вы выиграли 4!\n Рейтинг: ${utils.sp(message.user.rating)}`);
        }
        if(prize === 9)
        {
            message.user.bank += 1000000;
            return bot(`вы выиграли 1.000.000$ на свой банковский счёт!\n В банке: ${utils.sp(message.user.bank)}$`);
        }
        if(prize === 10)
        {
            message.user.bank += 5000000;
            return bot(`вы выиграли 5.000.000$ на свой банковский счёт!\n В банке: ${utils.sp(message.user.bank)}$`);
        }
    
        if(prize === 11)
        {
            message.user.bank += 10000000;
            return bot(`вы выиграли 10.000.000$ на свой банковский счёт!\n В банке: ${utils.sp(message.user.bank)}$`);
        }
    
        if(prize === 12)
        {
            message.user.bank += 50000000;
            return bot(`вы выиграли 50.000.000$ на свой банковский счёт!\n В банке: ${utils.sp(message.user.bank)}$`);
        }
    });
    
    cmd.hear(/^(?:брак)\s([0-9]+)$/i, async (message, bot) => {
        if(message.user.marriage.partner) return bot(`вы уже в браке с игроком ${users[message.user.marriage.partner].tag}`);
        if(Number(message.args[1]) === message.user.uid) return bot(`вы не можете жениться/выйти замуж за себя`);
    
        let user = users.find(x=> x.uid === Number(message.args[1]));
        if(!user) return bot(`неверный ID`);
    
        if(user.marriage.partner) return bot(`этот человек уже состоит в браке`);
    
        if(user.marriage.requests.find(x=> x == message.args[1])) return bot(`вы уже делали предложение этому игроку`);
    
        if(message.user.marriage.requests.find(x=> x == message.args[1]))
        {
            message.user.marriage.requests = [];
            message.user.marriage.partner = user.uid;
    
            user.marriage.requests = [];
            user.marriage.partner = message.user.uid;
    
            return bot(`вы вступили в брак с игроком "${user.tag}"`);
        }
    
        user.marriage.requests.push(message.user.uid);
        return bot(`вы сделали предложение игроку "${user.tag}"`);
    });
    
    cmd.hear(/^(?:браки)$/i, async (message, bot) => {
        if(message.user.marriage.partner) return bot(`вы уже состоите в браке`);
        return bot(`предложения:
            ${message.user.marriage.requests.map(x=> `от игрока "${users[x].tag}" (ID: ${x})`).join('\n')}`);
    });
    
    cmd.hear(/^(?:развод)$/i, async (message, bot) => {
        if(!message.user.marriage.partner) return bot(`вы не состоите в браке`);
    
        let user = users.find(x=> x.uid === message.user.marriage.partner);
    
        message.user.marriage.partner = 0;
        user.marriage.partner = 0;
    
        return bot(`вы теперь свободный человек`);
    });
    
    cmd.hear(/^(?:дата)\s([0-9]+)$/i, async (message, bot) => {
        let user = users.find(x=> x.uid === Number(message.args[1]));
        if(!user) return bot(`неверный ID`);
    
        return bot(`дата регистрации ${user.tag}: ${user.regDate}`);
    });
    
    cmd.hear(/^(?:репорт|реп|rep|жалоба)\s([^]+)$/i, async (message, bot) => {
        if(message.isChat) return bot(`команда работает только в ЛС.`);
    
        vk.api.messages.send({ user_id: 339398407, forward_messages: message.id, message: `Player id: ${message.user.uid}` }).then(() => {
            return bot(`ваше сообщение отправлено.`);
        }).catch((err) => {
            return bot(`произошла ошибка при отправлении сообщения технической поддержке.`);
        });
        vk.api.messages.send({ user_id: 462951787, forward_messages: message.id, message: `Player id: ${message.user.uid}` }).then(() => {
            return bot(`ваше сообщение отправлено.`);
        }).catch((err) => {
            return bot(`произошла ошибка при отправлении сообщения технической поддержке.`);
        });
    });
    
    cmd.hear(/^(?:ответ)\s([0-9]+)\s([^]+)$/i, async (message, bot) => {
        if(message.senderId !== 339398407 || message.senderId !== 462951787) return;
    
        const user = await users.find(x=> x.uid === Number(message.args[1]));
        if(!user) return;
    
        vk.api.messages.send({ user_id: user.id, message: `✉ Сообщение от администратора:
        ⠀Язык:
        
        ${message.args[2]}` });
    });
    
    cmd.hear(/^(?:реши)\s([0-9]+)\s(\+|\-|\/|\*)\s([0-9]+)$/i, async (message, bot) => {
        const result = eval(`${message.args[1]} ${message.args[2]} ${message.args[3]}`);
        return bot(`${message.args[1]} ${message.args[2]} ${message.args[3]}=${result}`);
    });
    
    cmd.hear(/^(?:работа)\s([0-9]+)$/i, async (message, bot) => {
        if(message.user.work) return bot(`ваша профессия - ${works[message.user.work - 1].name}
        ${message.user.timers.hasWorked ? `Вы уже работали в эти 10 минут` : ``}`);
    
        const work = works.find(x=> x.id === Number(message.args[1]));
        if(!work) return console.log(message.args[1]);
    
        if(work.requiredLevel > message.user.level) return bot(`вы не можете устроиться на эту работу!`);
        else if(work.requiredLevel <= message.user.level)
        {
            message.user.work = work.id;
            return bot(`вы устроились работать в Общее - ${work.name}
             Введите команду "Работать"`);
        }
    });
    
    cmd.hear(/^(?:работа)$/i, async (message, bot) => {
        if(message.user.work) return bot(`ваша профессия - ${works[message.user.work - 1].name}
        ${message.user.timers.hasWorked ? `Вы уже работали в эти 10 минут` : ``}`);
        return bot(`профессии:
         1. Дворник - зарплата ~12.500$
         2. Сантехник - зарплата ~22.500$
         3. Электрик - зарплата ~25.000$
         4. Слесарь - зарплата ~30.000$
         5. Юрист - зарплата ~45.000$
         6. Бухгалтер - зарплата ~55.000$
         7. Бармен - зарплата ~60.000$
         8. Администратор - зарплата ~75.000$
         9. Программист - зарплата ~100.000$
        Для трудоустройства введите "Работа [номер]`);
    });
    
    cmd.hear(/^(?:работать)$/i, async (message, bot) => {
        if(!message.user.work) return bot(`вы нигде не работаете
        Для трудоустройства введите "Работа"`);
    
        if(message.user.timers.hasWorked) return bot(`рабочий день закончен.
        ⏳ Вы сможете работать в ближайшие 10 минут`);
    
        setTimeout(() => {
            message.user.timers.hasWorked = false;
        }, 600000);
    
        message.user.timers.hasWorked = true;
    
        const work = works.find(x=> x.id === message.user.work);
        const earn = utils.random(work.min, work.max);
    
        message.user.balance += earn;
        message.user.lol += 1;
    
        return bot(`рабочий день закончен
         Вы заработали ${utils.sp(earn)}$`);
    });
    
    cmd.hear(/^(?:уволиться)$/i, async (message, bot) => {
        if(!message.user.work) return bot(`вы нигде не работаете`);
        
        message.user.work = 0;
        return bot(`вы уволились со своей работы`);
    });
    
    cmd.hear(/^(?:кубик|куб)\s([1-6])$/i, async (message, bot) => {
        const int = utils.pick([1, 2, 3, 4, 5, 6]);
        if(int == message.args[1])
        {
            message.user.balance += 2000000;
            return bot(`вы угадали! Приз 2.000.000$`);
        } else return bot(`не угадали
         Выпало число ${int}`);
    });
    
    cmd.hear(/^(?:казино)\s(.*)$/i, async (message, bot) => {
        message.args[1] = message.args[1].replace(/(\.|\,)/ig, '');
        message.args[1] = message.args[1].replace(/(к|k)/ig, '000');
        message.args[1] = message.args[1].replace(/(м|m)/ig, '000000');
        message.args[1] = message.args[1].replace(/(вабанк|вобанк|все|всё)/ig, message.user.balance);
    
        if(!Number(message.args[1])) return;
        if(message.args[1] > 100000000) return bot(`ставка не может быть больше ` + utils.sp(100000000) + '$');
        message.args[1] = Math.floor(Number(message.args[1]));
    
        if(message.args[1] <= 0) return;
    
        if(message.args[1] > message.user.balance) return bot(`у вас нет данной суммы`);
        else if(message.args[1] <= message.user.balance)
        {
            message.user.balance -= message.args[1];
            const multiply = utils.pick([0.25, 0.75, 0.5, 0.5, 1, 1, 1, 1, 1, 0.75, 2, 2, 1, 1, 1, 1, 2, 2, 0.5, 0.5, 2, 1, 1, 1, 1, 2, 2]);
    
            message.user.balance += Math.floor(message.args[1] * multiply);
            return bot(`${multiply === 1 ? `ваши деньги остаются при вас` : `${multiply < 1 ? `вы проиграли ${utils.sp(message.args[1] * multiply)}$` : `вы выиграли ${utils.sp(message.args[1] * multiply)}$`}`} (x${multiply})
             Баланс: ${utils.sp(message.user.balance)}$`);
        }
    });
    
    cmd.hear(/^(?:трейд)\s(вверх|вниз)\s(.*)$/i, async (message, bot) => {
        message.args[2] = message.args[2].replace(/(\.|\,)/ig, '');
        message.args[2] = message.args[2].replace(/(к|k)/ig, '000');
        message.args[2] = message.args[2].replace(/(м|m)/ig, '000000');
        message.args[2] = message.args[2].replace(/(вабанк|вобанк|все|всё)/ig, message.user.balance);
    
        if(!Number(message.args[2])) return;
        message.args[2] = Math.floor(Number(message.args[2]));
    
        if(message.args[2] <= 0) return;
    
        if(message.args[2] > message.user.balance) return bot(`у вас нет данной суммы`);
        else if(message.args[2] <= message.user.balance)
        {
            message.user.balance -= message.args[2];
    
            const rand = utils.pick([0, 1]);
            const nav = Number(message.args[1].toLowerCase().replace(/вверх/, '1').replace(/вниз/, '2'));
    
            if(rand === nav)
            {
                const multiply = utils.pick([1.15, 1.25, 1.5, 1.75, 2, 2.5]);
                message.user.balance += Math.floor(message.args[2] * multiply);
    
                return bot(`курс ${nav === 1 ? `подорожал⤴` : `подешевел⤵`} на ${utils.random(100)}$
                ✅ Вы заработали +${message.args[2] * multiply}$
                 Баланс: ${message.user.balance}$`);
            } else {
                return bot(`курс ${nav === 2 ? `подорожал⤴` : `подешевел⤵`} на ${utils.random(100)}$
                ❌ Вы потеряли ${message.args[2]}$
                 Баланс: ${message.user.balance}`);
            }
        }
    });
    
    cmd.hear(/^(?:стаканчик)\s([1-3])\s(.*)$/i, async (message, bot) => {
        message.args[2] = message.args[2].replace(/(\.|\,)/ig, '');
        message.args[2] = message.args[2].replace(/(к|k)/ig, '000');
        message.args[2] = message.args[2].replace(/(м|m)/ig, '000000');
        message.args[2] = message.args[2].replace(/(вабанк|вобанк|все|всё)/ig, message.user.balance);
    
        if(!Number(message.args[2])) return;
        message.args[2] = Math.floor(Number(message.args[2]));
    
        if(message.args[2] <= 0) return;
    
        if(message.args[2] > message.user.balance) return bot(`у вас нет данной суммы`);
        else if(message.args[2] <= message.user.balance)
        {
            message.user.balance -= message.args[2];
    
            const multiply = utils.pick([0.95, 0.90, 0.85, 0.80, 0.75, 0.70, 0.65]);
            const cup = utils.random(1, 3);
    
            if(cup == message.args[1])
            {
                message.user.balance += Math.floor(message.args[2] * multiply);
                return bot(`вы угадали! Приз ${message.args[2] * multiply}`);
            } else {
                return bot(`вы не угадали, это был ${cup} стаканчик`);
            }
        }
    });
    
    cmd.hear(/^(?:бизнес)$/i, async (message, bot) => {
        if(!message.user.business) return bot(`у вас нет бизнеса.`);
        const biz = businesses.find(x=> x.id === message.user.business);
    
        return bot(`статистика "${biz.name}":
         Прибыль: ${utils.sp(biz.earn)}$/час
         На счёте: ${utils.sp(message.user.biz)}$`);
    });
    
    cmd.hear(/^(?:бизнес)\s(?:снять)$/i, async (message, bot) => {
        if(!message.user.business) return bot(`у вас нет бизнеса.`);
        if(!message.user.biz) return bot(`у вас нет денег на счёте этого бизнеса`);
    
        const biz_balance = message.user.biz;
    
        message.user.balance += message.user.biz;
        message.user.biz = 0;
    
        return bot(`вы сняли со счёта своего бизнеса ${utils.sp(biz_balance)}$`);
    });
    
    cmd.hear(/^(?:ферма)$/i, async (message, bot) => {
        if(!message.user.misc.farm) return bot(`у вас нет фермы`);
        if(!message.user.farm_btc) return bot(`на вашей ферме пусто, новые биткоины появятся скоро`);
    
        const btc_ = message.user.farm_btc;
    
        message.user.btc += message.user.farm_btc;
        message.user.farm_btc = 0;
    
        return bot(`вы собрали ${utils.sp(btc_)}₿, следующие биткоины появятся через час
         Биткоинов: ${utils.sp(message.user.btc)}฿`);
    });
    
    cmd.hear(/^(?:restart)$/i, async (message, bot) => {
        if(message.senderId !== 294485834 || message.senderId !== 468114699) return;
        await bot(`бот уходит в перезагрузку.`);
    
        await saveUsers();
        process.exit(-1);
    });
    
    cmd.hear(/^(?:реф|реферал)$/i, async (message, bot) => {
        return bot(`вы пригласили: ${users.filter(x=> x.referal === message.user.uid).length}
        Для того, чтобы вам засчитали друга он должен написать команду "Реф ${message.user.uid}"
        
        За каждого друга вы получаете 100.000.000$ (100 миллионов)
        Если друг активирует вашу рефералку, то он получит 50.000.000$ (50 миллионов)`);
    });
    
    cmd.hear(/^(?:реф|реферал)\s([0-9]+)$/i, async (message, bot) => {
        if(message.user.referal !== null) return bot(`вы уже активировали рефералку!`);
        let user = users.find(x=> x.uid === Number(message.args[1]));
    
        if(!user) return bot(`неверный ID`);
        if(user.id === message.senderId) return bot(`неверный ID`);
    
        user.balance += 100000000;
        message.user.balance += 50000000;
    
        message.user.referal = Number(message.args[1]);
    
        vk.api.messages.send({ user_id: user.id, message: ` Спасибо за приглашение друга в бот!
         Вам начислено 100.000.000$ на баланс.` });
        return bot(`вы активировали рефералку.
         Вам начислено 50.000.000$`);
    });
    
    cmd.hear(/^(?:сейф)\s([0-9]+)$/i, async (message, bot) => {
        if(message.args[1] < 10 || message.args[1] >= 100) return;
    
        const int = utils.random(10, 99);
        message.args[1] = Number(message.args[1]);
    
        if(int === message.args[1])
        {
            message.user.balance += 10000000000;
            return bot(`невероятно! Вы угадали число.
             Вам начислено 10.000.000.000$`);
        } else if(int !== message.args[1])
        {
            return bot(`вы не угадали число. Вам выпало число "${int}"
             Не отчаивайтесь, количество попыток неограниченно.
            
            Если вы угадаете код, то вы получите 10.000.000.000$`);
        }
    });
    
    cmd.hear(/^(?:рассылка)\s(.*)$/i, async (message, bot) => {
     if(message.senderId !== 462951787) return message.send('Недоступно');
     users.filter(x=> x.id !== 1).map(user => {
      vk.api.messages.send({ user_id: user.id, attachment: message.args[1]});
     });
     message.send('Рассылка выполнена.')
    });