# main.py - Главный файл для запуска всей системы

import time
import threading
from config import *
from database import Database
from twitch_bot import TwitchBot
from telegram_bot import TelegramBot
from web_server import WebServer


def print_banner():
    """Вывод баннера"""
    print("\n" + "=" * 70)
    print(" " * 15 + "🎮 TWITCH BOT SYSTEM 🎮")
    print("=" * 70)
    print()
    print("📦 Модули:")
    print("  ├─ config.py       - Конфигурация")
    print("  ├─ commands.py     - Команды Twitch")
    print("  ├─ database.py     - База данных")
    print("  ├─ twitch_bot.py   - Twitch бот")
    print("  ├─ telegram_bot.py - Telegram бот")
    print("  └─ main.py         - Главный файл")
    print()
    print("=" * 70)


def check_config():
    """Проверка конфигурации"""
    errors = []

    if "your_token_here" in OAUTH_TOKEN:
        errors.append("❌ OAUTH_TOKEN не настроен")

    if "your_channel_name" in CHANNEL:
        errors.append("❌ CHANNEL не настроен")

    if "your_bot_username" in BOT_USERNAME:
        errors.append("❌ BOT_USERNAME не настроен")

    if "your_telegram_bot_token_here" in TELEGRAM_BOT_TOKEN:
        errors.append("❌ TELEGRAM_BOT_TOKEN не настроен")

    if SUPER_ADMIN_ID == 123456789:
        errors.append("⚠️ SUPER_ADMIN_ID содержит примерный ID")

    if errors:
        print("\n🔧 ТРЕБУЕТСЯ НАСТРОЙКА:\n")
        for error in errors:
            print(f"  {error}")

        print("\n📖 ИНСТРУКЦИЯ:")
        print("\n1️⃣ TWITCH:")
        print("  • Откройте config.py")
        print("  • Настройте CHANNEL, BOT_USERNAME, OAUTH_TOKEN")
        print("  • Токен получите на https://twitchapps.com/tmi/")

        print("\n2️⃣ TELEGRAM:")
        print("  • Напишите @BotFather в Telegram")
        print("  • Создайте бота командой /newbot")
        print("  • Скопируйте токен в TELEGRAM_BOT_TOKEN")
        print("  • Узнайте свой ID у @userinfobot")
        print("  • Добавьте ID в SUPER_ADMIN_ID")

        print("\n3️⃣ УСТАНОВКА БИБЛИОТЕК:")
        print("  pip install python-telegram-bot requests")

        print("\n4️⃣ ОПЦИОНАЛЬНО (для проверки статуса стрима):")
        print("  • Зайдите на https://dev.twitch.tv/console")
        print("  • Создайте приложение")
        print("  • Настройте TWITCH_CLIENT_ID и TWITCH_CLIENT_SECRET")

        print("\n" + "=" * 70 + "\n")
        return False

    return True


def print_status():
    """Вывод статуса конфигурации"""
    print("\n✅ КОНФИГУРАЦИЯ ПРОВЕРЕНА\n")
    print("📋 Настройки:")
    print(f"  • Twitch канал: {CHANNEL}")
    print(f"  • Бот: {BOT_USERNAME}")
    print(f"  • Главный админ ID: {SUPER_ADMIN_ID}")
    print(f"  • Мониторинг стрима: {'✅' if TWITCH_CLIENT_ID != 'your_client_id_here' else '⚠️ Выключен'}")
    print(f"  • База данных: {DATABASE_PATH}")
    print()


def main():
    """Главная функция"""
    print_banner()

    # Проверяем конфигурацию
    if not check_config():
        return

    print_status()

    # Инициализируем базу данных
    print("🔧 Инициализация базы данных...")
    database = Database()

    # Создаём ботов
    print("🔧 Создание ботов...")
    telegram_bot = TelegramBot(database)
    twitch_bot = TwitchBot(database, telegram_bot)  # Передаём ссылку на Telegram бота

    # Запускаем веб-сервер для оверлея
    print("🔧 Запуск веб-сервера...")
    from config import WEB_SERVER_PORT
    web_server = WebServer(port=WEB_SERVER_PORT)
    web_server.start()

    print()
    print("=" * 70)
    print("🚀 ЗАПУСК СИСТЕМЫ")
    print("=" * 70)
    print()

    # Запускаем Twitch бота в отдельном потоке
    print("🎮 Запуск Twitch бота...")
    twitch_thread = threading.Thread(target=twitch_bot.run, daemon=True)
    twitch_thread.start()

    # Даём время Twitch боту подключиться
    time.sleep(2)

    # Запускаем Telegram бота в главном потоке
    print("📱 Запуск Telegram бота...")
    print()
    print("=" * 70)
    print("✅ СИСТЕМА ЗАПУЩЕНА")
    print("=" * 70)
    print()
    print("💡 Нажмите Ctrl+C для остановки")
    print()

    try:
        telegram_bot.run()
    except KeyboardInterrupt:
        print("\n\n" + "=" * 70)
        print("👋 ОСТАНОВКА СИСТЕМЫ")
        print("=" * 70)
        print()
        print("💾 Сохранение данных...")
        database.close()
        print("✅ Система остановлена")
        print()


if __name__ == "__main__":
    main()