Описание
Используйте этот метод для выхода из облачного сервера 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