const { Telegraf, Scenes, Markup } = require('telegraf') const bot = new Telegraf(process.env.BOT_TOKEN) const { slots, phones, UserModel, CharacterModel, WorldModel, SkillsModel, PropertyModel } = global.config const { spaces, getSlot, giveExp, rand, random, setCooldown } = global.utils; const steal = new Scenes.BaseScene('POCKET_STEAL'); steal.enter(async (ctx) => { let user = await UserModel.findByPk(ctx.from.id) let pocketsteal = user.pocketstealcd if(user.level < 7) return ctx.editMessageText('Доступно с 7 уровня!') let cooldown = setCooldown(user, 3600, pocketsteal) if (user.pocketstealcd > cooldown.currentTime) return ctx.editMessageText(`📛 Данное действие будет доступно через ${cooldown.timeLeftInMinutes} мин.`); user.pocketstealcd = cooldown.endTime user.save() ctx.editMessageText('Выберите объект', Markup.inlineKeyboard([ [ {text: 'Карман', callback_data: `POCKET_TARGET`}, {text: 'Бумажник', callback_data: `POCKET_WALLET`}, {text: 'Сумка', callback_data: `POCKET_BAG`} ] ])) }); steal.action(`POCKET_TARGET`, async (ctx) => { ctx.editMessageText('В кармане обнаружено', Markup.inlineKeyboard([ [ {text: 'Деньги', callback_data: `MONEY_IN_POCKET`}, {text: 'Телефон', callback_data: `PHONE`} ] ])) }); steal.action(`MONEY_IN_POCKET`, async (ctx) => { // Получаем пользователя и его персонажа //let user = await UserModel.findByPk(ctx.from.id); let character = await CharacterModel.findByPk(ctx.from.id); if (!character) { return ctx.editMessageText('У вас нет персонажа. Создайте его перед началом.'); } // Расчёт шанса на успешную кражу let baseChance = 20; // Базовый шанс let chance = baseChance + character.intelligence * 2; // Увеличиваем шанс на 2% за каждый пункт "Разума". let randomRoll = rand(0, 100); // Случайное число от 0 до 100 if (randomRoll > chance) { return ctx.editMessageText('Вы были замечены во время кражи.'); } // Успешная кража let moneyIn = rand(5, 1000); character.dirtymoney += moneyIn; await character.save(); return ctx.editMessageText(`Вы успешно украли Ð${spaces(moneyIn)} из кармана.`); }); steal.action(`PHONE`, async (ctx) => { let character = await CharacterModel.findByPk(ctx.from.id); //let user = await UserModel.findByPk(ctx.from.id) let property = await PropertyModel.findByPk(ctx.from.id); // Расчёт шанса на успешную кражу let baseChance = 20; // Базовый шанс let chance = baseChance + character.intelligence * 2; // Увеличиваем шанс на 2% за каждый пункт "Разума". let randomRoll = rand(0, 100); // Случайное число от 0 до 100 if(chance < randomRoll) return ctx.editMessageText('Вы были замечены во время кражи.'); let randPhone = rand(1,10) if (property.mobile.name) { let dirtyMoney = Math.round(phones[randPhone].price/100*70) character.dirtymoney += dirtyMoney return await ctx.reply(`Вы сбыли украденный ${phones[randPhone].name} за Ð${dirtyMoney}`) } property.mobile = phones[randPhone] await character.save() await property.save() return ctx.editMessageText(`Вы успешно украли ${phones[randPhone].name} из кармана.`) }); steal.action(`POCKET_WALLET`, async (ctx) => { ctx.editMessageText('В бумажнике обнаружено', Markup.inlineKeyboard([ [ {text: 'Деньги', callback_data: `MONEY_IN_WALLET`}, {text: 'Карточка', callback_data: `CARD_IN_WALLET`} ] ])) }); steal.action(`MONEY_IN_WALLET`, async (ctx) => { //let user = await UserModel.findByPk(ctx.from.id) let character = await CharacterModel.findByPk(ctx.from.id); // Расчёт шанса на успешную кражу let baseChance = 20; // Базовый шанс let chance = baseChance + character.intelligence * 2; // Увеличиваем шанс на 2% за каждый пункт "Разума". let randomRoll = rand(0, 100); // Случайное число от 0 до 100 if(chance < randomRoll) return ctx.editMessageText('Вы были замечены во время кражи.'); let moneyIn = rand(1000, 10000) character.dirtymoney += moneyIn character.save() return ctx.editMessageText(`Вы успешно украли Ð${spaces(moneyIn)} из бумажника.`) }); steal.action(`CARD_IN_WALLET`, async (ctx) => { //let user = await UserModel.findByPk(ctx.from.id) let character = await CharacterModel.findByPk(ctx.from.id); let baseChance = 20; // Базовый шанс let chance = baseChance + character.intelligence * 2; // Увеличиваем шанс на 2% за каждый пункт "Разума". let randomRoll = rand(0, 100); // Случайное число от 0 до 100 if(chance < randomRoll) return ctx.editMessageText('Вы были замечены во время кражи.'); character.stealedcards += 1 character.save() return ctx.editMessageText(`Вы успешно украли 💳 из бумажника.`) }); steal.action(`POCKET_BAG`, async (ctx) => { //let user = await UserModel.findByPk(ctx.from.id) let character = await CharacterModel.findByPk(ctx.from.id); let baseChance = 20; // Базовый шанс let chance = baseChance + character.intelligence * 2; // Увеличиваем шанс на 2% за каждый пункт "Разума". let randomRoll = rand(0, 100); // Случайное число от 0 до 100 if(chance < randomRoll) return ctx.editMessageText('Вы были замечены во время кражи.'); let times = rand(2,20) let moneyIn = 0 let text = `` let values = 0 for(i=1; i<=times; i++){ randomize = rand(1,100) switch(randomize) { case 2: values = rand(10000, 50000) moneyIn += values text += `+ Ð${spaces(values)}\n` break; case 7: values = rand(10000, 100000) moneyIn += values text += `+ Ð${spaces(values)}\n` break; default: values = rand(100, 3000) moneyIn += values text += `+ Ð${spaces(values)}\n` break; } } character.dirtymoney += moneyIn character.save() return ctx.editMessageText(`Вы успешно украли сумку и сбыли все ценности из нее:\n${text}\nОбщий куш: Ð${spaces(moneyIn)}`) }); steal.leave((ctx) => { console.log('Завершено'); }); module.exports = steal