const Command = require("../../base/Command"),
	DisTube = require("distube"),
	{ Permissions } = require("discord.js");

class PlayPlaylists extends Command {
	constructor(client) {
		super(client, {
			name: "playplaylist",
			dirname: __dirname,
			enabled: true,
			guildOnly: true,
			aliases: ["ppl"],
			memberPermissions: [],
			botPermissions: ["SEND_MESSAGES", "EMBED_LINKS"],
			nsfw: false,
			ownerOnly: false,
			cooldown: 3000
		});
	}

	async run(message, args, data) {
		const voice = message.member.voice.channel;
		const name = args.join(" ");
		let playlist;
		for (const pl of data.userData.playlists) {
			if (!pl.name === name) return message.error("music/removeplaylist:NOT_FOUND", {
				name
			});

			playlist = new DisTube.Playlist(pl);
		}

		if (!voice) return message.error("music/play:NO_VOICE_CHANNEL");

		// Check my permissions
		const perms = voice.permissionsFor(this.client.user);
		if (!perms.has(Permissions.FLAGS.CONNECT) || !perms.has(Permissions.FLAGS.SPEAK)) return message.error("music/play:VOICE_CHANNEL_CONNECT");

		try {
			this.client.player.play(message.member.voice.channel, playlist, {
				member: message.member,
				textChannel: message.channel,
				message
			});
		} catch (e) {
			message.error("music/play:ERR_OCCURRED", {
				error: e
			});
			console.error(e);
		}
	}
}

module.exports = PlayPlaylists;