53 lines
1.8 KiB
Python
53 lines
1.8 KiB
Python
from aiogram import Bot, Dispatcher, types
|
||
from aiogram.enums import ParseMode
|
||
from aiogram import Router
|
||
import asyncio
|
||
import logging
|
||
|
||
from config import BOT_TOKEN
|
||
from database import init_db
|
||
from handlers.start import router as start_router
|
||
from handlers.build import router as build_router
|
||
from handlers.channel import router as channel_router
|
||
from handlers.stats import router as stats_router
|
||
from handlers.map import router as map_router
|
||
from handlers.events import router as events_router
|
||
|
||
router = Router()
|
||
|
||
dp = Dispatcher()
|
||
dp.include_router(start_router)
|
||
dp.include_router(build_router)
|
||
dp.include_router(channel_router)
|
||
dp.include_router(stats_router)
|
||
dp.include_router(map_router)
|
||
dp.include_router(events_router)
|
||
|
||
@dp.message()
|
||
async def echo(message: types.Message): # ← теперь types.Message — валидно
|
||
if message.text == "/check":
|
||
from database import get_player
|
||
from economy import calculate_effective_bandwidth, handle_outage, sync_power
|
||
player = get_player(message.from_user.id)
|
||
if not player:
|
||
await message.answer("❌ Игрок не найден")
|
||
return
|
||
|
||
player = handle_outage(player)
|
||
player = sync_power(player)
|
||
|
||
await message.answer(
|
||
f"⚡ Состояние проверено!\n"
|
||
f"Канал: {player['channel_capacity']} → {calculate_effective_bandwidth(player)} Мбит/с\n"
|
||
f"Лимит: {player['power_usage']:.1f}/{player['power_capacity']} кВт"
|
||
)
|
||
|
||
async def main():
|
||
init_db()
|
||
bot = Bot(token=BOT_TOKEN, parse_mode=ParseMode.HTML)
|
||
print("🤖 ISP Tycoon bot started...")
|
||
await dp.start_polling(bot)
|
||
|
||
if __name__ == "__main__":
|
||
logging.basicConfig(level=logging.INFO)
|
||
asyncio.run(main()) |