import asyncio
import logging
from aiogram import Bot, Dispatcher
from aiogram.client.bot import DefaultBotProperties
from config import load_config
from handlers import register_all_handlers
from services.redis_service import RedisService

async def main():
    logging.basicConfig(
        level=logging.INFO,
        format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
    )
    
    config = load_config()
    
    bot = Bot(token=config.TELEGRAM_TOKEN, default=DefaultBotProperties(parse_mode="HTML"))
    
    dp = Dispatcher(bot=bot)
    
    redis_service = RedisService(config.REDIS_HOST, config.REDIS_PORT)
    logging.info(f"Подключение к Redis: {config.REDIS_HOST}:{config.REDIS_PORT}")
    
    register_all_handlers(dp, redis_service, config.BOT_STORAGE_PATH)
    
    try:
        logging.info("Запуск бота")
        await dp.start_polling(bot)
    finally:
        await bot.session.close()

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