diff --git a/bot.js b/bot.js index fdbdf04..96eae0c 100644 --- a/bot.js +++ b/bot.js @@ -372,13 +372,42 @@ bot.hears('🏗️ Предприятия', async (ctx) => { if (warehouse) { buttons.push([{ text: '🚛 Управление складом', callback_data: 'manage_warehouse' }]); } else { - buttons.push([{ text: '🗄️ Построить склад', callback_data: 'open_warehouse' }]); + buttons.push([{ text: '🗄️ Построить склад', callback_data: 'buy_warehouse' }]); } // Возвращаем меню с кнопками return await ctx.reply(message, Markup.inlineKeyboard(buttons).resize()); }); +bot.action('enterprise_menu', async (ctx) => { + const user = await UserModel.findByPk(ctx.from.id); + const warehouse = await WarehouseModel.findOne({ where: { playerId: user.telegram_id } }); + + const enterprises = await EnterpriseModel.findAll({ + where: { playerId: user.telegram_id } + }); + let message = `🏗️ Меню предприятий:\n`; + message += `У вас: ${enterprises.length} предприятий.\n`; + message += warehouse + ? `🗄️ Единый склад: Доступен (Ёмкость: ${warehouse.capacity} ед.)\n` + : `🗄️ Единый склад: Не построен.\n`; + + const buttons = []; + + // Добавляем кнопки для предприятий + buttons.push([{ text: '🏭 Мои предприятия', callback_data: 'my_enterprises' }]); + buttons.push([{ text: '🛠️ Построить предприятие', callback_data: 'build_enterprise' }]); + + // Кнопка для управления или постройки склада + if (warehouse) { + buttons.push([{ text: '🚛 Управление складом', callback_data: 'manage_warehouse' }]); + } else { + buttons.push([{ text: '🗄️ Построить склад', callback_data: 'buy_warehouse' }]); + } + + // Возвращаем меню с кнопками + return await ctx.editMessageText(message, Markup.inlineKeyboard(buttons).resize()); +}); // Функция для преобразования типа ресурса в эмодзи function getEnterpriseEmoji(resourceType) { @@ -414,9 +443,9 @@ bot.action('my_enterprises', async (ctx) => { ]); }); - buttons.push([{ text: '⬅️ Назад', callback_data: 'back_to_menu' }]); + buttons.push([{ text: '⬅️ Назад', callback_data: 'enterprise_menu' }]); - return await ctx.reply(message, Markup.inlineKeyboard(buttons).resize()); + return await ctx.editMessageText(message, Markup.inlineKeyboard(buttons).resize()); }); @@ -456,7 +485,7 @@ bot.action('build_enterprise', async (ctx) => { } message += '\nВыберите тип предприятия:'; - return await ctx.reply(message, Markup.inlineKeyboard(buttons).resize()); + return await ctx.editMessageText(message, Markup.inlineKeyboard(buttons).resize()); } catch (error) { console.error('Ошибка в build_enterprise:', error); return await ctx.reply('Произошла ошибка при обработке запроса. Попробуйте снова.'); @@ -489,7 +518,7 @@ bot.action(/build_(wood|coal|oil|metall|gold|diamond)/, async (ctx) => { // Снимаем деньги с баланса await user.update({ money: user.money - price }) - return await ctx.reply(`Предприятие ${enterprise.name} (ID: ${enterprise.id}) построено!`) + return await ctx.editMessageText(`Предприятие ${enterprise.name} (ID: ${enterprise.id}) построено!`) }) // Функция для расчета стоимости предприятия @@ -536,7 +565,7 @@ bot.action('buy_warehouse', async (ctx) => { }) await user.update({ money: user.money - 500000 }) - return await ctx.reply(`Вы успешно купили единый склад!`) + return await ctx.editMessageText(`Вы успешно купили единый склад!`) }) // Управление складом @@ -564,7 +593,7 @@ bot.action('manage_warehouse', async (ctx) => { [{ text: '🚚 Купить транспорт', callback_data: 'buy_truck' }] ]; - return await ctx.reply(message, Markup.inlineKeyboard(buttons).resize()); + return await ctx.editMessageText(message, Markup.inlineKeyboard(buttons).resize()); }); bot.action('warehouse_management', async (ctx) => { @@ -588,7 +617,7 @@ bot.action('warehouse_management', async (ctx) => { 💰 Золото: ${warehouse.gold || 0} 💎 Алмазы: ${warehouse.diamond || 0} ` - return await ctx.reply(message, Markup.inlineKeyboard([ + return await ctx.editMessageText(message, Markup.inlineKeyboard([ [{ text: 'Управление транспортом', callback_data: 'manage_trucks' }], [{ text: 'Продать ресурсы', callback_data: 'sell_from_warehouse' }] ]).resize()) @@ -602,7 +631,7 @@ bot.action(/manage_(\d+)/, async (ctx) => { if (!enterprise) return await ctx.reply(`Предприятие не найдено.`) // Логика управления предприятием (например, прокачка или продажа ресурсов) - return await ctx.reply(`Вы управляете предприятием ${enterprise.name} (ID: ${enterprise.id}).`) + return await ctx.editMessageText(`Вы управляете предприятием ${enterprise.name} (ID: ${enterprise.id}).`) }) bot.action('transfer_resources', async (ctx) => { const user = await UserModel.findByPk(ctx.from.id); @@ -624,7 +653,7 @@ bot.action('transfer_resources', async (ctx) => { return [{ text: `🏭 ${ent.name}`, callback_data: `transfer_from_${ent.id}` }]; }); - return await ctx.reply(message, Markup.inlineKeyboard(buttons).resize()); + return await ctx.editMessageText(message, Markup.inlineKeyboard(buttons).resize()); }); // Перевозка с конкретного предприятия @@ -635,7 +664,7 @@ bot.action(/transfer_from_(\d+)/, async (ctx) => { const enterprise = await EnterpriseModel.findByPk(enterpriseId); if (!enterprise) { - return await ctx.reply('Предприятие не найдено.'); + return await ctx.editMessageText('Предприятие не найдено.'); } let message = `🚛 Перевозка с предприятия ${enterprise.name}:\n`; @@ -685,7 +714,7 @@ bot.action('upgrade_enterprise', async (ctx) => { buttons.push({ text: `Прокачать ${enterprise.name}`, callback_data: `upgrade_${enterprise.id}` }) }) - return await ctx.reply(`Выберите предприятие для прокачки:`, Markup.inlineKeyboard(buttons).resize()) + return await ctx.editMessageText(`Выберите предприятие для прокачки:`, Markup.inlineKeyboard(buttons).resize()) }) bot.action(/upgrade_(\d+)/, async (ctx) => { @@ -709,7 +738,7 @@ bot.action(/upgrade_(\d+)/, async (ctx) => { // Снимаем деньги с баланса await user.update({ balance: user.balance - upgradeCost }) - return await ctx.reply(`Предприятие ${enterprise.name} успешно прокачано! Уровень: ${enterprise.level}, Производительность: ${enterprise.efficiency} ед/ч.`) + return await ctx.editMessageText(`Предприятие ${enterprise.name} успешно прокачано! Уровень: ${enterprise.level}, Производительность: ${enterprise.efficiency} ед/ч.`) }) bot.action('sell_resources', async (ctx) => { @@ -727,7 +756,7 @@ bot.action('sell_resources', async (ctx) => { buttons.push({ text: `Продать ресурсы с ${enterprise.name}`, callback_data: `sell_${enterprise.id}` }) }) - return await ctx.reply(`Выберите предприятие для продажи ресурсов:`, Markup.inlineKeyboard(buttons).resize()) + return await ctx.editMessageText(`Выберите предприятие для продажи ресурсов:`, Markup.inlineKeyboard(buttons).resize()) }) bot.action(/sell_(\d+)/, async (ctx) => { diff --git a/db.js b/db.js index fb56bbc..7e5e226 100644 --- a/db.js +++ b/db.js @@ -7,7 +7,6 @@ const sequelize = new Sequelize( process.env.DB_PASSWORD, // Пароль { host: process.env.DB_HOST, // Хост - port: process.env.DB_PORT, // Порт dialect: 'postgres', // Диалект базы данных logging: false, // Отключение логирования запросов в консоль }