Описание
Используйте этот метод, чтобы удалить сообщение из списка закрепленных сообщений в чате. В личных чатах и прямых сообщениях каналов можно открепить все сообщения. С другой стороны, бот должен быть администратором с правом 'can_pin_messages' или правом 'can_edit_messages', чтобы откреплять сообщения в группах и каналах соответственно. Возвращает True при успешном выполнении.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| business_connection_id | String | Опционально | Уникальный идентификатор бизнес-подключения, от имени которого будет откреплено сообщение |
| chat_id | Integer или String | Да | Уникальный идентификатор целевого чата или имя пользователя целевого канала (в формате @channelusername) |
| message_id | Integer | Опционально | Идентификатор сообщения для открепления. Требуется, если указан business_connection_id. Если не указан, будет откреплено последнее закрепленное сообщение (по дате отправки). |
Примеры
php
<?php
$botToken = 'YOUR_BOT_TOKEN';
$apiUrl = "https://api.telegram.org/bot{$botToken}/";
// Пример 1: Открепление последнего закрепленного сообщения
$chatId = -1001234567890; // ID группы или канала
$data1 = [
'chat_id' => $chatId,
// message_id не указан - открепит последнее закрепленное сообщение
];
// Пример 2: Открепление конкретного сообщения
$messageId = 12345; // ID сообщения для открепления
$data2 = [
'chat_id' => $chatId,
'message_id' => $messageId,
];
// Пример 3: Открепление через бизнес-соединение (требует message_id)
$businessConnectionId = 'business_connection_id_example';
$data3 = [
'business_connection_id' => $businessConnectionId,
'chat_id' => $chatId,
'message_id' => $messageId, // Обязательно при business_connection_id
];
// Функция для отправки запроса
function sendRequest($method, $data) {
global $apiUrl;
$url = $apiUrl . $method;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
// Отправка запроса на открепление (пример с data1)
$result = sendRequest('unpinChatMessage', json_encode($data1));
// Проверка результата
if ($result && $result['ok']) {
echo "Сообщение успешно откреплено!";
} else {
echo "Ошибка: " . ($result['description'] ?? 'Неизвестная ошибка');
}
// Альтернативный вариант с использованием file_get_contents
function sendRequestAlt($method, $data) {
global $apiUrl;
$url = $apiUrl . $method;
$context = stream_context_create([
'http' => [
'method' => 'POST',
'header' => "Content-Type: application/json\r\n",
'content' => json_encode($data)
]
]);
$response = file_get_contents($url, false, $context);
return json_decode($response, true);
}
// Пример для канала по username
$channelUsername = '@my_channel';
$data4 = [
'chat_id' => $channelUsername,
'message_id' => $messageId,
];
// $result = sendRequest('unpinChatMessage', json_encode($data4));
?>
python
import requests
def unpin_chat_message(bot_token, chat_id, message_id=None, business_connection_id=None):
"""
Удаляет сообщение из списка закрепленных в чате.
Args:
bot_token (str): Токен вашего бота
chat_id (int or str): ID чата или username канала
message_id (int, optional): ID сообщения для открепления
business_connection_id (str, optional): ID бизнес-подключения
Returns:
bool: True при успешном выполнении
"""
url = f"https://api.telegram.org/bot{bot_token}/unpinChatMessage"
payload = {
"chat_id": chat_id
}
if message_id is not None:
payload["message_id"] = message_id
if business_connection_id is not None:
payload["business_connection_id"] = business_connection_id
response = requests.post(url, json=payload)
return response.json().get("result", False)
# Пример использования:
bot_token = "YOUR_BOT_TOKEN"
# Пример 1: Открепить последнее закрепленное сообщение в группе
unpin_chat_message(bot_token, chat_id=-1001234567890)
# Пример 2: Открепить конкретное сообщение в канале
unpin_chat_message(
bot_token=bot_token,
chat_id="@my_channel",
message_id=12345
)
# Пример 3: Открепить сообщение от имени бизнес-подключения
unpin_chat_message(
bot_token=bot_token,
chat_id=-1001234567890,
message_id=67890,
business_connection_id="business_connection_id_here"
)
История изменений
- API 3.1. Добавлен метод unpinChatMessage
- API 3.5. Обновлен метод unpinChatMessage: Теперь поддерживает каналы
- API 4.2. Обновлен метод unpinChatMessage: Расширена поддержка: теперь работает в обычных группах
- API 5.0. Обновлен метод unpinChatMessage: Добавлен параметр message_id
- API 7.8. Обновлен метод unpinChatMessage: Добавлен параметр business_connection_id