File size: 1,339 Bytes
6c0f64d
339f372
 
 
 
 
 
6c0f64d
339f372
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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}")