Telegram бот на PHP, который конвертирует MP3 из YouTube видео с использованием webhook.php

05.04.2024
Telegram бот на PHP, который конвертирует MP3 из YouTube видео с использованием webhook.php

Пример кода Telegram бота на PHP, который конвертирует MP3 из YouTube видео с использованием webhook.php:

<?php
// webhook.php

// Подключаем библиотеку для работы с Telegram Bot API
require_once 'vendor/autoload.php';
use Longman\TelegramBot\Request;
use Longman\TelegramBot\Telegram;

// Создаем экземпляр Telegram Bot
$bot = new Telegram(BOT_TOKEN, BOT_USERNAME);

// Установка webhook
$bot->setWebhook(WEBHOOK_URL);

// Получаем обновления
$update = $bot->handleGetUpdates();

// Проверяем, что это текстовое сообщение
if ($update->isMessage() && $update->getMessage()->hasText()) {
    $chatId = $update->getMessage()->getChat()->getId();
    $text = $update->getMessage()->getText();

    // Проверяем, что сообщение содержит ссылку на YouTube видео
    $pattern = '/^(https?:\/\/)?(www\.)?(youtube\.com|youtu\.be)\/(watch\?v=|embed\/|v|user\S+)\??v?=?([^&\s]+)?$/';
    if (preg_match($pattern, $text, $matches)) {
        $videoUrl = $matches[0];

        // Отправляем сообщение о начале конвертации
        $bot->sendMessage($chatId, 'Начинаю конвертацию видео в MP3...');

        // Конвертируем видео в MP3 с помощью youtube-dl
        $outputFile = 'audio.mp3';
        $cmd = "youtube-dl -x --audio-format mp3 --output '{$outputFile}' '{$videoUrl}'";
        exec($cmd, $output, $returnCode);

        if ($returnCode === 0) {
            // Отправляем MP3 файл в чат
            $bot->sendAudio($chatId, Request::encodeFile($outputFile));
            unlink($outputFile); // Удаляем временный файл
        } else {
            $errorMessage = implode("\n", $output);
            $bot->sendMessage($chatId, "Ошибка при конвертации: {$errorMessage}");
        }
    } else {
        $bot->sendMessage($chatId, 'Пожалуйста, отправьте ссылку на YouTube видео.');
    }
}

Этот код использует библиотеку php-telegram-bot для взаимодействия с Telegram Bot API и youtube-dl для конвертации YouTube видео в MP3.

Вам необходимо выполнить следующие шаги:

  1. Установить php-telegram-bot с помощью Composer: composer require longman/telegram-bot.
  2. Установить youtube-dl на сервере.
  3. Заменить BOT_TOKEN, BOT_USERNAME и WEBHOOK_URL на соответствующие значения для вашего бота и webhook URL.
  4. Загрузить этот файл webhook.php на сервер и установить webhook для вашего бота, указав URL на этот файл.

После этого, когда пользователь отправит ссылку на YouTube видео в чат с вашим ботом, бот автоматически сконвертирует видео в MP3 и отправит аудиофайл обратно в чат.

Обратите внимание, что для работы этого кода необходимо, чтобы на сервере была установлена утилита youtube-dl. Также убедитесь, что у пользователя, от имени которого выполняется PHP-скрипт, есть права на запись файлов в директорию, где будет сохранен.

======================================================

Способ №2

Вот пример PHP-кода для создания Telegram Bot, который конвертирует MP3 из YouTube видео с использованием webhook.php:

<?php
// Ваш токен Telegram Bot API
$token = 'YOUR_BOT_TOKEN';

// Функция для обработки сообщений от пользователей
function processMessage($message) {
    $chat_id = $message['chat']['id'];
    $text = $message['text'];

    // Проверяем, содержит ли сообщение ссылку на YouTube видео
    if (strpos($text, 'https://www.youtube.com/') !== false) {
        // Получаем ссылку на YouTube видео
        $youtube_url = $text;

        // Конвертируем YouTube видео в MP3
        $mp3_file = convertToMP3($youtube_url);

        // Отправляем MP3 файл пользователю
        sendAudioFile($chat_id, $mp3_file);
    } else {
        // Если сообщение не содержит ссылку на YouTube видео, отправляем сообщение с инструкциями
        $response = "Отправьте ссылку на YouTube видео, и я конвертирую его в MP3 для вас.";
        sendMessage($chat_id, $response);
    }
}

// Функция для конвертации YouTube видео в MP3
function convertToMP3($youtube_url) {
    // Здесь вы должны реализовать логику для конвертации YouTube видео в MP3
    // Это может включать в себя использование внешних инструментов или API
    // Например, вы можете использовать библиотеку youtube-dl для этого
    $mp3_file = 'output.mp3';
    return $mp3_file;
}

// Функция для отправки сообщения в Telegram
function sendMessage($chat_id, $text) {
    $url = "https://api.telegram.org/bot$token/sendMessage";
    $data = array('chat_id' => $chat_id, 'text' => $text);
    $options = array(
        'http' => array(
            'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
            'method'  => 'POST',
            'content' => http_build_query($data)
        )
    );
    $context  = stream_context_create($options);
    $result = file_get_contents($url, false, $context);
    return $result;
}

// Функция для отправки аудио файла в Telegram
function sendAudioFile($chat_id, $mp3_file) {
    $url = "https://api.telegram.org/bot$token/sendAudio";
    $data = array('chat_id' => $chat_id, 'audio' => new CURLFile($mp3_file));
    $options = array(
        'http' => array(
            'header'  => "Content-type: multipart/form-data\r\n",
            'method'  => 'POST',
            'content' => http_build_query($data)
        )
    );
    $context  = stream_context_create($options);
    $result = file_get_contents($url, false, $context);
    return $result;
}

// Обработка входящих сообщений через webhook.php
$update = json_decode(file_get_contents('php://input'), true);
if (isset($update['message'])) {
    processMessage($update['message']);
}

Этот код включает в себя следующие функции:

  1. processMessage($message): Эта функция обрабатывает входящие сообщения от пользователей. Она проверяет, содержит ли сообщение ссылку на YouTube видео, и если да, вызывает функцию convertToMP3() для


Useful information for enthusiasts:

Contact me via Telegram: @ExploitDarlenePRO