Метод logOut

Метод для выхода из облачного API Telegram перед локальным запуском бота, обеспечивающий корректный переход на локальный сервер.

Описание

Используйте этот метод для выхода из облачного сервера Bot API перед локальным запуском бота. Вы обязаны выйти из системы бота перед его локальным запуском, иначе нет гарантии, что бот будет получать обновления. После успешного вызова вы можете немедленно войти на локальный сервер, но не сможете вернуться на облачный сервер Bot API в течение 10 минут. Возвращает True при успехе. Не требует параметров.

Примеры

php

<?php

$botToken = 'YOUR_BOT_TOKEN';
$apiUrl = "https://api.telegram.org/bot{$botToken}/logOut";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response, true);

if ($result['ok']) {
    echo "Bot successfully logged out from cloud API.\n";
    echo "You can now run the bot locally for 10 minutes.\n";
} else {
    echo "Error: " . $result['description'] . "\n";
}

// Alternative using file_get_contents with stream context
function logOutBot($token) {
    $url = "https://api.telegram.org/bot{$token}/logOut";
    
    $options = [
        'http' => [
            'method' => 'POST',
            'header' => 'Content-type: application/x-www-form-urlencoded',
            'timeout' => 5
        ]
    ];
    
    $context = stream_context_create($options);
    $response = file_get_contents($url, false, $context);
    
    return json_decode($response, true);
}

// Usage
$botToken = 'YOUR_BOT_TOKEN';
$result = logOutBot($botToken);

if ($result && $result['ok']) {
    echo "Success: Bot logged out\n";
} else {
    echo "Failed: " . ($result['description'] ?? 'Unknown error') . "\n";
}

// Using a bot class example
class TelegramBot {
    private $token;
    private $apiUrl;
    
    public function __construct($token) {
        $this->token = $token;
        $this->apiUrl = "https://api.telegram.org/bot{$token}/";
    }
    
    public function logOut() {
        $url = $this->apiUrl . 'logOut';
        
        $ch = curl_init();
        curl_setopt_array($ch, [
            CURLOPT_URL => $url,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POST => true,
            CURLOPT_TIMEOUT => 10,
            CURLOPT_HTTPHEADER => ['Content-Type: application/json']
        ]);
        
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        
        if ($httpCode === 200) {
            return json_decode($response, true);
        }
        
        return ['ok' => false, 'description' => 'HTTP error: ' . $httpCode];
    }
}

// Example usage of the class
$bot = new TelegramBot('YOUR_BOT_TOKEN');
$logoutResult = $bot->logOut();

if ($logoutResult['ok']) {
    echo "Ready to run bot locally\n";
    // Add your local bot setup code here
} else {
    echo "Logout failed: " . $logoutResult['description'] . "\n";
}

?>

python

import requests

def log_out(bot_token):
    """
    Logs out from the cloud Bot API server.
    
    Args:
        bot_token (str): Your bot's token
        
    Returns:
        bool: True if successful, False otherwise
    """
    url = f"https://api.telegram.org/bot{bot_token}/logOut"
    
    try:
        response = requests.get(url)
        response.raise_for_status()
        result = response.json()
        
        if result.get('ok'):
            print("Successfully logged out from cloud Bot API")
            return True
        else:
            print(f"Error: {result.get('description')}")
            return False
            
    except requests.exceptions.RequestException as e:
        print(f"Request failed: {e}")
        return False
    except ValueError as e:
        print(f"Failed to parse JSON response: {e}")
        return False

# Пример использования
if __name__ == "__main__":
    # Замените 'YOUR_BOT_TOKEN' на реальный токен вашего бота
    BOT_TOKEN = "YOUR_BOT_TOKEN"
    
    success = log_out(BOT_TOKEN)
    if success:
        print("Bot is ready to run locally")
    else:
        print("Failed to log out")

История изменений

  • API 5.0. Добавлен метод logOut
Комментарии