Метод deleteMessages

Метод для одновременного удаления нескольких сообщений в чате или канале.

Описание

Используйте этот метод для одновременного удаления нескольких сообщений. Если некоторые из указанных сообщений не могут быть найдены, они пропускаются. Возвращает 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 - Метод для удаления сообщений в чатах с учётом временных ограничений и прав бота.
Комментарии