gpt4 book ai didi

javascript - Discord.js();如何发送文件(总是发送0字节文件?)

转载 作者:太空宇宙 更新时间:2023-11-04 01:57:16 26 4
gpt4 key购买 nike

我在使用 ytdl 下载文件后发送文件时遇到问题。我注意到这很奇怪,只要我手动命名它而不是标题,它就会成功地将文件发送到服务器...否则它只会将 0 字节文件发送到我的服务器。我尝试在我的标题方案上运行各种字符串方法,认为这可能是错误的,但这不起作用。我有预感,这可能与以下因素有关: https://github.com/hydrabolt/discord.js/issues/1907

但是我不知道我一无所知。任何帮助将不胜感激。以下是我的来源。我在发送文件时遇到问题的功能是命令 === 'ytm'

const Discord = require('discord.js');  //need discord.js library of course.
const config = require("./config.json"); //load up the token and prefix from our object configuration file.
const bot = new Discord.Client(); //establishing the bot as the client. "bot" means "client" when looking at the documentation!


bot.on('ready', () => {
console.log('I am ready!');
});

bot.on('message', message => {

if(message.author.bot) return; //prevents the bot from reacting to itself.
if(message.content.indexOf(config.prefix) !== 0) return; //reads out the first character of the message, and if its not our prefix we don't do break away

const args = message.content.slice(config.prefix.length).trim().split(/ +/g); //setting up to split things into arguments for handling commands, and usage of the prefix
const command = args.shift().toLowerCase();

if (command === 'ping') {
message.channel.send('pong');
//console.log(args);
//console.log(command);
}


if (command === 'ytm') {
const fs = require('fs');
const ytdl = require('ytdl-core');
url = args[0];
//console.log(ytdl.getURLVideoID(url));
//tried to actually work with the "title" information outside of the callback. apparently impossible?
ytdl.getInfo(url,function(err, info){
var title = info['title'];
var length = title.length;
title = title.substring(0, (length / 3));
title = title.trim();
title = './' + title + '.mp3'
console.log(title);
//console.log(info['size']);
ytdl(url, {filter:'audioonly', format:'mp3'}).pipe(fs.createWriteStream(title.toString()));
message.channel.send("Here's your mp3, boi.", {files:[(title)]});
//message.channel.sendFile(('./' + title), title, 'Heres your mp3, boi,'); //deprecated?
})

}





});

bot.login(config.token);

最佳答案

问题是您尝试将 title 变量作为文件发送,您已通过执行 title = './' + title + '.mp3' 显式将其设置为字符串。您的问题是您尝试发送视频而不是视频文件。 ytdl-core 是一个明确用于流式传输视频而不是下载视频的模块。要获取和发送 MP3 文件,您必须使用 youtube-dl相反(ytdl-core 是基于什么)。当文件下载完成时,这将发出一个事件,然后您可以通过 Discord.js 发送该事件。

关于javascript - Discord.js();如何发送文件(总是发送0字节文件?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47424406/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com