Метод sendGift

Метод отправляет цифровой подарок пользователю или каналу с возможностью добавления текста и оплаты улучшения подарка.

Описание

Отправляет подарок указанному пользователю или чату канала. Получатель не может конвертировать подарок в Telegram Stars. Возвращает True при успешном выполнении.

Параметр Тип Обязательный Описание
user_id Integer Опционально Требуется, если не указан chat_id. Уникальный идентификатор целевого пользователя, который получит подарок.
chat_id Integer или String Опционально Требуется, если не указан user_id. Уникальный идентификатор чата или имя пользователя канала (в формате @channelusername), который получит подарок.
gift_id String Да Идентификатор подарка
pay_for_upgrade Boolean Опционально Передайте True, чтобы оплатить улучшение подарка из баланса бота, сделав улучшение бесплатным для получателя
text String Опционально Текст, который будет показан вместе с подарком; 0-128 символов
text_parse_mode String Опционально Режим разбора сущностей в тексте. Подробнее см. форматирование. Сущности, кроме «жирный», «курсив», «подчёркнутый», «зачёркнутый», «спойлер» и «custom_emoji», игнорируются.
text_entities Array of MessageEntity Опционально Список специальных сущностей в тексте подарка в формате JSON. Может быть указан вместо text_parse_mode. Сущности, кроме «жирный», «курсив», «подчёркнутый», «зачёркнутый», «спойлер» и «custom_emoji», игнорируются.

Примеры

php

<?php

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

// Пример 1: Отправка подарка пользователю по user_id
$data1 = [
    'user_id' => 123456789,
    'gift_id' => 'premium_gift_001',
    'text' => '🎁 Вот подарок для тебя!',
    'text_parse_mode' => 'HTML',
    'pay_for_upgrade' => true
];

// Пример 2: Отправка подарка в канал по chat_id
$data2 = [
    'chat_id' => '@my_channel',
    'gift_id' => 'channel_gift_002',
    'text' => 'Подарок для наших подписчиков!',
    'text_parse_mode' => 'MarkdownV2'
];

// Пример 3: Отправка с кастомными entities
$data3 = [
    'user_id' => 987654321,
    'gift_id' => 'special_gift_003',
    'text' => 'Вот особенный подарок со спойлером!',
    'text_entities' => json_encode([
        [
            'type' => 'spoiler',
            'offset' => 24,
            'length' => 8
        ],
        [
            'type' => 'bold',
            'offset' => 0,
            'length' => 4
        ]
    ])
];

// Функция для отправки запроса
function sendTelegramRequest($url, $data) {
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Content-Type: application/json'
    ]);
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    
    curl_close($ch);
    
    return [
        'code' => $httpCode,
        'response' => json_decode($response, true)
    ];
}

// Отправка первого примера
$result1 = sendTelegramRequest($apiUrl, json_encode($data1));

if ($result1['code'] === 200 && $result1['response']['ok']) {
    echo "Подарок успешно отправлен пользователю!\n";
} else {
    echo "Ошибка: " . print_r($result1['response'], true) . "\n";
}

// Альтернативный вариант с использованием file_get_contents
function sendGiftSimple($botToken, $params) {
    $url = "https://api.telegram.org/bot{$botToken}/sendGift";
    
    $options = [
        'http' => [
            'header' => "Content-Type: application/json\r\n",
            'method' => 'POST',
            'content' => json_encode($params)
        ]
    ];
    
    $context = stream_context_create($options);
    $result = file_get_contents($url, false, $context);
    
    return json_decode($result, true);
}

// Пример использования простой функции
$simpleResult = sendGiftSimple($botToken, [
    'chat_id' => -1001234567890,
    'gift_id' => 'group_gift_004',
    'text' => 'Подарок для группы!',
    'pay_for_upgrade' => false
]);

if ($simpleResult['ok']) {
    echo "Подарок отправлен в группу!\n";
}

?>

python

import asyncio
from telegram import Bot
from telegram.constants import ParseMode

async def send_gift_example():
    # Инициализация бота с вашим токеном
    bot = Bot(token="YOUR_BOT_TOKEN")
    
    # Пример отправки подарка пользователю
    try:
        # Вариант 1: Отправка пользователю по user_id
        result = await bot.send_gift(
            user_id=123456789,  # ID пользователя
            gift_id="premium_gift_001",  # ID подарка
            text="🎁 Вот подарок для тебя!",
            text_parse_mode=ParseMode.HTML,
            pay_for_upgrade=True
        )
        print(f"Подарок отправлен пользователю: {result}")
        
        # Вариант 2: Отправка в канал по chat_id
        result = await bot.send_gift(
            chat_id="@my_channel",  # Имя канала
            gift_id="channel_gift_001",
            text="<b>Специальный подарок для подписчиков!</b>",
            text_parse_mode=ParseMode.HTML
        )
        print(f"Подарок отправлен в канал: {result}")
        
        # Вариант 3: С указанием entities вместо parse_mode
        from telegram import MessageEntity
        
        entities = [
            MessageEntity(type=MessageEntity.BOLD, offset=0, length=10),
            MessageEntity(type=MessageEntity.ITALIC, offset=11, length=8)
        ]
        
        result = await bot.send_gift(
            user_id=987654321,
            gift_id="custom_gift_002",
            text="Вот жирный и курсивный текст",
            text_entities=entities
        )
        print(f"Подарок с entities отправлен: {result}")
        
    except Exception as e:
        print(f"Ошибка при отправке подарка: {e}")

# Запуск асинхронной функции
if __name__ == "__main__":
    asyncio.run(send_gift_example())

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

  • API 8.0. Добавлен метод sendGift
  • API 8.2. Обновлен метод sendGift: Добавлен параметр pay_for_upgrade
  • API 8.3. Обновлен метод sendGift: Добавлен параметр chat_id, позволяющий ботам отправлять подарки в каналы

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

  • MessageEntity - Объект MessageEntity представляет специальную форматированную сущность в тексте сообщения, такую как упоминания, хэштеги, ссылки или стилизованный текст.
Комментарии