diff --git a/index.js b/index.js index f7b0bf7..e767814 100644 --- a/index.js +++ b/index.js @@ -217,24 +217,21 @@ bot.hears('🎁 Бонус', async (ctx) => { user.bonustime = cooldown.endTime let world = await WorldModel.findByPk(1) let text = ``; - let count = rand(2, 3) - for (i = 0; i < count; i++) { - let money = [100, 200, 300, 400, 500, 1000].random(); - if (user.level >= 1) { - money += money; - } - let r = rand(1, 2); - if (r == 1) { - user.money += money; - world.balance -= money - text += `⏩ ¤${money}\n`; - } - if (r == 2) { - user.money += money * 2; - world.balance -= money * 2 - text += `⏩ ¤${money*2}\n`; - } + let money = [100, 200, 300, 400, 500, 1000].random(); + if (user.level >= 5) { + money += money; } + let r = rand(1, 2); + let x = rand(2, 7); + if (r == 1) { + text += `⏩ ¤${money}\n`; + } + if (r == 2) { + money = money*x + text += `⏩ ¤${money}\n`; + } + user.money += money; + world.balance -= money if (user.business.id == 0){ await user.save(); await world.save(); @@ -322,17 +319,130 @@ bot.hears('📞 Пригласить', async (ctx) => { bot.hears('📢 Вакансии', async (ctx) => { return await ctx.reply('Список работы', Markup - .keyboard([ - ['Дворник', 'Промоутер'], // Row1 with 2 buttons - ['Официант', 'Бармен'], // Row2 with 2 buttons - ['Кассир', 'ПВЗ Дикие Ягоды', 'Слесарь'], - ['💤 Уволиться', '▶️ Меню'] // Row3 with 3 buttons + .inlineKeyboard([ + [{ + text: `Дворник [1 уровень]`, + callback_data: 'job_1' + }, { + text: `Промоутер [1 уровень]`, + callback_data: 'job_2' + }], [{ + text: `Официант [2 уровень]`, + callback_data: 'job_3' + }, { + text: `Бармен [3 уровень]`, + callback_data: 'job_4' + }], [{ + text: `Кассир [4 уровень] `, + callback_data: 'job_5' + }, { + text: `ПВЗ Дикие Ягоды [4 уровень]`, + callback_data: 'job_6' + }], [{ + text: `Слесарь [5 уровень]`, + callback_data: 'job_7' + }], [{ + text: `💤 Уволиться`, + callback_data: 'job_leave' + }] ]) .oneTime() .resize() ) }) +bot.action(/job_(1|2|3|4|5|6|7|leave)/, async (ctx) => { + let data = ctx.update.callback_query.data; + let user = await UserModel.findByPk(ctx.from.id); + let job = null + switch(data){ + case `job_1`: + job = await JobModel.findByPk(1); + if (user.level < job.level) { + return await ctx.reply(`У вас не хватает уровня для этой работы.`) + } + if (user.job == 0) { + user.job = 1 + user.save() + return await ctx.reply(`Вы устроились на работу дворником. \nВаш оклад: ¤${job.salary}\nПриступайте к работе командой "Работать"`) + } + return await ctx.reply(`Вы уже устроены на другую работу`) + case `job_2`: + job = await JobModel.findByPk(2); + if (user.level < job.level) { + return await ctx.reply(`У вас не хватает уровня для этой работы.`) + } + if (user.job == 0) { + user.job = 2 + user.save() + return await ctx.reply(`Вы устроились на работу промоутером. \nВаш оклад: ¤${job.salary}\nПриступайте к работе командой "Работать"`) + } + return await ctx.reply(`Вы уже устроены на другую работу`) + case `job_3`: + job = await JobModel.findByPk(3); + if (user.level < job.level) { + return await ctx.reply(`У вас не хватает уровня для этой работы.`) + } + if (user.job == 0) { + user.job = 3 + user.save() + return await ctx.reply(`Вы устроились на работу официантом. \nВаш оклад: ¤${job.salary}\nПриступайте к работе командой "Работать"`) + } + return await ctx.reply(`Вы уже устроены на другую работу`) + case `job_4`: + job = await JobModel.findByPk(4); + if (user.level < job.level) { + return await ctx.reply(`У вас не хватает уровня для этой работы.`) + } + if (user.job == 0) { + user.job = 4 + user.save() + return await ctx.reply(`Вы устроились на работу барменом. \nВаш оклад: ¤${job.salary}\nПриступайте к работе командой "Работать"`) + } + return await ctx.reply(`Вы уже устроены на другую работу`) + case `job_5`: + job = await JobModel.findByPk(5); + if (user.level < job.level) { + return await ctx.reply(`У вас не хватает уровня для этой работы.`) + } + if (user.job == 0) { + user.job = 5 + user.save() + return await ctx.reply(`Вы устроились на работу кассир. \nВаш оклад: ¤${job.salary}\nПриступайте к работе командой "Работать"`) + } + return await ctx.reply(`Вы уже устроены на другую работу`) + case `job_6`: + job = await JobModel.findByPk(6); + if (user.level < job.level) { + return await ctx.reply(`У вас не хватает уровня для этой работы.`) + } + if (user.job == 0) { + user.job = 6 + user.save() + return await ctx.reply(`Вы устроились на работу в ПВЗ Дикие Ягоды. \nВаш оклад: ¤${job.salary}\nПриступайте к работе командой "Работать"`) + } + return await ctx.reply(`Вы уже устроены на другую работу`) + case `job_7`: + job = await JobModel.findByPk(7); + if (user.level < job.level) { + return await ctx.reply(`У вас не хватает уровня для этой работы.`) + } + if (user.job == 0) { + user.job = 7 + user.save() + return await ctx.reply(`Вы устроились на работу слесарем. \nВаш оклад: ¤${job.salary}\nПриступайте к работе командой "Работать"`) + } + return await ctx.reply(`Вы уже устроены на другую работу`) + case `job_leave`: + if (user.job != 0) { + user.job = 0 + user.save() + return await ctx.reply(`Теперь вы безработный.`) + } + return await ctx.reply(`Вы итак безработный.`) + } +}) + bot.hears('🏯 Казино', async (ctx) => { return await ctx.reply('Добро пожаловать в казино "杜明"\n', Markup .keyboard([ @@ -344,103 +454,6 @@ bot.hears('🏯 Казино', async (ctx) => { ) }) -bot.hears('Дворник', async (ctx) => { - let user = await UserModel.findByPk(ctx.from.id); - let job = await JobModel.findByPk(1); - if (user.level < job.level) { - return await ctx.reply(`У вас не хватает уровня для этой работы.`) - } - if (user.job == 0) { - user.job = 1 - user.save() - return await ctx.reply(`Вы устроились на работу дворником. \nВаш оклад: ¤${job.salary}\nПриступайте к работе командой "Работать"`) - } - return await ctx.reply(`Вы уже устроены на другую работу`) -}) -bot.hears('Промоутер', async (ctx) => { - let user = await UserModel.findByPk(ctx.from.id); - let job = await JobModel.findByPk(2); - if (user.level < job.level) { - return await ctx.reply(`У вас не хватает уровня для этой работы.`) - } - if (user.job == 0) { - user.job = 2 - user.save() - return await ctx.reply(`Вы устроились на работу промоутером. \nВаш оклад: ¤${job.salary}\nПриступайте к работе командой "Работать"`) - } - return await ctx.reply(`Вы уже устроены на другую работу`) -}) - -bot.hears('Официант', async (ctx) => { - let user = await UserModel.findByPk(ctx.from.id); - let job = await JobModel.findByPk(3); - if (user.level < job.level) { - return await ctx.reply(`У вас не хватает уровня для этой работы.`) - } - if (user.job == 0) { - user.job = 3 - user.save() - return await ctx.reply(`Вы устроились на работу официантом. \nВаш оклад: ¤${job.salary}\nПриступайте к работе командой "Работать"`) - } - return await ctx.reply(`Вы уже устроены на другую работу`) -}) - -bot.hears('Бармен', async (ctx) => { - let user = await UserModel.findByPk(ctx.from.id); - let job = await JobModel.findByPk(4); - if (user.level < job.level) { - return await ctx.reply(`У вас не хватает уровня для этой работы.`) - } - if (user.job == 0) { - user.job = 4 - user.save() - return await ctx.reply(`Вы устроились на работу барменом. \nВаш оклад: ¤${job.salary}\nПриступайте к работе командой "Работать"`) - } - return await ctx.reply(`Вы уже устроены на другую работу`) -}) - -bot.hears('Слесарь', async (ctx) => { - let user = await UserModel.findByPk(ctx.from.id); - let job = await JobModel.findByPk(7); - if (user.level < job.level) { - return await ctx.reply(`У вас не хватает уровня для этой работы.`) - } - if (user.job == 0) { - user.job = 7 - user.save() - return await ctx.reply(`Вы устроились на работу слесарем. \nВаш оклад: ¤${job.salary}\nПриступайте к работе командой "Работать"`) - } - return await ctx.reply(`Вы уже устроены на другую работу`) -}) - -bot.hears('Кассир', async (ctx) => { - let user = await UserModel.findByPk(ctx.from.id); - let job = await JobModel.findByPk(5); - if (user.level < job.level) { - return await ctx.reply(`У вас не хватает уровня для этой работы.`) - } - if (user.job == 0) { - user.job = 5 - user.save() - return await ctx.reply(`Вы устроились на работу кассир. \nВаш оклад: ¤${job.salary}\nПриступайте к работе командой "Работать"`) - } - return await ctx.reply(`Вы уже устроены на другую работу`) -}) - -bot.hears('ПВЗ Дикие Ягоды', async (ctx) => { - let user = await UserModel.findByPk(ctx.from.id); - let job = await JobModel.findByPk(6); - if (user.level < job.level) { - return await ctx.reply(`У вас не хватает уровня для этой работы.`) - } - if (user.job == 0) { - user.job = 6 - user.save() - return await ctx.reply(`Вы устроились на работу в ПВЗ Дикие Ягоды. \nВаш оклад: ¤${job.salary}\nПриступайте к работе командой "Работать"`) - } - return await ctx.reply(`Вы уже устроены на другую работу`) -}) - bot.hears('🗄️ Работать', async (ctx) => { let user = await UserModel.findByPk(ctx.from.id); let job = await JobModel.findByPk(user.job); @@ -736,6 +749,7 @@ bot.command('buy', async (ctx) => { } if (ctx.args[1] == "car") { if (user.money < cars[ctx.args[2]].price) return await ctx.reply(`У вас недостаточно средств!`) + if (property.car.name) return await ctx.reply(`У вас уже есть автомобиль.`) user.money -= cars[ctx.args[2]].price world.balance += cars[ctx.args[2]].price property.car = cars[ctx.args[2]] @@ -746,6 +760,7 @@ bot.command('buy', async (ctx) => { } if (ctx.args[1] == "phone") { if (user.money < phones[ctx.args[2]].price) return await ctx.reply(`У вас недостаточно средств!`) + if (property.phone.name) return await ctx.reply(`У вас уже есть телефон.`) user.money -= phones[ctx.args[2]].price world.balance += phones[ctx.args[2]].price property.mobile = phones[ctx.args[2]] @@ -757,6 +772,7 @@ bot.command('buy', async (ctx) => { if (ctx.args[1] == "equipment") { if (user.money < weaponshop[ctx.args[2]].price) return await ctx.reply(`У вас недостаточно средств!`) if (ctx.args[1] == weaponshop[ctx.args[2]].type) { + if (property.equipment.name) return await ctx.reply(`У вас уже есть экипировка.`) user.money -= weaponshop[ctx.args[2]].price world.balance += weaponshop[ctx.args[2]].price property.equipment = weaponshop[ctx.args[2]] @@ -765,6 +781,7 @@ bot.command('buy', async (ctx) => { await property.save() return await ctx.reply(`Вы купили ${weaponshop[ctx.args[2]].name}`) } + if (property.weapon.name) return await ctx.reply(`У вас уже есть оружие.`) user.money -= weaponshop[ctx.args[2]].price world.balance += weaponshop[ctx.args[2]].price property.weapon = weaponshop[ctx.args[2]] @@ -776,6 +793,69 @@ bot.command('buy', async (ctx) => { return await ctx.reply(`Вы купили.`) }) +bot.command('sell', async (ctx) => { + ctx.args = ctx.update.message.text.split(' ') + let user = await UserModel.findByPk(ctx.from.id) + let property = await PropertyModel.findByPk(ctx.from.id); + let world = await WorldModel.findByPk(1) + if (!ctx.args[1]) return ctx.reply(`Не указан аргумент.`) + if (ctx.args[1] == "house") { + if (!property.house.name) return await ctx.reply(`У вас нет дома.`) + let name = property.house.name + user.money += Math.round(property.house.price/2) + world.balance -= Math.round(property.house.price/2) + property.house = 0 + await user.save() + await world.save() + await property.save() + return await ctx.reply(`Вы продали ${name}`) + } + if (ctx.args[1] == "car") { + if (!property.car.name) return await ctx.reply(`У вас нет автомобиля.`) + let name = property.car.name + user.money += Math.round(property.car.price/2) + world.balance -= Math.round(property.car.price/2) + property.car = 0 + await user.save() + await world.save() + await property.save() + return await ctx.reply(`Вы продали ${name}`) + } + if (ctx.args[1] == "phone") { + if (!property.phone.name) return await ctx.reply(`У вас нет телефона.`) + let name = property.phone.name + user.money += Math.round(property.phone.price/2) + world.balance -= Math.round(property.phone.price/2) + property.phone = 0 + await user.save() + await world.save() + await property.save() + return await ctx.reply(`Вы продали ${name}`) + } + if (ctx.args[1] == "equipment") { + if (!property.equipment.name) return await ctx.reply(`У вас нет экипировки.`) + let name = property.equipment.name + user.money += Math.round(property.equipment.price/2) + world.balance -= Math.round(property.equipment.price/2) + property.equipment = 0 + await user.save() + await world.save() + await property.save() + return await ctx.reply(`Вы продали ${name}`) + } + if (ctx.args[1] == "weapon") { + if (!property.weapon.name) return await ctx.reply(`У вас нет оружия.`) + let name = property.weapon.name + user.money += Math.round(property.weapon.price/2) + world.balance -= Math.round(property.weapon.price/2) + property.weapon = 0 + await user.save() + await world.save() + await property.save() + return await ctx.reply(`Вы продали ${name}`) + } +}) + bot.hears('🌐 Организация', async (ctx) => { let user = await UserModel.findByPk(ctx.from.id) if (user.business.id == 0) return await ctx.reply(`Вы не состоите в организации.`) diff --git a/json/weaponshop.json b/json/weaponshop.json index c992e1a..6aed8d3 100644 --- a/json/weaponshop.json +++ b/json/weaponshop.json @@ -1,51 +1,51 @@ { "0": { - "name": "MP5", - "price": 1000, - "type": "weapon" - }, - "1": { - "name": "Glock", - "price": 1000, - "type": "weapon" - }, - "2": { "name": "Deagle", "price": 1000, "type": "weapon" }, + "1": { + "name": "AK-47", + "price": 1000, + "type": "weapon" + }, + "2": { + "name": "SCAR-H", + "price": 1000, + "type": "weapon" + }, "3": { - "name": "MP5", + "name": "SCAR-H", "price": 1000, "type": "weapon" }, "4": { - "name": "Glock", + "name": "Five-Seven", "price": 1000, "type": "weapon" }, "5": { - "name": "Кольчуга", - "price": 1000, - "type": "equipment" - }, - "6": { "name": "Наколенники", "price": 1000, "type": "equipment" }, - "7": { + "6": { "name": "Бронежилет M6", "price": 1000, "type": "equipment" }, + "7": { + "name": "Бронежилет M4", + "price": 1000, + "type": "equipment" + }, "8": { - "name": "Бронежилет M5", + "name": "Шлем танкиста", "price": 1000, "type": "equipment" }, "9": { - "name": "Картонные накладки", + "name": "Бронежилет M5", "price": 1000, "type": "equipment" }