这个不可接受的错误发生在使用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
我试着不是作为视频而是作为文档发送,但没有帮助
1条答案
按热度按时间l2osamch1#
问题似乎出在
ctx.replyWithVideo method
上,它需要一个文件URL作为参数,但您传递的是一个流对象。要解决这个错误,您需要先将视频文件保存到磁盘,然后将文件路径传递给ctx.replyWithVideo method
。下面是一个例子:
在此示例中,首先使用
ytdl
库下载视频,然后使用createWriteStream
方法将视频保存到磁盘。然后使用on
方法等待视频完全保存到磁盘,最后将文件路径传递给ctx.replyWithVideo
方法。