naar-music-bot
Version:
Simple JavaScript Music Discord Bot Powerd By: NAAR Studio.
91 lines • 4.51 kB
JavaScript
const ytsr = require("youtube-sr")
const { MessageEmbed } = require("discord.js");
module.exports = {
name: "search",
aliases: ["find"],
cooldown: 20,
description: `Gives you the search results!.`,
run: async(client, message, args) => {
if (client.search_command == true) {
if (!message.guild) return;
const { channel } = message.member.voice;
const serverQueue = message.client.queue.get(message.guild.id);
message.react("✅").catch(err => {
throw new TypeError(err)
});
if (!args.length)
return message.channel.send(
new MessageEmbed()
.setTitle(`Please Type The Music Name`)
.setColor("RED")).catch(err => {
throw new TypeError(err)
});
if (message.channel.activeCollector)
return;
if (!message.member.voice.channel)
return message.channel.send(
new MessageEmbed()
.setTitle("sYou Have To Join a \`Voice Channel\` First!")
.setColor("RED")).catch(err => {
throw new TypeError(err)
});
if (serverQueue && channel !== message.guild.me.voice.channel)
return message.channel.send(
new MessageEmbed()
.setTitle(`Iam Only Work In \`${channel.name}\``)
.setColor("RED")).catch(err => {
throw new TypeError(err)
});
const search = args.join(" ");
let temEmbed = new MessageEmbed()
.setAuthor("🔄 Searching...")
.setColor("#f300e5")
let resultsEmbed = new MessageEmbed()
.setTitle("✅ Results for: ")
.setDescription(`\`${search}\``)
.setColor("#f300e5")
.setFooter("Response with your favorite number", client.user.displayAvatarURL())
try {
const results = await ytsr.search(search, { limit: 5 });
results.map((video, index) => resultsEmbed.addField(video.url, `${index + 1}. ${video.title}`));
const resultsMessage = await message.channel.send(temEmbed)
await resultsMessage.react("1️⃣");
await resultsMessage.react("2️⃣");
await resultsMessage.react("3️⃣");
await resultsMessage.react("4️⃣");
await resultsMessage.react("5️⃣");
await resultsMessage.edit(resultsEmbed)
message.channel.activeCollector = true;
let response;
await resultsMessage.awaitReactions((reaction, user) => user.id == message.author.id, { max: 1, time: 60000, errors: ['time'], }).then(collected => {
if (collected.first().emoji.name == "1️⃣") { return response = 1; }
if (collected.first().emoji.name == "2️⃣") { return response = 2; }
if (collected.first().emoji.name == "3️⃣") { return response = 3; }
if (collected.first().emoji.name == "4️⃣") { return response = 4; }
if (collected.first().emoji.name == "5️⃣") { return response = 5; } else {
response = "error";
}
});
if (response === "error") {
return resultsMessage.delete().catch(err => {
throw new TypeError(err)
});
}
const choice = resultsEmbed.fields[parseInt(response) - 1].name;
message.channel.activeCollector = false;
message.client.commands.get("play").execute(message, [choice]);
resultsMessage.delete().catch(err => {
throw new TypeError(err)
});
} catch (error) {
message.channel.activeCollector = false;
throw new TypeError(err)
}
} else if (client.help_command == false) {
message.channel.send(
new MessageEmbed()
.setTitle(`\`${module.exports.name}\` Has Been Disabled From The Music System`)
)
} else throw new TypeError(`❌ | "${module.exports.name}_command" value must be true or false`)
}
};