Метод declineSuggestedPost

Метод отклоняет предложенную публикацию в чате прямых сообщений, если бот имеет соответствующие права администратора.

Описание

Используйте этот метод, чтобы отклонить предложенную публикацию в чате прямых сообщений. Бот должен иметь право администратора 'can_manage_direct_messages' в соответствующем канальном чате. Возвращает True при успешном выполнении.

Параметр Тип Обязательный Описание
chat_id Integer Да Уникальный идентификатор целевого чата прямых сообщений
message_id Integer Да Идентификатор сообщения с предложенной публикацией для отклонения
comment String Необязательный Комментарий для создателя предложенной публикации; 0-128 символов

Примеры

php

<?php

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

// Параметры запроса
$chatId = 123456789; // ID чата с прямыми сообщениями
$messageId = 987654321; // ID сообщения с предложенным постом
$comment = 'Ваш пост не соответствует правилам сообщества'; // Опциональный комментарий

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

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

// Добавляем комментарий, если он указан
if (!empty($comment)) {
    $postData['comment'] = $comment;
}

// Инициализируем cURL
$ch = curl_init($apiUrl);
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS => json_encode($postData),
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json'
    ]
]);

// Выполняем запрос
$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'] === true) {
        echo "Предложенный пост успешно отклонен!\n";
        
        // Если был передан комментарий, выводим информацию о нем
        if (!empty($comment)) {
            echo "Комментарий для создателя: {$comment}\n";
        }
    } else {
        echo "Ошибка: " . $result['description'] . "\n";
    }
} else {
    echo "HTTP ошибка: {$httpCode}\n";
    echo "Ответ сервера: {$response}\n";
}

// Альтернативный вариант с использованием file_get_contents (требует allow_url_fopen)
/*
$context = stream_context_create([
    'http' => [
        'method' => 'POST',
        'header' => 'Content-Type: application/json',
        'content' => json_encode($postData)
    ]
]);

$response = file_get_contents($apiUrl, false, $context);
if ($response !== false) {
    $result = json_decode($response, true);
    var_dump($result);
}
*/

?>

python

import requests

def decline_suggested_post(bot_token, chat_id, message_id, comment=None):
    """
    Отклоняет предложенный пост в чате прямых сообщений.
    
    Args:
        bot_token (str): Токен вашего бота
        chat_id (int): Уникальный идентификатор целевого чата прямых сообщений
        message_id (int): Идентификатор предложенного сообщения для отклонения
        comment (str, optional): Комментарий для создателя предложенного поста (0-128 символов)
    
    Returns:
        bool: True в случае успеха, иначе False
    """
    url = f"https://api.telegram.org/bot{bot_token}/declineSuggestedPost"
    
    payload = {
        "chat_id": chat_id,
        "message_id": message_id
    }
    
    if comment is not None:
        payload["comment"] = comment
    
    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 = 123456789  # ID чата прямых сообщений
    MESSAGE_ID = 42      # ID предложенного сообщения
    
    # Вариант 1: Без комментария
    success = decline_suggested_post(BOT_TOKEN, CHAT_ID, MESSAGE_ID)
    
    # Вариант 2: С комментарием
    success = decline_suggested_post(
        bot_token=BOT_TOKEN,
        chat_id=CHAT_ID,
        message_id=MESSAGE_ID,
        comment="Ваш пост не соответствует нашим правилам сообщества."
    )
    
    if success:
        print("Предложенный пост успешно отклонен!")
    else:
        print("Не удалось отклонить предложенный пост.")

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

  • API 9.2. Добавлен метод declineSuggestedPost
Комментарии