Files

60 lines
1.6 KiB
Python
Raw Permalink Normal View History

"""Точка входа в бота"""
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())