""" Управляющее приложение для бота с веб-интерфейсом """ import http.server import socketserver import os import sys import webbrowser import threading import time from pathlib import Path class WebInterface: def __init__(self, port=3000): self.port = port self.web_dir = Path(__file__).parent / "web" def start_server(self): """Запуск веб-сервера""" try: # Меняем рабочую директорию на папку с веб-файлами os.chdir(self.web_dir) # Создаем HTTP сервер handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", self.port), handler) as httpd: print(f"🚀 Веб-интерфейс управления тестами запущен!") print(f"📡 Адрес: http://localhost:{self.port}") print(f"📁 Директория: {self.web_dir}") print(f"⚠️ Убедитесь, что API сервер запущен на http://localhost:8000") print(f"💡 Для остановки нажмите Ctrl+C") print("-" * 60) # Открываем браузер через 2 секунды def open_browser(): time.sleep(2) try: webbrowser.open(f"http://localhost:{self.port}") except Exception as e: print(f"Не удалось открыть браузер: {e}") browser_thread = threading.Thread(target=open_browser) browser_thread.daemon = True browser_thread.start() # Запускаем сервер httpd.serve_forever() except KeyboardInterrupt: print("\n🛑 Сервер остановлен") except OSError as e: if e.errno == 10048: # Windows: Address already in use print(f"❌ Ошибка: Порт {self.port} уже используется") print(f"💡 Попробуйте другой порт или остановите процесс, использующий порт {self.port}") else: print(f"❌ Ошибка запуска сервера: {e}") except Exception as e: print(f"❌ Неожиданная ошибка: {e}") def main(): """Главная функция приложения""" # Проверяем существование веб-директории web_dir = Path(__file__).parent / "web" if not web_dir.exists(): print("❌ Ошибка: Веб-директория не найдена!") print(f"Ожидаемый путь: {web_dir}") return # Проверяем существование основных файлов index_file = web_dir / "index.html" if not index_file.exists(): print("❌ Ошибка: Файл index.html не найден!") print(f"Ожидаемый путь: {index_file}") return print("🤖 Управляющее приложение для Telegram бота") print("=" * 50) # Запускаем веб-интерфейс web_interface = WebInterface() web_interface.start_server() if __name__ == "__main__": main()