"""
Утилиты для работы с Telegram Bot API.
"""
from django.conf import settings
import requests
import logging

logger = logging.getLogger(__name__)


def get_telegram_bot_username() -> tuple[str, str]:
    """
    Получение имени бота из токена через Telegram Bot API.
    
    Returns:
        Кортеж (username, error_message):
        - username: Имя бота без символа @, или пустая строка в случае ошибки
        - error_message: Сообщение об ошибке, или пустая строка если успешно
    """
    bot_token = settings.TELEGRAM_BOT_TOKEN
    if not bot_token:
        error_msg = "TELEGRAM_BOT_TOKEN не установлен в настройках Django"
        logger.warning(error_msg)
        return '', error_msg
    
    if not bot_token.strip():
        error_msg = "TELEGRAM_BOT_TOKEN пустой"
        logger.warning(error_msg)
        return '', error_msg
    
    try:
        # Получаем информацию о боте через Telegram Bot API
        url = f"https://api.telegram.org/bot{bot_token}/getMe"
        logger.info(f"Requesting Telegram bot info from: {url[:30]}...")
        
        response = requests.get(url, timeout=10)
        
        logger.info(f"Telegram API response status: {response.status_code}")
        
        if response.status_code == 200:
            data = response.json()
            logger.info(f"Telegram API response data: {data}")
            
            if data.get('ok') and data.get('result'):
                username = data['result'].get('username', '')
                if username:
                    logger.info(f"Telegram bot username retrieved: {username}")
                    return username, ''
                else:
                    error_msg = "Telegram API вернул пустое имя пользователя"
                    logger.error(error_msg)
                    return '', error_msg
            else:
                error_msg = f"Telegram API вернул ошибку: {data.get('description', 'Unknown error')}"
                logger.error(error_msg)
                return '', error_msg
        elif response.status_code == 401:
            error_msg = "Неверный токен Telegram бота. Проверьте правильность TELEGRAM_BOT_TOKEN"
            logger.error(error_msg)
            return '', error_msg
        else:
            error_msg = f"Ошибка при запросе к Telegram API: HTTP {response.status_code}"
            logger.error(f"{error_msg}. Response: {response.text[:200]}")
            return '', error_msg
    except requests.exceptions.Timeout:
        error_msg = "Таймаут при запросе к Telegram API. Проверьте интернет-соединение"
        logger.error(error_msg)
        return '', error_msg
    except requests.exceptions.RequestException as e:
        error_msg = f"Ошибка сети при запросе к Telegram API: {str(e)}"
        logger.error(error_msg)
        return '', error_msg
    except Exception as e:
        error_msg = f"Неожиданная ошибка при получении информации о боте: {str(e)}"
        logger.error(error_msg, exc_info=True)
        return '', error_msg

