Метод deleteForumTopic

Метод удаляет тему форума со всеми сообщениями в супергруппе, если бот имеет права администратора.

Описание

Используйте этот метод для удаления темы форума вместе со всеми её сообщениями в супергрупповом чате форума. Бот должен быть администратором в чате для работы этого метода и иметь права администратора can_delete_messages. Возвращает True при успешном выполнении.

Параметр Тип Обязательный Описание
chat_id Integer или String Да Уникальный идентификатор целевого чата или имя пользователя целевой супергруппы (в формате @supergroupusername)
message_thread_id Integer Да Уникальный идентификатор целевой ветки сообщений темы форума

Примеры

php

<?php

// Токен вашего бота
$botToken = 'YOUR_BOT_TOKEN';

// Параметры запроса
$chatId = -1001234567890; // ID супергруппы или @supergroupusername
$messageThreadId = 12345; // ID топика форума

// Формируем URL для запроса
$apiUrl = "https://api.telegram.org/bot{$botToken}/deleteForumTopic";

// Подготавливаем данные
$postData = [
    'chat_id' => $chatId,
    'message_thread_id' => $messageThreadId
];

// Инициализируем 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); // Для отладки, в продакшене лучше использовать true

// Выполняем запрос
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

// Проверяем ошибки cURL
if (curl_errno($ch)) {
    echo 'Ошибка cURL: ' . curl_error($ch);
} else {
    // Декодируем ответ
    $responseData = json_decode($response, true);
    
    if ($responseData['ok'] === true) {
        echo 'Топик форума успешно удален!';
    } else {
        echo 'Ошибка: ' . $responseData['description'];
    }
}

// Закрываем соединение
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'] === true) {
    echo 'Топик форума успешно удален!';
} else {
    echo 'Ошибка: ' . $responseData['description'];
}
*/
?>

python

import requests

def delete_forum_topic(bot_token, chat_id, message_thread_id):
    """
    Удаляет топик форума вместе со всеми его сообщениями.
    
    Args:
        bot_token (str): Токен вашего бота
        chat_id (int | str): ID чата или username супергруппы
        message_thread_id (int): ID топика форума
    
    Returns:
        bool: True в случае успеха, иначе False
    """
    url = f"https://api.telegram.org/bot{bot_token}/deleteForumTopic"
    
    payload = {
        "chat_id": chat_id,
        "message_thread_id": message_thread_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

# Пример использования
if __name__ == "__main__":
    BOT_TOKEN = "YOUR_BOT_TOKEN"
    CHAT_ID = -1001234567890  # или "@supergroupusername"
    TOPIC_ID = 123  # ID топика форума
    
    success = delete_forum_topic(BOT_TOKEN, CHAT_ID, TOPIC_ID)
    
    if success:
        print("Топик форума успешно удален")
    else:
        print("Не удалось удалить топик форума")

История изменений

  • API 6.3. Добавлен метод deleteForumTopic
  • API 9.3. Обновлен метод deleteForumTopic: Поддержан параметр message_thread_id в личных чатах с темами для управления темами.
Комментарии