"""Точка входа в бота""" import asyncio import logging import sys from pathlib import Path # Добавляем корневую директорию в PATH sys.path.insert(0, str(Path(__file__).parent.parent)) from bot.config import Config from bot.rss_bot import RSSNewsBot def setup_logging(config: Config) -> None: """Настраивает логирование""" log_format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s' log_level = getattr(logging, config.log_level.upper(), logging.INFO) handlers = [logging.StreamHandler()] if config.log_file: handlers.append(logging.FileHandler(config.log_file, encoding='utf-8')) logging.basicConfig( level=log_level, format=log_format, handlers=handlers ) async def main() -> None: """Главная функция""" try: # Загружаем конфигурацию config = Config() # Настраиваем логирование setup_logging(config) # Создаем и запускаем бота bot = RSSNewsBot(config) await bot.run() except FileNotFoundError as e: logging.error(str(e)) sys.exit(1) except ValueError as e: logging.error(str(e)) sys.exit(1) except KeyboardInterrupt: logging.info("Бот остановлен") sys.exit(0) except Exception as e: logging.exception(f"Критическая ошибка: {e}") sys.exit(1) if __name__ == "__main__": asyncio.run(main())