const Command = require("../../base/Command"),
	Discord = require("discord.js"),
	lyricsParse = require("lyrics-finder");

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

	async run(message, args, data) {
		const [songName, artistName] = args.join(" ").split("|");
		if (!songName) return message.error("music/lyrics:MISSING_SONG_NAME");

		const embed = new Discord.MessageEmbed()
			.setAuthor(message.translate("music/lyrics:LYRICS_OF", {
				songName
			}))
			.setColor(data.config.embed.color)
			.setFooter({
				text: data.config.embed.footer
			});

		try {
			const songNameFormated = songName
				.toLowerCase()
				.replace(/\(lyrics|lyric|official music video|audio|official|official video|official video hd|clip officiel|clip|extended|hq\)/g, "")
				.split(" ").join("%20");

			let lyrics = await lyricsParse(songNameFormated, artistName) || "Не найдено!";

			if (lyrics.length > 2040) {
				lyrics = lyrics.substr(0, 2000) + message.translate("music/lyrics:AND_MORE") + "\n[" + message.translate("music/lyrics:CLICK_HERE") + "]" + `(https://www.musixmatch.com/search/${songName.replace(" ", "+")})`;
			} else if (!lyrics.length) {
				return message.error("music/lyrics:NO_LYRICS_FOUND", {
					songName
				});
			}

			embed.setDescription(lyrics);
			message.channel.send({
				embeds: [embed]
			});

		} catch (e) {
			console.log(e);
			message.error("music/lyrics:NO_LYRICS_FOUND", {
				songName
			});
		}
	}
}

module.exports = Lyrics;