Метод stopMessageLiveLocation

Метод для остановки обновления сообщения с живой геолокацией до истечения периода обновления.

Описание

Используйте этот метод, чтобы прекратить обновление сообщения с живой геолокацией до истечения live_period. В случае успеха, если сообщение не является инлайн-сообщением, возвращается отредактированное Message, в противном случае возвращается True.

Параметр Тип Обязательный Описание
business_connection_id String Опционально Уникальный идентификатор бизнес-подключения, от имени которого было отправлено редактируемое сообщение
chat_id Integer или String Опционально Обязателен, если не указан inline_message_id. Уникальный идентификатор целевого чата или имя пользователя целевого канала (в формате @channelusername)
message_id Integer Опционально Обязателен, если не указан inline_message_id. Идентификатор сообщения с живой геолокацией, которое нужно остановить
inline_message_id String Опционально Обязателен, если не указаны chat_id и message_id. Идентификатор инлайн-сообщения
reply_markup InlineKeyboardMarkup Опционально JSON-сериализованный объект для новой инлайн-клавиатуры.

Примеры

php

<?php

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

// Пример 1: Остановка live location в обычном сообщении
function stopMessageLiveLocationInChat($chatId, $messageId) {
    global $apiUrl;
    
    $data = [
        'chat_id' => $chatId,
        'message_id' => $messageId,
        'reply_markup' => json_encode([
            'inline_keyboard' => [
                [
                    ['text' => 'Location stopped', 'callback_data' => 'location_stopped']
                ]
            ]
        ])
    ];
    
    $ch = curl_init($apiUrl . 'stopMessageLiveLocation');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    
    $response = curl_exec($ch);
    curl_close($ch);
    
    return json_decode($response, true);
}

// Пример 2: Остановка live location в inline сообщении
function stopInlineMessageLiveLocation($inlineMessageId) {
    global $apiUrl;
    
    $data = [
        'inline_message_id' => $inlineMessageId,
        'reply_markup' => json_encode([
            'inline_keyboard' => [
                [
                    ['text' => '✅ Location updated', 'callback_data' => 'location_updated']
                ]
            ]
        ])
    ];
    
    $ch = curl_init($apiUrl . 'stopMessageLiveLocation');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    
    $response = curl_exec($ch);
    curl_close($ch);
    
    return json_decode($response, true);
}

// Пример 3: Остановка с business_connection_id
function stopBusinessMessageLiveLocation($businessConnectionId, $chatId, $messageId) {
    global $apiUrl;
    
    $data = [
        'business_connection_id' => $businessConnectionId,
        'chat_id' => $chatId,
        'message_id' => $messageId
    ];
    
    $ch = curl_init($apiUrl . 'stopMessageLiveLocation');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    
    $response = curl_exec($ch);
    curl_close($ch);
    
    return json_decode($response, true);
}

// Пример использования
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $input = json_decode(file_get_contents('php://input'), true);
    
    if (isset($input['chat_id']) && isset($input['message_id'])) {
        $result = stopMessageLiveLocationInChat($input['chat_id'], $input['message_id']);
        
        if ($result['ok']) {
            // Для обычных сообщений возвращается объект Message
            $message = $result['result'];
            echo json_encode([
                'success' => true,
                'message_id' => $message['message_id'],
                'chat_id' => $message['chat']['id']
            ]);
        } else {
            echo json_encode(['success' => false, 'error' => $result['description']]);
        }
    } elseif (isset($input['inline_message_id'])) {
        $result = stopInlineMessageLiveLocation($input['inline_message_id']);
        
        if ($result['ok']) {
            // Для inline сообщений возвращается true
            echo json_encode(['success' => true, 'result' => $result['result']]);
        } else {
            echo json_encode(['success' => false, 'error' => $result['description']]);
        }
    }
}

?>

python

import requests

BOT_TOKEN = "YOUR_BOT_TOKEN_HERE"

def stop_message_live_location(chat_id=None, message_id=None, inline_message_id=None, 
                               business_connection_id=None, reply_markup=None):
    """
    Останавливает обновление live location сообщения
    
    Параметры:
    - chat_id: ID чата (обязателен, если не указан inline_message_id)
    - message_id: ID сообщения (обязателен, если не указан inline_message_id)
    - inline_message_id: ID inline сообщения (обязателен, если не указаны chat_id и message_id)
    - business_connection_id: ID бизнес-соединения (опционально)
    - reply_markup: InlineKeyboardMarkup для новой клавиатуры (опционально)
    """
    
    url = f"https://api.telegram.org/bot{BOT_TOKEN}/stopMessageLiveLocation"
    
    payload = {}
    
    # Добавляем параметры в payload
    if chat_id is not None:
        payload['chat_id'] = chat_id
    if message_id is not None:
        payload['message_id'] = message_id
    if inline_message_id is not None:
        payload['inline_message_id'] = inline_message_id
    if business_connection_id is not None:
        payload['business_connection_id'] = business_connection_id
    if reply_markup is not None:
        payload['reply_markup'] = reply_markup
    
    response = requests.post(url, json=payload)
    return response.json()

# Пример 1: Остановка live location в обычном сообщении
result1 = stop_message_live_location(
    chat_id=123456789,
    message_id=42
)

# Пример 2: Остановка live location в inline сообщении
result2 = stop_message_live_location(
    inline_message_id="AQ123456789"
)

# Пример 3: Остановка с изменением клавиатуры
from telegram import InlineKeyboardButton, InlineKeyboardMarkup

keyboard = [
    [InlineKeyboardButton("Показать маршрут", callback_data="show_route")],
    [InlineKeyboardButton("Закрыть", callback_data="close")]
]
reply_markup = InlineKeyboardMarkup(keyboard)

result3 = stop_message_live_location(
    chat_id=123456789,
    message_id=42,
    reply_markup=reply_markup.to_dict()
)

# Пример 4: Остановка через бизнес-соединение
result4 = stop_message_live_location(
    business_connection_id="business_123",
    chat_id=123456789,
    message_id=42
)

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

  • API 3.4. Добавлен метод stopMessageLiveLocation
  • API 7.5. Обновлен метод stopMessageLiveLocation: Добавлен параметр business_connection_id

Дополнительно

  • Message - Это основной объект, представляющий сообщение в Telegram, который содержит информацию об отправителе, чате, контенте (текст, медиа, служебные данные) и различные метаданные.
  • InlineKeyboardMarkup - Объект для создания встроенной клавиатуры, которая отображается непосредственно в сообщении.
Комментарии