Описание
Используйте этот метод для отправки платного медиа. При успешном выполнении возвращается отправленное 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, упрощая создание пошаговых диалогов с ботом.