#!/usr/bin/env python3 """Конфигурация бота и глобальные объекты.""" import os import logging import getpass from pathlib import Path from typing import Optional from dotenv import load_dotenv # Загрузка переменных окружения из .env load_dotenv() logger = logging.getLogger(__name__) # --- Конфигурация бота --- class BotConfig: """Конфигурация бота из переменных окружения.""" def __init__(self): self.name = os.getenv("BOT_NAME", "CLI Assistant") self.description = os.getenv("BOT_DESCRIPTION", "Бот для выполнения CLI команд") self.icon = os.getenv("BOT_ICON_EMOJI", "🤖") self.working_directory = os.getenv("WORKING_DIRECTORY", str(Path.home())) # Парсинг списка разрешённых пользователей allowed_users_str = os.getenv("ALLOWED_USERS", "") if allowed_users_str.strip(): self.allowed_users = [ int(uid.strip()) for uid in allowed_users_str.split(",") if uid.strip().isdigit() ] else: self.allowed_users = [] @property def is_access_restricted(self) -> bool: """Проверка: ограничен ли доступ.""" return len(self.allowed_users) > 0 # Импортируем модели и создаём глобальные объекты from bot.models.server import ServerManager from bot.models.user_state import StateManager from bot.keyboards.menus import MenuBuilder, CommandRegistry # Глобальные объекты config = BotConfig() state_manager = StateManager() menu_builder = MenuBuilder() command_registry = CommandRegistry() server_manager = ServerManager()