Метод sendVideoNote

Метод для отправки круглых видеосообщений длительностью до 1 минуты в чаты Telegram.

Описание

Начиная с v.4.0, клиенты Telegram поддерживают круглые квадратные видео в формате MPEG4 длительностью до 1 минуты. Используйте этот метод для отправки видеосообщений. При успешном выполнении возвращается отправленное Message.

Параметр Тип Обязательный Описание
business_connection_id String Опционально Уникальный идентификатор бизнес-подключения, от имени которого будет отправлено сообщение
chat_id Integer или String Да Уникальный идентификатор целевого чата или имя пользователя целевого канала (в формате @channelusername)
message_thread_id Integer Опционально Уникальный идентификатор целевой ветки сообщений (темы) форума; только для супергрупп-форумов
direct_messages_topic_id Integer Опционально Идентификатор темы личных сообщений, в которую будет отправлено сообщение; требуется, если сообщение отправляется в чат личных сообщений
video_note InputFile или String Да Видеосообщение для отправки. Передайте file_id в виде строки, чтобы отправить видеосообщение, существующее на серверах Telegram (рекомендуется), или загрузите новое видео, используя multipart/form-data. Подробнее об отправке файлов ». Отправка видеосообщений по URL в настоящее время не поддерживается
duration Integer Опционально Длительность отправленного видео в секундах
length Integer Опционально Ширина и высота видео, т.е. диаметр видеосообщения
thumbnail InputFile или String Опционально Миниатюра отправляемого файла; может быть проигнорирована, если генерация миниатюр для файла поддерживается на стороне сервера. Миниатюра должна быть в формате JPEG и размером менее 200 КБ. Ширина и высота миниатюры не должны превышать 320. Игнорируется, если файл не загружается с использованием multipart/form-data. Миниатюры нельзя повторно использовать, их можно загружать только как новый файл, поэтому вы можете передать «attach://<имя_прикрепленного_файла>», если миниатюра была загружена с использованием multipart/form-data под <имя_прикрепленного_файла>. Подробнее об отправке файлов »
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

// Пример использования метода sendVideoNote в Telegram Bot API

// Токен вашего бота
$botToken = 'YOUR_BOT_TOKEN';
$apiUrl = "https://api.telegram.org/bot{$botToken}/sendVideoNote";

// Параметры запроса
$chatId = 123456789; // ID чата или username канала (например, "@channelname")
$videoNote = 'AgACAgIAAxkBAAM...'; // file_id существующего видео-сообщения на серверах Telegram

// Альтернативно: загрузка нового видео-сообщения
// $videoNote = new CURLFile('/path/to/video_note.mp4');

$params = [
    'chat_id' => $chatId,
    'video_note' => $videoNote,
    'duration' => 30, // Длительность в секундах (опционально)
    'length' => 360, // Диаметр видео-сообщения (опционально)
    'disable_notification' => false, // Отправка без звука (опционально)
    'protect_content' => true, // Защита от пересылки и сохранения (опционально)
    'allow_paid_broadcast' => false, // Платная рассылка (опционально)
    'message_effect_id' => 'effect_id', // Эффект сообщения (опционально)
    'reply_parameters' => json_encode([
        'message_id' => 123, // ID сообщения для ответа
        'chat_id' => $chatId, // ID чата (если отличается)
    ]),
    'reply_markup' => json_encode([
        'inline_keyboard' => [
            [
                ['text' => 'Кнопка 1', 'callback_data' => 'btn1'],
                ['text' => 'Кнопка 2', 'callback_data' => 'btn2']
            ]
        ]
    ])
];

// Для бизнес-аккаунтов (опционально)
// $params['business_connection_id'] = 'business_connection_id';

// Для тем форума (опционально)
// $params['message_thread_id'] = 456;

// Для тем личных сообщений (опционально)
// $params['direct_messages_topic_id'] = 789;

// Для предложенных постов (опционально)
// $params['suggested_post_parameters'] = json_encode([
//     'send_copy' => true,
//     'disable_notification' => false
// ]);

// Отправка запроса
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
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);
curl_close($ch);

// Обработка ответа
$result = json_decode($response, true);
if ($result['ok']) {
    echo "Видео-сообщение отправлено! ID сообщения: " . $result['result']['message_id'];
} else {
    echo "Ошибка: " . $result['description'];
}

// Альтернативный вариант с использованием file_id через URL
$urlWithFileId = "https://api.telegram.org/bot{$botToken}/sendVideoNote?chat_id={$chatId}&video_note={$videoNote}";
// file_get_contents($urlWithFileId);

?>

python

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

async def send_video_note_example():
    # Инициализация бота с токеном
    bot = Bot(token="YOUR_BOT_TOKEN")
    
    # ID чата (можно использовать числовой ID или username для канала)
    chat_id = "@yourchannel"  # или 123456789
    
    # Отправка video_note по file_id (уже загруженного на сервера Telegram)
    try:
        # Вариант 1: Использование существующего video_note по file_id
        message = await bot.send_video_note(
            chat_id=chat_id,
            video_note="BAACAgIAAxkBAAIB...",  # file_id видео-заметки
            duration=30,  # длительность в секундах (опционально)
            length=360,   # диаметр видео (опционально)
            disable_notification=True,  # без звука
            protect_content=True,  # защита от пересылки
            reply_markup=None  # можно добавить клавиатуру
        )
        print(f"Video note sent with message_id: {message.message_id}")
    
    except Exception as e:
        print(f"Error sending by file_id: {e}")
    
    # Вариант 2: Загрузка нового видео-файла
    try:
        with open("video_note.mp4", "rb") as video_file:
            # Создание InputFile для загрузки
            input_video = InputFile(video_file, filename="video_note.mp4")
            
            # Загрузка thumbnail (опционально)
            with open("thumbnail.jpg", "rb") as thumb_file:
                input_thumbnail = InputFile(thumb_file, filename="thumbnail.jpg")
                
                message = await bot.send_video_note(
                    chat_id=chat_id,
                    video_note=input_video,
                    thumbnail=input_thumbnail,
                    duration=15,
                    length=240,
                    disable_notification=False,
                    protect_content=False,
                    reply_parameters={
                        "message_id": 123,  # ID сообщения для ответа
                        "chat_id": chat_id
                    }
                )
                print(f"New video note uploaded with message_id: {message.message_id}")
    
    except FileNotFoundError:
        print("Video file not found")
    except Exception as e:
        print(f"Error uploading video: {e}")

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

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

  • API 3.0. Добавлен метод sendVideoNote
  • API 5.0. Обновлен метод sendVideoNote: Добавлено поле allow_sending_without_reply
  • API 5.6. Обновлен метод sendVideoNote: Добавлено поле protect_content
  • API 6.3. Обновлен метод sendVideoNote: Добавлен параметр message_thread_id
  • API 6.6. Обновлен метод sendVideoNote: Переименован параметр thumb в thumbnail
  • API 7.0. Обновлен метод sendVideoNote: Заменены параметры reply_to_message_id и allow_sending_without_reply на reply_parameters
  • API 7.4. Обновлен метод sendVideoNote: Добавлен параметр message_effect_id
  • API 7.11. Обновлен метод sendVideoNote: Добавлен параметр allow_paid_broadcast
  • API 9.2. Обновлен метод sendVideoNote: Добавлен параметр direct_messages_topic_id
  • API 9.3. Обновлен метод sendVideoNote: Поддержан параметр message_thread_id в личных чатах с темами для отправки сообщения в конкретную тему.

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

  • Message - Это основной объект, представляющий сообщение в Telegram, который содержит информацию об отправителе, чате, контенте (текст, медиа, служебные данные) и различные метаданные.
  • InputFile - Объект, представляющий содержимое файла для загрузки через multipart/form-data.
  • SuggestedPostParameters - Объект содержит параметры публикации, предлагаемой ботом, включая цену и дату отправки.
  • ReplyParameters - Объект, описывающий параметры для ответа на сообщение, включая идентификатор сообщения, чат, цитирование и дополнительные настройки.
  • InlineKeyboardMarkup - Объект для создания встроенной клавиатуры, которая отображается непосредственно в сообщении.
  • ReplyKeyboardMarkup - Объект, представляющий пользовательскую клавиатуру с вариантами ответа для ботов Telegram.
  • ReplyKeyboardRemove - Объект для удаления пользовательской клавиатуры и возврата к стандартной буквенной клавиатуре в клиентах Telegram.
  • ForceReply - Объект ForceReply принудительно отображает интерфейс ответа в клиентах Telegram, упрощая создание пошаговых диалогов с ботом.
Комментарии