import asyncio
import os
import logging
from aiogram import Bot, Dispatcher, types, F
from aiogram.filters import Command
from aiogram.types import Message
from dotenv import load_dotenv

# Включаем логирование (чтобы видеть ошибки)
logging.basicConfig(level=logging.INFO)

# Загружаем токен
load_dotenv()
BOT_TOKEN = os.getenv('BOT_TOKEN')

# Создаем объекты бота и диспетчера
bot = Bot(token=BOT_TOKEN)
dp = Dispatcher()

# Обработчик команды /start
@dp.message(Command('start'))
async def cmd_start(message: Message):
    await message.answer(
        f"👋 Привет, {message.from_user.first_name}!\n\n"
        f"Я бот на старом ноутбуке Asus X505BA.\n"
        f"Работаю на aiogram, готов к экспериментам!"
    )

# Обработчик команды /help
@dp.message(Command('help'))
async def cmd_help(message: Message):
    await message.answer(
        "📋 Доступные команды:\n"
        "/start - Начать работу\n"
        "/help - Показать помощь\n"
        "/info - Информация о сервере\n"
        "/status - Статус системы\n\n"
        "Просто отправь любое сообщение — я его повторю."
    )

# Обработчик команды /info
@dp.message(Command('info'))
async def cmd_info(message: Message):
    await message.answer(
        "🖥 **Информация о сервере**\n\n"
        "Модель: Asus X505BA\n"
        "Процессор: AMD E2-9000\n"
        "ОС: Linux Mint\n"
        "Статус: работает 24/7\n"
        "Библиотека: aiogram 3.x",
        parse_mode="Markdown"
    )

# Обработчик команды /status
@dp.message(Command('status'))
async def cmd_status(message: Message):
    import platform
    import datetime
    import psutil
    
    # Пытаемся получить информацию о системе
    try:
        boot_time = datetime.datetime.fromtimestamp(psutil.boot_time())
        uptime = datetime.datetime.now() - boot_time
        cpu = psutil.cpu_percent(interval=1)
        memory = psutil.virtual_memory()
        
        await message.answer(
            f"📊 **Статус сервера**\n\n"
            f"⏱ Аптайм: {str(uptime).split('.')[0]}\n"
            f"🔥 CPU: {cpu}%\n"
            f"💾 RAM: {memory.percent}% ({memory.used//1024//1024} МБ / {memory.total//1024//1024} МБ)\n"
            f"🐍 Python: {platform.python_version()}",
            parse_mode="Markdown"
        )
    except:
        await message.answer("Не удалось получить статус системы (psutil не установлен)")

# Обработчик текстовых сообщений (эхо)
@dp.message(F.text)
async def echo_message(message: Message):
    await message.answer(f"Ты написал: {message.text}")

# Обработчик всех остальных типов сообщений (фото, видео и т.д.)
@dp.message()
async def echo_other(message: Message):
    await message.answer("Я понимаю только текст и команды. Сорри!")

# Запуск бота
async def main():
    print("🚀 Бот на aiogram запущен!")
    await dp.start_polling(bot)

if __name__ == '__main__':
    asyncio.run(main())
