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