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