Files
isp-tycoon/handlers/build.py
2026-02-23 14:22:24 +07:00

74 lines
3.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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("Резерв готов!")