Описание
Используйте этот метод для одновременного удаления нескольких сообщений. Если некоторые из указанных сообщений не могут быть найдены, они пропускаются. Возвращает True при успешном выполнении.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| chat_id | Integer или String | Да | Уникальный идентификатор целевого чата или имя пользователя целевого канала (в формате @channelusername) |
| message_ids | Массив Integer | Да | JSON-сериализованный список из 1-100 идентификаторов сообщений для удаления. Ограничения на удаляемые сообщения смотрите в deleteMessage |
Примеры
php
<?php
$botToken = 'YOUR_BOT_TOKEN';
$apiUrl = "https://api.telegram.org/bot{$botToken}/";
// Данные для удаления сообщений
$chatId = 123456789; // ID чата или @username канала
$messageIds = [1001, 1002, 1003]; // Массив ID сообщений для удаления (1-100 сообщений)
// Подготовка данных
$data = [
'chat_id' => $chatId,
'message_ids' => $messageIds
];
// Отправка запроса
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl . 'deleteMessages');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// Обработка ответа
if ($httpCode === 200) {
$result = json_decode($response, true);
if ($result['ok']) {
echo "Сообщения успешно удалены\n";
} else {
echo "Ошибка: " . $result['description'] . "\n";
}
} else {
echo "HTTP ошибка: " . $httpCode . "\n";
}
// Альтернативный вариант с использованием file_get_contents
/*
$context = stream_context_create([
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/json',
'content' => json_encode($data)
]
]);
$response = file_get_contents($apiUrl . 'deleteMessages', false, $context);
if ($response !== false) {
$result = json_decode($response, true);
var_dump($result);
}
*/
// Пример с использованием готовой библиотеки (например, TelegramBotPHP)
/*
require_once 'vendor/autoload.php';
use TelegramBot\Api\BotApi;
$bot = new BotApi($botToken);
try {
$result = $bot->deleteMessages($chatId, $messageIds);
if ($result) {
echo "Сообщения удалены\n";
}
} catch (\Exception $e) {
echo "Ошибка: " . $e->getMessage() . "\n";
}
*/
?>
python
import asyncio
from telegram import Bot
async def delete_multiple_messages():
bot = Bot(token="YOUR_BOT_TOKEN")
# Удаляем несколько сообщений
result = await bot.delete_messages(
chat_id="@your_channel_username", # или chat_id=123456789
message_ids=[123, 124, 125] # ID сообщений для удаления
)
if result:
print("Сообщения успешно удалены")
else:
print("Не удалось удалить сообщения")
# Запуск асинхронной функции
asyncio.run(delete_multiple_messages())
История изменений
- API 7.0. Добавлен метод deleteMessages
Дополнительно
- deleteMessage - Метод для удаления сообщений в чатах с учётом временных ограничений и прав бота.