import os import asyncio import logging from config import Config from modules.stars_bot import TelegramStarsBot logger = logging.getLogger(__name__) def setup_logging(): logging.basicConfig( level=logging.INFO, format="%(asctime)s | %(levelname)s | %(name)s | %(message)s", handlers=[ logging.FileHandler("logs/bot.log", encoding="utf-8"), logging.StreamHandler(), ], ) async def main(): try: config = Config() stars_bot = TelegramStarsBot(config) await stars_bot.start() except (ValueError, TypeError) as e: logger.critical(f"Ошибка в конфигурации или при запуске: {e}") raise except Exception as e: logger.critical(f"Фатальная ошибка при запуске бота: {e}") raise if __name__ == "__main__": os.makedirs("logs", exist_ok=True) setup_logging() try: asyncio.run(main()) except KeyboardInterrupt: logger.info("Получен сигнал остановки, бот завершает работу") except Exception: logger.exception("Бот завершился из-за необработанной ошибки") raise