Описание
Сохраняет сообщение, которое может быть отправлено пользователем мини-приложения. Возвращает объект PreparedInlineMessage.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| user_id | Integer | Да | Уникальный идентификатор целевого пользователя, который может использовать подготовленное сообщение |
| result | InlineQueryResult | Да | JSON-сериализованный объект, описывающий отправляемое сообщение |
| allow_user_chats | Boolean | Необязательный | Передайте True, если сообщение можно отправлять в личные чаты с пользователями |
| allow_bot_chats | Boolean | Необязательный | Передайте True, если сообщение можно отправлять в личные чаты с ботами |
| allow_group_chats | Boolean | Необязательный | Передайте True, если сообщение можно отправлять в групповые чаты и супергруппы |
| allow_channel_chats | Boolean | Необязательный | Передайте True, если сообщение можно отправлять в чаты каналов |
Примеры
php
<?php
// Пример использования метода savePreparedInlineMessage
// Токен вашего бота
$botToken = 'ВАШ_ТОКЕН_БОТА';
// ID пользователя, который сможет использовать подготовленное сообщение
$userId = 123456789;
// Создаем объект InlineQueryResultArticle (один из типов InlineQueryResult)
$inlineQueryResult = [
'type' => 'article',
'id' => uniqid(), // Уникальный идентификатор результата
'title' => 'Пример подготовленного сообщения',
'input_message_content' => [
'message_text' => 'Это подготовленное сообщение, которое можно отправить через Mini App!',
'parse_mode' => 'HTML'
],
'description' => 'Описание подготовленного сообщения',
'thumbnail_url' => 'https://example.com/image.jpg'
];
// Параметры для метода
$params = [
'user_id' => $userId,
'result' => json_encode($inlineQueryResult),
'allow_user_chats' => true,
'allow_bot_chats' => false,
'allow_group_chats' => true,
'allow_channel_chats' => false
];
// URL для вызова метода
$url = "https://api.telegram.org/bot{$botToken}/savePreparedInlineMessage";
// Отправка запроса с использованием cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Отключить для тестирования, для продакшена включить
$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 "Подготовленное сообщение успешно сохранено!\n";
echo "ID сообщения: " . $responseData['result']['id'] . "\n";
echo "Ссылка для отправки: " . $responseData['result']['url'] . "\n";
} else {
echo "Ошибка: " . $responseData['description'] . "\n";
}
}
curl_close($ch);
// Альтернативный вариант с использованием file_get_contents (требует allow_url_fopen = On)
/*
$options = [
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($params)
]
];
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
if ($response !== false) {
$responseData = json_decode($response, true);
// Обработка ответа
}
*/
?>
python
import requests
def save_prepared_inline_message(bot_token, user_id, result, allow_user_chats=None,
allow_bot_chats=None, allow_group_chats=None,
allow_channel_chats=None):
"""
Сохраняет сообщение, которое может быть отправлено пользователем Mini App.
Args:
bot_token (str): Токен бота
user_id (int): Уникальный идентификатор пользователя
result (dict): Объект InlineQueryResult в формате JSON
allow_user_chats (bool, optional): Разрешить отправку в личные чаты с пользователями
allow_bot_chats (bool, optional): Разрешить отправку в личные чаты с ботами
allow_group_chats (bool, optional): Разрешить отправку в групповые чаты
allow_channel_chats (bool, optional): Разрешить отправку в каналы
Returns:
dict: Ответ от Telegram API в формате JSON
"""
url = f"https://api.telegram.org/bot{bot_token}/savePreparedInlineMessage"
payload = {
"user_id": user_id,
"result": result
}
# Добавляем необязательные параметры, если они переданы
if allow_user_chats is not None:
payload["allow_user_chats"] = allow_user_chats
if allow_bot_chats is not None:
payload["allow_bot_chats"] = allow_bot_chats
if allow_group_chats is not None:
payload["allow_group_chats"] = allow_group_chats
if allow_channel_chats is not None:
payload["allow_channel_chats"] = allow_channel_chats
response = requests.post(url, json=payload)
return response.json()
# Пример использования
if __name__ == "__main__":
# Токен вашего бота
BOT_TOKEN = "YOUR_BOT_TOKEN"
# ID пользователя, который сможет использовать сообщение
USER_ID = 123456789
# Пример InlineQueryResult (статья)
inline_result = {
"type": "article",
"id": "1",
"title": "Пример заголовка",
"input_message_content": {
"message_text": "Текст сообщения, которое будет отправлено"
},
"description": "Описание статьи",
"thumbnail_url": "https://example.com/image.jpg"
}
# Вызов метода
result = save_prepared_inline_message(
bot_token=BOT_TOKEN,
user_id=USER_ID,
result=inline_result,
allow_user_chats=True,
allow_group_chats=True,
allow_bot_chats=False,
allow_channel_chats=False
)
print(result)
История изменений
- API 8.0. Добавлен метод savePreparedInlineMessage
Дополнительно
- PreparedInlineMessage - Объект описывает подготовленное встроенное сообщение для отправки пользователем мини-приложения с указанием его уникального идентификатора и срока действия.
- InlineQueryResult - Этот объект представляет один результат inline-запроса и может быть одного из 20 поддерживаемых типов, таких как аудио, фото, видео, документы и другие медиаформаты.