""" Утилиты для работы с 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