Метод sendAnimation

Метод для отправки анимаций (GIF или видео без звука) в чат с поддержкой различных параметров форматирования и уведомлений.

Описание

Используйте этот метод для отправки файлов анимации (GIF или видео H.264/MPEG-4 AVC без звука). При успешной отправке возвращается отправленное Message. В настоящее время боты могут отправлять файлы анимации размером до 50 МБ, этот лимит может быть изменён в будущем.

Параметр Тип Обязательный Описание
business_connection_id String Опционально Уникальный идентификатор бизнес-подключения, от имени которого будет отправлено сообщение
chat_id Integer или String Да Уникальный идентификатор целевого чата или имя пользователя целевого канала (в формате @channelusername)
message_thread_id Integer Опционально Уникальный идентификатор целевой ветки сообщений (темы) форума; только для супергрупп-форумов
direct_messages_topic_id Integer Опционально Идентификатор темы прямых сообщений, в которую будет отправлено сообщение; требуется, если сообщение отправляется в чат прямых сообщений
animation InputFile или String Да Анимация для отправки. Передайте file_id в виде String, чтобы отправить анимацию, существующую на серверах Telegram (рекомендуется), передайте HTTP-URL в виде String, чтобы Telegram получил анимацию из интернета, или загрузите новую анимацию, используя multipart/form-data. Подробнее об отправке файлов »
duration Integer Опционально Длительность отправляемой анимации в секундах
width Integer Опционально Ширина анимации
height Integer Опционально Высота анимации
thumbnail InputFile или String Опционально Миниатюра отправляемого файла; может быть проигнорирована, если генерация миниатюр для файла поддерживается на стороне сервера. Миниатюра должна быть в формате JPEG и размером менее 200 КБ. Ширина и высота миниатюры не должны превышать 320. Игнорируется, если файл не загружается с использованием multipart/form-data. Миниатюры нельзя использовать повторно, их можно загружать только как новый файл, поэтому вы можете передать «attach://<имя_вложения_файла>», если миниатюра была загружена с использованием multipart/form-data под <имя_вложения_файла>. Подробнее об отправке файлов »
caption String Опционально Подпись к анимации (также может использоваться при повторной отправке анимации по file_id), 0-1024 символа после обработки сущностей
parse_mode String Опционально Режим обработки сущностей в подписи к анимации. Подробнее см. параметры форматирования.
caption_entities Массив MessageEntity Опционально Список специальных сущностей, появляющихся в подписи, в формате JSON, который можно указать вместо parse_mode
show_caption_above_media Boolean Опционально Передайте True, если подпись должна отображаться над медиафайлом сообщения
has_spoiler Boolean Опционально Передайте True, если анимацию нужно скрыть анимацией спойлера
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}/sendAnimation";

// Пример 1: Отправка анимации по file_id (рекомендуемый способ)
$data1 = [
    'chat_id' => 123456789,
    'animation' => 'CgACAgQAAxkBAAIB...', // file_id существующей анимации
    'caption' => 'Вот смешной GIF!',
    'parse_mode' => 'HTML',
    'has_spoiler' => true,
    'disable_notification' => false,
    'protect_content' => true,
    'reply_markup' => json_encode([
        'inline_keyboard' => [
            [
                ['text' => 'Открыть сайт', 'url' => 'https://example.com'],
                ['text' => 'Кнопка 2', 'callback_data' => 'btn2']
            ]
        ]
    ])
];

// Пример 2: Отправка анимации по URL
$data2 = [
    'chat_id' => '@my_channel',
    'animation' => 'https://example.com/animation.gif',
    'caption' => 'Анимация из интернета',
    'width' => 320,
    'height' => 240,
    'duration' => 5,
    'reply_parameters' => json_encode([
        'message_id' => 42,
        'chat_id' => 123456789
    ])
];

// Пример 3: Отправка с загрузкой файла (multipart/form-data)
$data3 = [
    'chat_id' => 123456789,
    'animation' => new CURLFile('/path/to/animation.mp4'),
    'thumbnail' => new CURLFile('/path/to/thumbnail.jpg'),
    'caption' => 'Загруженный файл',
    'message_thread_id' => 567, // Для топиков в форумах
    'show_caption_above_media' => true,
    'allow_paid_broadcast' => true
];

// Функция отправки запроса
function sendAnimation($data) {
    global $apiUrl;
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $apiUrl);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    // Для загрузки файлов
    if (isset($data['animation']) && $data['animation'] instanceof CURLFile) {
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'Content-Type: multipart/form-data'
        ]);
    }
    
    $response = curl_exec($ch);
    curl_close($ch);
    
    return json_decode($response, true);
}

// Отправка первого примера
$result = sendAnimation($data1);
if ($result['ok']) {
    echo "Анимация отправлена! ID сообщения: " . $result['result']['message_id'];
} else {
    echo "Ошибка: " . $result['description'];
}

// Пример с бизнес-соединением (если используется)
$dataBusiness = [
    'business_connection_id' => 'bc_123456789',
    'chat_id' => 123456789,
    'animation' => 'AgACAgQAAxkBAAIB...',
    'caption' => 'Сообщение от бизнес-аккаунта',
    'direct_messages_topic_id' => 789 // Для чатов прямых сообщений
];

// Пример с эффектом сообщения
$dataWithEffect = [
    'chat_id' => 123456789,
    'animation' => 'https://example.com/effect_animation.gif',
    'message_effect_id' => 'effect_id_123',
    'caption' => 'С эффектом!'
];

// Пример с параметрами suggested post
$dataSuggested = [
    'chat_id' => 123456789,
    'animation' => 'DgACAgQAAxkBAAIB...',
    'suggested_post_parameters' => json_encode([
        'send_copy' => true,
        'hide_author' => false
    ]),
    'caption' => 'Предложенный пост'
];

?>

python

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

async def send_animation_example():
    # Инициализация бота с токеном
    bot = Bot(token="YOUR_BOT_TOKEN")
    
    # Пример 1: Отправка анимации по file_id (рекомендуется)
    await bot.send_animation(
        chat_id=123456789,  # ID чата
        animation="CgACAgQAAxkBAAIB...",  # file_id существующей анимации
        caption="Вот смешной GIF!",
        parse_mode=ParseMode.HTML,
        has_spoiler=True
    )
    
    # Пример 2: Отправка анимации по URL
    await bot.send_animation(
        chat_id="@channelusername",  # Имя канала
        animation="https://example.com/animation.gif",
        duration=5,
        width=320,
        height=240,
        caption="Анимация из интернета",
        disable_notification=True
    )
    
    # Пример 3: Отправка локального файла с дополнительными параметрами
    with open("animation.mp4", "rb") as animation_file:
        await bot.send_animation(
            chat_id=123456789,
            animation=InputFile(animation_file, filename="funny.mp4"),
            caption="Локальный файл",
            reply_markup={
                "inline_keyboard": [[
                    {"text": "Кнопка", "callback_data": "button_clicked"}
                ]]
            },
            protect_content=True,
            message_effect_id="effect_id_here"
        )
    
    # Пример 4: Отправка в тред форума с reply_parameters
    await bot.send_animation(
        chat_id=-1001234567890,  # ID супергруппы
        message_thread_id=123,  # ID треда
        animation="existing_file_id",
        caption="Анимация в треде",
        reply_parameters={
            "message_id": 456,
            "allow_sending_without_reply": True
        }
    )

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

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

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

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

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