Метод sendPaidMedia

Метод для отправки платного медиаконтента, доступ к которому пользователи могут получить за Telegram Stars.

Описание

Используйте этот метод для отправки платного медиа. При успешном выполнении возвращается отправленное Message.

Параметр Тип Обязательный Описание
business_connection_id String Опционально Уникальный идентификатор бизнес-подключения, от имени которого будет отправлено сообщение
chat_id Integer или String Да Уникальный идентификатор целевого чата или имя пользователя целевого канала (в формате @channelusername). Если чат является каналом, все поступления от Telegram Stars за это медиа будут зачислены на баланс чата. В противном случае они будут зачислены на баланс бота.
message_thread_id Integer Опционально Уникальный идентификатор целевой ветки сообщений (темы) форума; только для супергрупп-форумов
direct_messages_topic_id Integer Опционально Идентификатор темы прямых сообщений, в которую будет отправлено сообщение; требуется, если сообщение отправляется в чат прямых сообщений
star_count Integer Да Количество Telegram Stars, которое необходимо оплатить для получения доступа к медиа; 1-10000
media Массив InputPaidMedia Да JSON-сериализованный массив, описывающий отправляемое медиа; до 10 элементов
payload String Опционально Определяемая ботом полезная нагрузка платного медиа, 0-128 байт. Не отображается пользователю, используйте её для ваших внутренних процессов.
caption String Опционально Подпись к медиа, 0-1024 символа после обработки сущностей
parse_mode String Опционально Режим обработки сущностей в подписи к медиа. Подробнее см. параметры форматирования.
caption_entities Массив MessageEntity Опционально JSON-сериализованный список специальных сущностей, встречающихся в подписи, который может быть указан вместо parse_mode
show_caption_above_media Boolean Опционально Передайте True, если подпись должна отображаться над медиа сообщения
disable_notification Boolean Опционально Отправляет сообщение бесшумно. Пользователи получат уведомление без звука.
protect_content Boolean Опционально Защищает содержимое отправленного сообщения от пересылки и сохранения
allow_paid_broadcast Boolean Опционально Передайте True, чтобы разрешить до 1000 сообщений в секунду, игнорируя ограничения рассылки за плату 0.1 Telegram Stars за сообщение. Соответствующие Stars будут списаны с баланса бота
suggested_post_parameters SuggestedPostParameters Опционально JSON-сериализованный объект, содержащий параметры предлагаемой публикации для отправки; только для чатов прямых сообщений. Если сообщение отправляется в ответ на другую предлагаемую публикацию, то эта предлагаемая публикация автоматически отклоняется.
reply_parameters ReplyParameters Опционально Описание сообщения, на которое нужно ответить
reply_markup InlineKeyboardMarkup или ReplyKeyboardMarkup или ReplyKeyboardRemove или ForceReply Опционально Дополнительные параметры интерфейса. JSON-сериализованный объект для встроенной клавиатуры, пользовательской клавиатуры ответа, инструкций по удалению клавиатуры ответа или принуждению ответа от пользователя

Примеры

php

<?php

$botToken = 'YOUR_BOT_TOKEN';
$apiUrl = "https://api.telegram.org/bot{$botToken}/sendPaidMedia";

// Подготовка данных для отправки
$postData = [
    'chat_id' => 123456789, // ID чата или канала
    'star_count' => 50, // Стоимость в звездах (1-10000)
    'media' => json_encode([
        [
            'type' => 'photo',
            'media' => 'https://example.com/image.jpg',
            'thumbnail' => 'https://example.com/thumb.jpg',
            'width' => 800,
            'height' => 600
        ],
        [
            'type' => 'video',
            'media' => 'https://example.com/video.mp4',
            'thumbnail' => 'https://example.com/video_thumb.jpg',
            'width' => 1280,
            'height' => 720,
            'duration' => 60
        ]
    ]),
    'caption' => 'Премиум контент за 50 звёзд!',
    'parse_mode' => 'HTML',
    'disable_notification' => false,
    'protect_content' => true,
    'payload' => 'internal_order_123' // Внутренний идентификатор
];

// Отправка запроса
$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_HTTPHEADER, [
    'Content-Type: multipart/form-data'
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (curl_errno($ch)) {
    echo 'Ошибка cURL: ' . curl_error($ch);
} else {
    $responseData = json_decode($response, true);
    if ($responseData['ok']) {
        echo "Платный контент отправлен! ID сообщения: " . $responseData['result']['message_id'];
    } else {
        echo "Ошибка: " . $responseData['description'];
    }
}

curl_close($ch);

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

$response = file_get_contents($apiUrl, false, $context);
$responseData = json_decode($response, true);
*/
?>

python

import requests

def send_paid_media(bot_token, chat_id, star_count, media, **kwargs):
    """
    Отправка платного медиа через Telegram Bot API
    
    Параметры:
    - bot_token: токен вашего бота
    - chat_id: ID чата или username канала
    - star_count: количество Telegram Stars (1-10000)
    - media: список объектов InputPaidMedia
    - **kwargs: дополнительные параметры (business_connection_id, caption, и т.д.)
    """
    
    url = f"https://api.telegram.org/bot{bot_token}/sendPaidMedia"
    
    # Обязательные параметры
    data = {
        "chat_id": chat_id,
        "star_count": star_count,
        "media": media
    }
    
    # Добавление опциональных параметров
    optional_params = [
        "business_connection_id",
        "message_thread_id",
        "direct_messages_topic_id",
        "payload",
        "caption",
        "parse_mode",
        "caption_entities",
        "show_caption_above_media",
        "disable_notification",
        "protect_content",
        "allow_paid_broadcast",
        "suggested_post_parameters",
        "reply_parameters",
        "reply_markup"
    ]
    
    for param in optional_params:
        if param in kwargs:
            data[param] = kwargs[param]
    
    response = requests.post(url, json=data)
    return response.json()

# Пример использования
if __name__ == "__main__":
    BOT_TOKEN = "YOUR_BOT_TOKEN"
    CHAT_ID = "@your_channel"  # или числовой ID
    
    # Пример создания медиа объекта
    media_example = [
        {
            "type": "photo",
            "media": "https://example.com/photo.jpg",
            "thumbnail": "https://example.com/thumb.jpg",
            "width": 800,
            "height": 600
        },
        {
            "type": "video",
            "media": "https://example.com/video.mp4",
            "thumbnail": "https://example.com/video_thumb.jpg",
            "width": 1280,
            "height": 720,
            "duration": 60
        }
    ]
    
    # Отправка платного медиа
    result = send_paid_media(
        bot_token=BOT_TOKEN,
        chat_id=CHAT_ID,
        star_count=100,  # 100 Telegram Stars
        media=media_example,
        caption="Премиум контент!",
        parse_mode="HTML",
        disable_notification=True,
        protect_content=True
    )
    
    print(result)

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

  • API 7.6. Добавлен метод sendPaidMedia
  • API 7.9. Обновлен метод sendPaidMedia: Добавлен параметр business_connection_id для отправки платного контента от имени бизнес-аккаунта
  • API 7.10. Обновлен метод sendPaidMedia: Добавлена возможность указывать payload
  • API 7.11. Обновлен метод sendPaidMedia: Добавлен параметр allow_paid_broadcast
  • API 9.2. Обновлен метод sendPaidMedia: Добавлен параметр direct_messages_topic_id
  • API 9.3. Обновлен метод sendPaidMedia: Поддержан параметр message_thread_id в личных чатах с темами для отправки сообщения в конкретную тему.

Дополнительно

  • Message - Это основной объект, представляющий сообщение в Telegram, который содержит информацию об отправителе, чате, контенте (текст, медиа, служебные данные) и различные метаданные.
  • InputPaidMedia - Объект описывает платную медиа-информацию для отправки, которая может быть фотографией или видео.
  • MessageEntity - Объект MessageEntity представляет специальную форматированную сущность в тексте сообщения, такую как упоминания, хэштеги, ссылки или стилизованный текст.
  • SuggestedPostParameters - Объект содержит параметры публикации, предлагаемой ботом, включая цену и дату отправки.
  • ReplyParameters - Объект, описывающий параметры для ответа на сообщение, включая идентификатор сообщения, чат, цитирование и дополнительные настройки.
  • InlineKeyboardMarkup - Объект для создания встроенной клавиатуры, которая отображается непосредственно в сообщении.
  • ReplyKeyboardMarkup - Объект, представляющий пользовательскую клавиатуру с вариантами ответа для ботов Telegram.
  • ReplyKeyboardRemove - Объект для удаления пользовательской клавиатуры и возврата к стандартной буквенной клавиатуре в клиентах Telegram.
  • ForceReply - Объект ForceReply принудительно отображает интерфейс ответа в клиентах Telegram, упрощая создание пошаговых диалогов с ботом.
Комментарии