import os import asyncio import logging from aiogram import Bot, Dispatcher from app.database.models import async_main from app.handlers.user.router import user_router from app.handlers.admin.router import admin_router BOT_TOKEN = os.environ.get("BOT_TOKEN") logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) logger = logging.getLogger(__name__) async def shutdown(bot: Bot): """Выключение""" logger.info("Выключение бота...") await bot.close() logger.info("Бот успешно выключен") async def main(): try: await async_main() bot = Bot(token=BOT_TOKEN) dp = Dispatcher() dp.include_router(user_router) dp.include_router(admin_router) logger.info("Бот запускается...") await dp.start_polling(bot) except Exception as e: logger.error(f"Error in main function: {e}") await shutdown(bot) raise if __name__ == '__main__': try: asyncio.run(main()) except (KeyboardInterrupt, RuntimeError) as e: logger.warning(f"Бот выключен: {type(e).__name__}") except Exception as e: logger.error(f"Внезапная ошибка: {e}")