import os
import django
import asyncio
from django.core.management.base import BaseCommand
from telegram.ext import Application
from bot.utils.bot_setup import setup_bot
from app_settings.models import TelegramSettings
from touchh.utils.log import CustomLogger

class Command(BaseCommand):
    help = "Запуск Telegram бота"

    def handle(self, *args, **options):
        # Установка Django окружения
        os.environ.setdefault("DJANGO_SETTINGS_MODULE", "touchh.settings")
        django.setup()

        # Создаем новый цикл событий
        loop = asyncio.new_event_loop()
        asyncio.set_event_loop(loop)

        # Настройка Telegram бота
        bot_token = TelegramSettings.objects.first().bot_token
        
        if not bot_token:
            raise ValueError("Токен бота не найден в базе данных.")
        
        application = Application.builder().token(bot_token).build()
        setup_bot(application)

        # Основная асинхронная функция
        async def main():
            await application.initialize()
            await application.start()
            await application.updater.start_polling()
            self.stdout.write(self.style.SUCCESS("Telegram бот успешно запущен."))
            try:
                while True:
                    await asyncio.sleep(3600)
            except asyncio.CancelledError:
                await application.stop()

        # Запуск асинхронной программы
        try:
            loop.run_until_complete(main())
        except KeyboardInterrupt:
            self.stdout.write(self.style.ERROR("Завершение работы Telegram бота"))
        finally:
            loop.close()
