74 lines
3.0 KiB
Python
74 lines
3.0 KiB
Python
from aiogram import types, Router
|
||
from database import get_player, update_player
|
||
from economy import sync_power
|
||
from config import CABLE_COST, SERVER_COST, BACKUP_CHANNEL_COST, BACKUP_CHANNEL_POWER_ADD
|
||
|
||
router = Router()
|
||
|
||
@router.callback_query(lambda c: c.data == "build_cable")
|
||
async def build_cable(callback: types.CallbackQuery):
|
||
user_id = callback.from_user.id
|
||
player = get_player(user_id)
|
||
if player["balance"] < CABLE_COST:
|
||
await callback.answer("❌ Не хватает средств!", show_alert=True)
|
||
return
|
||
|
||
new_power = player["power_capacity"] + 2
|
||
update_player(user_id, {
|
||
"balance": player["balance"] - CABLE_COST,
|
||
"power_capacity": new_power,
|
||
"cables": player["cables"] + 1
|
||
})
|
||
await callback.message.edit_text(
|
||
f"✅ Кабель проложен!\n"
|
||
f"⚡ Лимит питания: {new_power} кВт\n"
|
||
f"💰 Остаток: {player['balance'] - CABLE_COST} ₡"
|
||
)
|
||
await callback.answer("Кабель установлен 🛠️")
|
||
|
||
@router.callback_query(lambda c: c.data == "buy_server")
|
||
async def buy_server(callback: types.CallbackQuery):
|
||
user_id = callback.from_user.id
|
||
player = get_player(user_id)
|
||
if player["balance"] < SERVER_COST:
|
||
await callback.answer("❌ Не хватает средств!", show_alert=True)
|
||
return
|
||
|
||
new_servers = player["servers"] + 1
|
||
new_power = new_servers * 2.0 # SERVER_POWER = 2.0 из config.py
|
||
|
||
update_player(user_id, {
|
||
"balance": player["balance"] - SERVER_COST,
|
||
"servers": new_servers,
|
||
"max_customers": player["max_customers"] + 500,
|
||
"power_capacity": new_power, # обновляем лимит
|
||
"power_usage": player["servers"] * 2.0 # обновляем нагрузку (была на старом количестве)
|
||
})
|
||
|
||
await callback.message.edit_text(
|
||
f"✅ Сервер установлен!\n"
|
||
f"🖥 Теперь: {new_servers} шт.\n"
|
||
f"⚡ Потребление: {new_power:.1f}/{new_power:.1f} кВт"
|
||
)
|
||
await callback.answer("Сервер включён!")
|
||
|
||
@router.callback_query(lambda c: c.data == "buy_backup_channel")
|
||
async def buy_backup_channel(callback: types.CallbackQuery):
|
||
user_id = callback.from_user.id
|
||
player = get_player(user_id)
|
||
if player["balance"] < BACKUP_CHANNEL_COST:
|
||
await callback.answer("❌ Не хватает средств!", show_alert=True)
|
||
return
|
||
|
||
new_power = player["power_capacity"] + BACKUP_CHANNEL_POWER_ADD
|
||
update_player(user_id, {
|
||
"balance": player["balance"] - BACKUP_CHANNEL_COST,
|
||
"power_capacity": new_power,
|
||
"backup_channel_active": 0
|
||
})
|
||
await callback.message.edit_text(
|
||
f"⚡ Резервный канал построен! ✅\n"
|
||
f"Лимит питания: {new_power} кВт\n"
|
||
f"💰 Остаток: {player['balance'] - BACKUP_CHANNEL_COST} ₡"
|
||
)
|
||
await callback.answer("Резерв готов!") |