55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
#!/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()
|