This commit is contained in:
2026-02-23 15:41:59 +07:00
parent 43281f7615
commit 399bffde1d
4 changed files with 16 additions and 22 deletions

View File

@@ -1,8 +1,11 @@
from aiogram import types from aiogram import types, Router
import random import random
import time import time
from database import get_player, update_player from database import get_player, update_player
router = Router()
@router.callback_query(lambda c: c.data == "activate_backup")
async def activate_backup(callback: types.CallbackQuery): async def activate_backup(callback: types.CallbackQuery):
user_id = callback.from_user.id user_id = callback.from_user.id
player = get_player(user_id) player = get_player(user_id)
@@ -11,7 +14,6 @@ async def activate_backup(callback: types.CallbackQuery):
await callback.answer("✅ Резерв уже активен!", show_alert=True) await callback.answer("✅ Резерв уже активен!", show_alert=True)
return return
# Проверка: мощности хватит?
power_used = player["servers"] * 2.0 power_used = player["servers"] * 2.0
if power_used > player["power_capacity"]: if power_used > player["power_capacity"]:
await callback.answer( await callback.answer(
@@ -21,23 +23,10 @@ async def activate_backup(callback: types.CallbackQuery):
return return
update_player(user_id, { update_player(user_id, {
"backup_channel_active": True, "backup_channel_active": 1,
"speed": max(5, player["speed"] * 0.75) "speed": max(5, player["speed"] * 0.75)
}) })
await callback.message.edit_text( await callback.message.edit_text(
"✅ Резервный канал активирован! Сеть работает на 75% скорости." "✅ Резервный канал активирован! Сеть работает на 75% скорости."
) )
await callback.answer("⚡ Резерв включён!") await callback.answer("⚡ Резерв включён!")
def trigger_outage_event() -> tuple[str, dict]:
if random.random() > 0.1: # 10% шанс за сессию (можно регулировать)
return "", {}
district = random.choice(["Северный", "Западный", "Индустриальный"])
duration_hours = 1 + random.randint(0, 3)
return (
f"⚠️ АВАРИЯ В РАЙОНЕ '{district}'!\n"
f"Электроснабжение отключено. Ожидание: {duration_hours} ч.\n"
f"💡 Используйте резервный канал, если есть.",
{"outage_end_ts": int(__import__("time").time()) + duration_hours * 3600}
)

View File

@@ -1,6 +1,6 @@
from aiogram import types, Router from aiogram import types, Router
from aiogram.filters import CommandStart from aiogram.filters import CommandStart
from database import create_player_if_not_exists, get_player from database import create_player_if_not_exists, get_player, update_player # ← добавь update_player
from economy import ( from economy import (
calculate_effective_bandwidth, calculate_rating, calculate_client_retention, calculate_effective_bandwidth, calculate_rating, calculate_client_retention,
calculate_daily_income, calculate_daily_offline_earnings calculate_daily_income, calculate_daily_offline_earnings

View File

@@ -1,7 +1,10 @@
# handlers/stats.py
from aiogram import types, Router from aiogram import types, Router
from database import get_player from database import get_player
from economy import calculate_rating, calculate_effective_bandwidth from economy import (
calculate_effective_bandwidth,
calculate_rating,
calculate_daily_income # ← ВОТ ЭТОТ ИМПОРТ НУЖЕН!
)
router = Router() router = Router()

View File

@@ -1,4 +1,4 @@
from aiogram import Bot, Dispatcher from aiogram import Bot, Dispatcher, types
from aiogram.enums import ParseMode from aiogram.enums import ParseMode
from aiogram import Router from aiogram import Router
import asyncio import asyncio
@@ -13,6 +13,8 @@ from handlers.stats import router as stats_router
from handlers.map import router as map_router from handlers.map import router as map_router
from handlers.events import router as events_router from handlers.events import router as events_router
router = Router()
dp = Dispatcher() dp = Dispatcher()
dp.include_router(start_router) dp.include_router(start_router)
dp.include_router(build_router) dp.include_router(build_router)
@@ -22,7 +24,7 @@ dp.include_router(map_router)
dp.include_router(events_router) dp.include_router(events_router)
@dp.message() @dp.message()
async def echo(message: types.Message): async def echo(message: types.Message): # ← теперь types.Message — валидно
if message.text == "/check": if message.text == "/check":
from database import get_player from database import get_player
from economy import calculate_effective_bandwidth, handle_outage, sync_power from economy import calculate_effective_bandwidth, handle_outage, sync_power