const { createAudioPlayer, getVoiceConnection, joinVoiceChannel, NoSubscriberBehavior } = require("@discordjs/voice"); module.exports = async function (video, message, voiceChannel, client, playlist = false) { let song = { id: video.id, title: video.title, url: `https://www.youtube.com/watch?v=${video.id}`, author: message.author } const serverQueue = client.queue.get(message.guild.id); if (!serverQueue) { const construct = { textChannel: message.channel, voiceChannel: voiceChannel, connection: null, audioPlayer: createAudioPlayer({ behaviors: { noSubscriber: NoSubscriberBehavior.Play, } }), songs: [], volume: client.global.db.guilds[message.guild.id].defaultVolume, playing: false, paused: false, looping: false, votes: 0, voters: [], votesNeeded: null }; construct.songs.push(song); client.queue.set(message.guild.id, construct); try { const connection = getVoiceConnection(voiceChannel.guild.id) ?? joinVoiceChannel({ channelId: voiceChannel.id, guildId: voiceChannel.guild.id, adapterCreator: voiceChannel.guild.voiceAdapterCreator }); construct.connection = connection; client.funcs.play(message.guild, construct.songs[0], client, message, 0, true); } catch (error) { client.queue.delete(message.guild.id); console.log("Error with connecting to voice channel: " + error); return message.channel.send(`:x: An error occured: ${error}`); } } else { serverQueue.songs.push(song); if (playlist) return undefined; return message.channel.send(`:white_check_mark: **${song.title}** has been added to the queue!`); } return undefined; }