Я вижу, что вопросы, подобные этому, были заданы, и после следования их решениям я все равно остаюсь таким же, как и начал. Ниже я перечислил мой код, ссылку для тестирования его с помощью созданного мной примера бота и модули, которые вам понадобятся для его тестирования с использованием автономного экземпляра.
Моя проблема в том, что при подключении к указанному голосовому каналу бот сразу же уходит без каких-либо признаков ошибок или исключений. Я не уверен, что это проблема с моим кодом или с одной из библиотек, которые я использую. Единственный вывод на консоль, который я получаю, выглядит следующим образом:
Bot Ready For Use
joined channel
left channel
Спасибо!
Мой код
var voiceChannel = message.member.voiceChannel;
if (!message.member.voiceChannel) return message.channel.send(`You do realize you have to be in a voice channel to do that, right ${message.author.username}?`)
if (!message.member.voiceConnection) voiceChannel.join().then(async connection => {
let streamURL = args.slice(1).join(" ")
let streamTitle = "";
let streamThumb = "";
let streamAuth = "";
let streamAuthThumb = "";
if (streamURL.includes("https://www.youtube.com") || streamURL.includes("https://youtu.be/") && !streamURL.includes(' ')) {
let results = await youtube.getVideo(streamURL)
let {
body
} = await snekfetch.get(`https://www.googleapis.com/youtube/v3/channels?part=snippet&id=${results.channel.id}&fields=items%2Fsnippet%2Fthumbnails&key=${ytapikey}`).query({
limit: 800
})
streamTitle = results.title
streamThumb = results.thumbnails.medium.url
streamAuth = results.channel.title
streamAuthThumb = body.items[0].snippet.thumbnails.medium.url
} else if (!streamURL.includes("https://www.youtube.com") || !streamURL.includes("https://youtu.be/")) {
let results = await youtube.searchVideos(streamURL)
let {
body
} = await snekfetch.get(`https://www.googleapis.com/youtube/v3/channels?part=snippet&id=${results[0].channel.id}&fields=items%2Fsnippet%2Fthumbnails&key=${ytapikey}`).query({
limit: 800
})
streamURL = results[0].url
streamTitle = results[0].title
streamThumb = results[0].thumbnails.medium.url
streamAuth = results[0].channel.title
streamAuthThumb = body.items[0].snippet.thumbnails.medium.url
} else {
return message.reply("I can only play videos from YouTube (#NotSponsored).")
}
console.log("joined channel");
const stream = ytdl('https://www.youtube.com/watch?v=gOMhN-hfMtY', {
filter: 'audioonly'
});
const dispatcher = connection.playStream(stream, {
seek: 0,
volume: 1
});
dispatcher.on("end", end => {
console.log("left channel");
voiceChannel.leave();
});
let musicEmbed = new Discord.RichEmbed()
.setAuthor(streamAuth, streamAuthThumb)
.setTitle(`Now Playing:`)
.addField(`${streamAuth}`, `${streamTitle}`)
.setImage(streamThumb)
.setColor(embedRed)
.setFooter(`${streamAuth} - ${streamTitle} (${streamURL}`)
message.channel.send(musicEmbed)
}).catch(console.error);
break
Список модулей
discord.js
simple-youtube-api
node-opus
ffmpeg
ffbinaries
ffmpeg-binaries
opusscript
snekfetch
node-fetch
ytdl-core
Нажмите здесь , чтобы использовать мой образец бота через repl.it .
Еще раз спасибо!