Javascript 尝试将音频从youtube流式传输到语音频道时发生DiscordAPIError
我正在为我的discord机器人添加流式播放音乐的功能。实际上,我以前在这里使用过相同的代码,并且工作正常,但现在我遇到了一个错误 (节点:2334)未处理的PromisejectionWarning:DiscordAPIError:无法发送空消息 在RequestHandler.execute(/home/milk/Desktop/mr-impostor-2/node_modules/discord.js/src/rest/RequestHandler.js:154:13) 在处理和拒绝时(内部/process/task_queues.js:97:5) async RequestHandler.push(/home/milk/Desktop/mr-impostor-2/node_modules/discord.js/src/rest/RequestHandler.js:39:14) (节点:2334)未处理的PromisejectionWarning:未处理的承诺拒绝。此错误源于在没有catch块的异步函数中抛出,或者拒绝未使用.catch()处理的承诺。要在未处理的承诺拒绝时终止节点进程,请使用CLI标志Javascript 尝试将音频从youtube流式传输到语音频道时发生DiscordAPIError,javascript,node.js,audio,discord,discord.js,Javascript,Node.js,Audio,Discord,Discord.js,我正在为我的discord机器人添加流式播放音乐的功能。实际上,我以前在这里使用过相同的代码,并且工作正常,但现在我遇到了一个错误 (节点:2334)未处理的PromisejectionWarning:DiscordAPIError:无法发送空消息 在RequestHandler.execute(/home/milk/Desktop/mr-impostor-2/node_modules/discord.js/src/rest/RequestHandler.js:154:13) 在处理和拒绝时(内
--unhandled rejections=strict
(请参阅)。(拒绝id:1)
(节点:2334)[DEP0018]弃用警告:未处理的承诺拒绝已弃用。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程
下面是故障代码
async execute(message, serverQueue, arg){
function play(guild, song, serverQueue){
if(!song){
serverQueue.voiceChannel.leave();
queue.delete(guild.id);
return
}
const dispatcher = serverQueue.connection
.play(ytdl(song.url))
.on("finish", () =>{
serverQueue.songs.shift();
play(guild, serverQueue.songs[0]);
})
.on("error", error => console.log(error))
dispatcher.setVolumeLogarithmic(serverQueue.volume/5);
serverQueue.textChannel.send(`Started playing: **${song.title}**`);
}
var voiceChannel = message.member.voice.channel;
if(!voiceChannel){
return message.channel.send("You must be in a voice channel to use this command.");
}
const songInfo = await(ytdl.getInfo(arg));
const song = {
title: songInfo.videoDetails.title,
url: songInfo.videoDetails.video_url,
};
if(!serverQueue){
const queueConstruct = {
textChannel: message.channel,
voiceChannel: voiceChannel,
connection: null,
songs: [],
volume: 5,
playing: true,
}
global.queue.set(message.guild.id, queueConstruct);
queueConstruct.songs.push(song);
try{
var connection = await voiceChannel.join();
queueConstruct.connection = connection;
play(message.guild, queueConstruct.songs[0], queueConstruct);
}catch(e){
global.queue.delete(message.guild.id);
return message.channel.send(e);
}
}else{
serverQueue.songs.push(song);
return message.channel.send(`${song.title} has been added to the queue!`);
}
}
如果有必要的话,我正在Linux的ParrotOS上编码。我已验证是否安装了ffmpeg,是否安装了ytdl。错误引用是哪一行?