YTDL核心错误:输入流:未找到视频id:l



我正在制作一个discord bot,我使用以下代码,同时安装了所有正确的npm内容并使ffmpeg正常工作。这个机器人今天早些时候工作,我把它搞砸了,所以我恢复到旧代码,现在它不工作了。

const Discord = require('discord.js');
const api = require("imageapi.js");
const client = new Discord.Client();
const YouTube = require('simple-youtube-api')
const ytdl = require('ytdl-core')
const prefix = '!';

client.once('ready', () => {
console.log("Online!");
client.user.setActivity('!help');
});
client.on('message', async message => {
if(message.author.bot) return
if(!message.content.startsWith(prefix)) return
const args = message.content.substring(prefix.length).split("")
if(message.content.startsWith(`${prefix}play`)) {
const voiceChannel = message.member.voice.channel
if(!voiceChannel) return message.channel.send("You need to be in a voice channel to play music")
const permissions = voiceChannel.permissionsFor(message.client.user)
if(!permissions.has('CONNECT')) return message.channel.send(`I don't have permission to connect`)
if(!permissions.has('SPEAK')) return message.channel.send(`I don't have permission to speak`)

try {
var connection = await voiceChannel.join()
} catch(error){
console.log("error")
return message.channel.send(`There was a error when connection to the voice channel`)
}
const dispatcher = connection.play(ytdl(args[1]))
.on('finish', () => {
voiceChannel.leave()
})
.on('error', error => {
console.log(error)
})
dispatcher.setVolumeLogarithmic(5 / 5)
} else if (message.content.startsWith(`${prefix}stop`)) {
if(!message.member.voice.channel) return message.channel.send("You need to be in a voice channel to stop the music")
message.member.voice.channel.leave()
return undefined
}
})```

这意味着args[1]不是有效的youtube URL或ID。当您拆分消息时:

const args = message.content.substring(prefix.length).split("")

您按''而不是' '进行拆分。这就是按每个角色和每个空间进行拆分的区别。

const str = 'Hello World';
console.log(str.split(''));
console.log(str.split(' '));

所以,您可能将ytdl('w')称为www.youtube.com/...。即使你解决了这个问题,你也应该添加错误处理来确保:

  1. args[1]存在
  2. args[1]是有效的ID
if (!args[1]) return message.channel.send('...');
try {
const audio = ytdl(args[1]);
} catch (err) {
return message.channel.send('...');
}

最新更新