Описание
Используйте этот метод для отправки информации о месте. При успешном выполнении возвращается отправленное Message.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| business_connection_id | String | Необязательный | Уникальный идентификатор бизнес-подключения, от имени которого будет отправлено сообщение |
| chat_id | Integer или String | Да | Уникальный идентификатор целевого чата или имя пользователя целевого канала (в формате @channelusername) |
| message_thread_id | Integer | Необязательный | Уникальный идентификатор целевой ветки сообщений (темы) форума; только для супергрупп-форумов |
| direct_messages_topic_id | Integer | Необязательный | Идентификатор темы прямых сообщений, в которую будет отправлено сообщение; требуется, если сообщение отправляется в чат прямых сообщений |
| latitude | Float | Да | Широта места |
| longitude | Float | Да | Долгота места |
| title | String | Да | Название места |
| address | String | Да | Адрес места |
| foursquare_id | String | Необязательный | Идентификатор места в Foursquare |
| foursquare_type | String | Необязательный | Тип места в Foursquare, если известен. (Например, «arts_entertainment/default», «arts_entertainment/aquarium» или «food/icecream».) |
| google_place_id | String | Необязательный | Идентификатор места в Google Places |
| google_place_type | String | Необязательный | Тип места в Google Places. (См. поддерживаемые типы.) |
| disable_notification | Boolean | Необязательный | Отправляет сообщение беззвучно. Пользователи получат уведомление без звука. |
| protect_content | Boolean | Необязательный | Защищает содержимое отправленного сообщения от пересылки и сохранения |
| allow_paid_broadcast | Boolean | Необязательный | Передайте True, чтобы разрешить до 1000 сообщений в секунду, игнорируя ограничения рассылки за плату 0,1 Telegram Stars за сообщение. Соответствующие Stars будут списаны с баланса бота |
| message_effect_id | String | Необязательный | Уникальный идентификатор эффекта сообщения, который будет добавлен к сообщению; только для личных чатов |
| 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}/sendVenue";
// Данные для отправки
$postData = [
'chat_id' => 123456789, // ID чата или @username канала
'latitude' => 40.712776, // Широта (Нью-Йорк)
'longitude' => -74.005974, // Долгота
'title' => 'Statue of Liberty',
'address' => 'Liberty Island, New York, NY 10004',
'foursquare_id' => '4adcda10f964a5205b3521e3',
'google_place_id' => 'ChIJu46S-ZZhLxMROG5lkwZ3D7k',
'disable_notification' => false,
'protect_content' => true,
'reply_markup' => json_encode([
'inline_keyboard' => [
[
['text' => 'Open in Maps', 'url' => 'https://maps.google.com/?q=40.689249,-74.044500']
]
]
])
];
// Опциональные параметры (раскомментировать при необходимости)
// $postData['business_connection_id'] = 'business_connection_id';
// $postData['message_thread_id'] = 123; // Для тем форума
// $postData['direct_messages_topic_id'] = 456; // Для чатов прямых сообщений
// $postData['foursquare_type'] = 'arts_entertainment/monument';
// $postData['google_place_type'] = 'tourist_attraction';
// $postData['allow_paid_broadcast'] = true;
// $postData['message_effect_id'] = 'effect_id';
// $postData['reply_parameters'] = json_encode(['message_id' => 12345]);
// Отправка запроса
$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_SSL_VERIFYPEER, false); // Для отладки
$response = curl_exec($ch);
curl_close($ch);
// Обработка ответа
$result = json_decode($response, true);
if ($result['ok']) {
echo "Сообщение отправлено! ID: " . $result['result']['message_id'];
} else {
echo "Ошибка: " . $result['description'];
}
// Альтернативный вариант с использованием file_get_contents
/*
$context = stream_context_create([
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => http_build_query($postData)
]
]);
$response = file_get_contents($apiUrl, false, $context);
$result = json_decode($response, true);
*/
?>
python
import asyncio
from telegram import Bot, InlineKeyboardButton, InlineKeyboardMarkup
async def send_venue_example():
bot = Bot(token="YOUR_BOT_TOKEN")
# Обязательные параметры
chat_id = 123456789 # или "@channelusername"
latitude = 40.7128
longitude = -74.0060
title = "Statue of Liberty"
address = "Liberty Island, New York, NY 10004"
# Опциональные параметры
foursquare_id = "4b8c6a45f964a520c3d532e3"
google_place_id = "ChIJgUbEo8cfqokR5lP9_Wh_DaM"
disable_notification = True
protect_content = False
# Создаем inline клавиатуру
keyboard = [
[InlineKeyboardButton("Open in Maps", url="https://maps.google.com/?q=40.7128,-74.0060")],
[InlineKeyboardButton("More Info", callback_data="venue_info")]
]
reply_markup = InlineKeyboardMarkup(keyboard)
try:
message = await bot.send_venue(
chat_id=chat_id,
latitude=latitude,
longitude=longitude,
title=title,
address=address,
foursquare_id=foursquare_id,
google_place_id=google_place_id,
disable_notification=disable_notification,
protect_content=protect_content,
reply_markup=reply_markup
)
print(f"Message sent with ID: {message.message_id}")
except Exception as e:
print(f"Error: {e}")
# Запуск асинхронной функции
if __name__ == "__main__":
asyncio.run(send_venue_example())
История изменений
- API 2.0. Добавлен метод sendVenue
- API 4.0. Обновлен метод sendVenue: Добавлен параметр foursquare_type
- API 5.0. Обновлен метод sendVenue: Добавлены параметры google_place_id и google_place_type и поле allow_sending_without_reply
- API 5.6. Обновлен метод sendVenue: Добавлено поле protect_content
- API 6.3. Обновлен метод sendVenue: Добавлен параметр message_thread_id
- API 7.0. Обновлен метод sendVenue: Заменены параметры reply_to_message_id и allow_sending_without_reply на reply_parameters
- API 7.4. Обновлен метод sendVenue: Добавлен параметр message_effect_id
- API 7.11. Обновлен метод sendVenue: Добавлен параметр allow_paid_broadcast
- API 9.2. Обновлен метод sendVenue: Добавлен параметр direct_messages_topic_id
- API 9.3. Обновлен метод sendVenue: Поддержан параметр message_thread_id в личных чатах с темами для отправки сообщения в конкретную тему.
Дополнительно
- Message - Это основной объект, представляющий сообщение в Telegram, который содержит информацию об отправителе, чате, контенте (текст, медиа, служебные данные) и различные метаданные.
- SuggestedPostParameters - Объект содержит параметры публикации, предлагаемой ботом, включая цену и дату отправки.
- ReplyParameters - Объект, описывающий параметры для ответа на сообщение, включая идентификатор сообщения, чат, цитирование и дополнительные настройки.
- InlineKeyboardMarkup - Объект для создания встроенной клавиатуры, которая отображается непосредственно в сообщении.
- ReplyKeyboardMarkup - Объект, представляющий пользовательскую клавиатуру с вариантами ответа для ботов Telegram.
- ReplyKeyboardRemove - Объект для удаления пользовательской клавиатуры и возврата к стандартной буквенной клавиатуре в клиентах Telegram.
- ForceReply - Объект ForceReply принудительно отображает интерфейс ответа в клиентах Telegram, упрощая создание пошаговых диалогов с ботом.