javascript 电报错误错误:400:错误请求:指定文件HTTP URL无效:URL中指定的端口号错误

quhf5bfb  于 2023-02-07  发布在  Java
关注(0)|答案(1)|浏览(377)

这个不可接受的错误发生在使用ytdl-core和telegraf javascript时,全部是因为这两行代码:

let video = ytdl('https://www.youtube.com/watch?v=ipAnwilMncI').pipe(fs.createWriteStream(`${ctx.from.id}.webm`));

ctx.replyWithVideo(video)

错误的全文:

C:\Program Files\nodejs\node.exe .\index.js
Uncaught TelegramError Error: 400: Bad Request: invalid file HTTP URL specified: Wrong port number specified in the URL
    at callApi (node_modules\telegraf\lib\core\network\client.js:293:19)
    at processTicksAndRejections (internal/process/task_queues:95:5)
Process exited with code 1

Node.js
我试着不是作为视频而是作为文档发送,但没有帮助

l2osamch

l2osamch1#

问题似乎出在ctx.replyWithVideo method上,它需要一个文件URL作为参数,但您传递的是一个流对象。要解决这个错误,您需要先将视频文件保存到磁盘,然后将文件路径传递给ctx.replyWithVideo method
下面是一个例子:

let video = ytdl('https://www.youtube.com/watch?v=ipAnwilMncI');
let videoPath = `${ctx.from.id}.webm`;
video.pipe(fs.createWriteStream(videoPath));

video.on('end', function () {
  ctx.replyWithVideo({source: videoPath});
});

在此示例中,首先使用ytdl库下载视频,然后使用createWriteStream方法将视频保存到磁盘。然后使用on方法等待视频完全保存到磁盘,最后将文件路径传递给ctx.replyWithVideo方法。

相关问题