Метод sendVenue

Метод для отправки информации о месте (локации) с указанием координат, названия и адреса.

Описание

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