This commit is contained in:
Degradin 2024-12-23 00:05:50 +03:00
parent bf04318a1f
commit 4d02f482ae
2 changed files with 43 additions and 15 deletions

57
bot.js
View File

@ -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) => {

1
db.js
View File

@ -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, // Отключение логирования запросов в консоль
}