telegram-cli-bot/bot/config.py

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()