Описание
Используйте этот метод для удаления сообщения, включая служебные сообщения, со следующими ограничениями:
- Сообщение можно удалить только если оно было отправлено менее 48 часов назад.
- Служебные сообщения о создании супергруппы, канала или темы форума нельзя удалить.
- Сообщение с игральной костью в личном чате можно удалить только если оно было отправлено более 24 часов назад.
- Боты могут удалять исходящие сообщения в личных чатах, группах и супергруппах.
- Боты могут удалять входящие сообщения в личных чатах.
- Боты с правами can_post_messages могут удалять исходящие сообщения в каналах.
- Если бот является администратором группы, он может удалять любые сообщения в ней.
- Если бот имеет право администратора can_delete_messages в супергруппе или канале, он может удалять любые сообщения там.
- Если бот имеет право администратора can_manage_direct_messages в канале, он может удалять любые сообщения в соответствующем чате прямых сообщений.
Возвращает True при успешном выполнении.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| chat_id | Integer или String | Да | Уникальный идентификатор целевого чата или имя пользователя целевого канала (в формате @channelusername) |
| message_id | Integer | Да | Идентификатор сообщения для удаления |
Примеры
php
<?php
// Токен вашего бота
$botToken = 'YOUR_BOT_TOKEN';
// ID чата и ID сообщения для удаления
$chatId = 123456789; // или '@channelusername'
$messageId = 987654321;
// URL для запроса к API Telegram
$apiUrl = "https://api.telegram.org/bot{$botToken}/deleteMessage";
// Подготовка данных для отправки
$postData = [
'chat_id' => $chatId,
'message_id' => $messageId
];
// Инициализация cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Отключить проверку SSL для локального тестирования
// Выполнение запроса
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Проверка на ошибки cURL
if (curl_errno($ch)) {
echo 'cURL Error: ' . curl_error($ch);
} else {
// Декодирование ответа
$responseData = json_decode($response, true);
if ($httpCode == 200 && $responseData['ok']) {
echo "Сообщение успешно удалено!";
} else {
echo "Ошибка при удалении сообщения: " . ($responseData['description'] ?? 'Неизвестная ошибка');
}
}
// Закрытие cURL
curl_close($ch);
// Альтернативный вариант с использованием file_get_contents (требует allow_url_fopen = On)
/*
$context = stream_context_create([
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => http_build_query($postData)
]
]);
$response = file_get_contents($apiUrl, false, $context);
$responseData = json_decode($response, true);
if ($responseData['ok']) {
echo "Сообщение успешно удалено!";
} else {
echo "Ошибка: " . ($responseData['description'] ?? 'Неизвестная ошибка');
}
*/
?>
python
import requests
def delete_message(bot_token, chat_id, message_id):
"""
Удаляет сообщение в чате.
Args:
bot_token (str): Токен вашего бота
chat_id (int or str): ID чата или username канала
message_id (int): ID сообщения для удаления
Returns:
bool: True если успешно, иначе False
"""
url = f"https://api.telegram.org/bot{bot_token}/deleteMessage"
payload = {
"chat_id": chat_id,
"message_id": message_id
}
try:
response = requests.post(url, json=payload)
response.raise_for_status()
result = response.json()
if result.get("ok"):
return True
else:
print(f"Ошибка: {result.get('description')}")
return False
except requests.exceptions.RequestException as e:
print(f"Ошибка запроса: {e}")
return False
except ValueError as e:
print(f"Ошибка парсинга JSON: {e}")
return False
# Пример использования:
if __name__ == "__main__":
# Замените на реальные значения
BOT_TOKEN = "YOUR_BOT_TOKEN"
CHAT_ID = -1001234567890 # или "@channelusername" для канала
MESSAGE_ID = 123
# Удаление сообщения
success = delete_message(BOT_TOKEN, CHAT_ID, MESSAGE_ID)
if success:
print("Сообщение успешно удалено!")
else:
print("Не удалось удалить сообщение")