Метод sendAudio

Метод для отправки аудиофайлов в форматах MP3 или M4A, которые будут отображаться в музыкальном проигрывателе Telegram.

Описание

Используйте этот метод для отправки аудиофайлов, если вы хотите, чтобы клиенты Telegram отображали их в музыкальном проигрывателе. Ваше аудио должно быть в формате .MP3 или .M4A. При успешном выполнении возвращается отправленное Message. В настоящее время боты могут отправлять аудиофайлы размером до 50 МБ, этот лимит может быть изменен в будущем.

Для отправки голосовых сообщений используйте вместо этого метод sendVoice.

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

// Вариант 1: Отправка аудио по file_id (уже загруженного на сервера Telegram)
$audioFileId = 'AgACAgIAAxkBAAIB...'; // Пример file_id

$data = [
    'chat_id' => $chatId,
    'audio' => $audioFileId,
    'caption' => 'Ваша музыкальная композиция',
    'parse_mode' => 'HTML',
    'duration' => 180,
    'performer' => 'Исполнитель',
    'title' => 'Название трека',
    'disable_notification' => false,
    'protect_content' => false
];

// Вариант 2: Отправка аудио по URL
$audioUrl = 'https://example.com/audio/song.mp3';

$dataUrl = [
    'chat_id' => $chatId,
    'audio' => $audioUrl,
    'caption' => 'Аудио из интернета',
    'parse_mode' => 'MarkdownV2'
];

// Вариант 3: Загрузка нового аудио файла (multipart/form-data)
$audioPath = '/path/to/your/audio.mp3';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.telegram.org/bot{$botToken}/sendAudio");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$postFields = [
    'chat_id' => $chatId,
    'caption' => 'Новое аудио',
    'duration' => 200,
    'performer' => 'Мой бот',
    'title' => 'Загруженный трек',
    'disable_notification' => true
];

// Добавляем файл если он существует
if (file_exists($audioPath)) {
    $postFields['audio'] = new CURLFile($audioPath);
    
    // Добавляем обложку если нужно
    $thumbnailPath = '/path/to/thumbnail.jpg';
    if (file_exists($thumbnailPath)) {
        $postFields['thumbnail'] = new CURLFile($thumbnailPath);
    }
}

curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);

$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'];
}

// Вариант 4: С использованием reply_markup
$dataWithKeyboard = [
    'chat_id' => $chatId,
    'audio' => $audioFileId,
    'caption' => 'Выберите действие:',
    'reply_markup' => json_encode([
        'inline_keyboard' => [
            [
                ['text' => '👍 Нравится', 'callback_data' => 'like_audio'],
                ['text' => '👎 Не нравится', 'callback_data' => 'dislike_audio']
            ],
            [
                ['text' => 'Скачать', 'url' => 'https://example.com/download']
            ]
        ]
    ])
];

// Вариант 5: С reply_parameters (ответ на сообщение)
$dataWithReply = [
    'chat_id' => $chatId,
    'audio' => $audioFileId,
    'caption' => 'В ответ на ваше сообщение',
    'reply_parameters' => json_encode([
        'message_id' => 12345,
        'chat_id' => $chatId,
        'allow_sending_without_reply' => true
    ])
];

// Функция для отправки запроса
function sendTelegramRequest($method, $data, $isMultipart = false) {
    $botToken = 'YOUR_BOT_TOKEN';
    $url = "https://api.telegram.org/bot{$botToken}/{$method}";
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    if ($isMultipart) {
        curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: multipart/form-data']);
    } else {
        curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
        $data = json_encode($data);
    }
    
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    
    $response = curl_exec($ch);
    curl_close($ch);
    
    return json_decode($response, true);
}

// Пример использования функции
$result = sendTelegramRequest('sendAudio', $data);
if ($result['ok']) {
    // Обработка успешной отправки
    $messageId = $result['result']['message_id'];
    // ... дальнейшие действия
}

?>

python

import requests

def send_audio(bot_token, chat_id, audio_file_path, caption=None, duration=None, performer=None, title=None):
    """
    Отправляет аудиофайл в указанный чат.
    
    :param bot_token: Токен вашего бота
    :param chat_id: ID чата или username канала
    :param audio_file_path: Путь к аудиофайлу (.mp3 или .m4a)
    :param caption: Подпись к аудио (до 1024 символов)
    :param duration: Длительность аудио в секундах
    :param performer: Исполнитель
    :param title: Название трека
    :return: Ответ от Telegram API
    """
    url = f"https://api.telegram.org/bot{bot_token}/sendAudio"
    
    # Подготовка данных
    data = {
        'chat_id': chat_id,
    }
    
    if caption:
        data['caption'] = caption
    if duration:
        data['duration'] = duration
    if performer:
        data['performer'] = performer
    if title:
        data['title'] = title
    
    # Открытие файла для отправки
    with open(audio_file_path, 'rb') as audio_file:
        files = {
            'audio': audio_file
        }
        
        # Отправка запроса
        response = requests.post(url, data=data, files=files)
    
    return response.json()

# Пример использования
if __name__ == "__main__":
    # Конфигурация
    BOT_TOKEN = "YOUR_BOT_TOKEN"
    CHAT_ID = "123456789"  # или "@channelusername"
    AUDIO_FILE = "music.mp3"
    
    # Отправка аудио с подписью
    result = send_audio(
        bot_token=BOT_TOKEN,
        chat_id=CHAT_ID,
        audio_file_path=AUDIO_FILE,
        caption="Отличная музыка! 🎵",
        duration=180,
        performer="Исполнитель",
        title="Название трека"
    )
    
    print(result)

# Альтернативный пример с использованием file_id
def send_audio_by_file_id(bot_token, chat_id, file_id, caption=None):
    """
    Отправляет аудио по file_id (файл уже загружен на серверах Telegram)
    """
    url = f"https://api.telegram.org/bot{bot_token}/sendAudio"
    
    payload = {
        'chat_id': chat_id,
        'audio': file_id
    }
    
    if caption:
        payload['caption'] = caption
    
    response = requests.post(url, json=payload)
    return response.json()

# Пример с дополнительными параметрами
def send_audio_with_options(bot_token, chat_id, audio_file_path, **kwargs):
    """
    Расширенная версия с поддержкой дополнительных параметров
    """
    url = f"https://api.telegram.org/bot{bot_token}/sendAudio"
    
    # Базовые параметры
    data = {
        'chat_id': chat_id,
        'parse_mode': kwargs.get('parse_mode', 'HTML'),
        'disable_notification': kwargs.get('disable_notification', False),
        'protect_content': kwargs.get('protect_content', False)
    }
    
    # Опциональные параметры
    optional_params = ['caption', 'duration', 'performer', 'title', 
                      'message_thread_id', 'reply_parameters', 'reply_markup']
    
    for param in optional_params:
        if param in kwargs:
            data[param] = kwargs[param]
    
    # Отправка файла
    with open(audio_file_path, 'rb') as audio_file:
        files = {'audio': audio_file}
        
        # Если есть миниатюра
        if 'thumbnail' in kwargs:
            with open(kwargs['thumbnail'], 'rb') as thumb_file:
                files['thumbnail'] = thumb_file
        
        response = requests.post(url, data=data, files=files)
    
    return response.json()

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

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

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

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