helpy_botik / main.py
Zlovoblachko's picture
Add application file
6c0f64d
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}")