UNPKG

xopbot

Version:

XOPBOT Is A Multipurpose Bot With Over 200+ Commands That Make You Love The Bot!

243 lines 26.4 kB
const lineReplyNoMention = require('discord-reply'); const color = process.env.Color; const errorChannel = process.env.errorChannel; const mongodburl = process.env.X_MongodbURL; module.exports = { name: 'play', permissions: ["CONNECT", "SPEAK"], clientpermissions: ["SEND_MESSAGES", "EMBED_LINKS", "CONNECT", "SPEAK"], aliases: ['skip', 'stop', 'pause', 'unpause', 'loop', 'leave', 'join', 'jump', 'queue', 'volume'], cooldown: 5, description: 'Advanced music bot', async execute(client, message, cmd, args, Discord) { const queue = message.client.distube.getQueue(message); if (cmd === 'play') { if (!message.member.voice.channel) { const embednovc1 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`Error 404`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**You Need To Be In A Voice Channel To Execute This Command!**') return message.lineReplyNoMention({ embed: embednovc1 }); } try { if (!args[0]) { const nopr = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**\`(prefix)play <song>\`**`) return message.lineReplyNoMention({ embed: nopr }) } message.client.distube.play(message, args.join(' ')) } catch (err) { const errorlogs = client.channels.cache.get(errorChannel); message.lineReplyNoMention({ content: "**Looks Like An Error Has Occured!**" }); errorlogs.send({ content: `**Error On Play Command!\n\nError:\n\n${err}**` }) } } else if (cmd === 'stop') { if (!message.member.voice.channel) { const embednovc3 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`Error 404`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**You Need To Be In A Voice Channel To Execute This Command!**') return message.lineReplyNoMention({ embed: embednovc3 }); } if (!queue) { const embednovc2 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`Error 404`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**There Are No Songs In Queue! 🎶**') return message.lineReplyNoMention({ embed: embednovc2 }); } try { const stopvote = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**This Will Stop All Music From Playing. Continue?**`).setFooter('Please Reply With Yes Or No!') message.lineReplyNoMention({ embed: stopvote }) const filter = _message => message.author.id === _message.author.id && ['y', 'n', 'yes', 'no'].includes(_message.content.toLowerCase()); const options = { max: 1, time: 30000, errors: ['time'] }; const proceed = await message.channel.awaitMessages(filter, options).then(collected => ['y', 'yes'].includes(collected.first().content.toLowerCase()) ? true : false).catch(() => false); if (!proceed) { const nostopcmdplz = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**You Cancelled The Stop Command Successfully!**`) return message.lineReplyNoMention({ embed: nostopcmdplz }) }; message.client.distube.stop(message) const stopembed = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**XOPBOT \`Stopped\` All Music From Playing! 😭**') return message.lineReplyNoMention({ embed: stopembed }); } catch (err) { const errorlogs = client.channels.cache.get(errorChannel); message.lineReplyNoMention({ content: "**Looks Like An Error Has Occured!**" }); errorlogs.send({ content: `**Error On Stop Command!\n\nError:\n\n${err}**` }) } } else if (cmd === 'skip') { if (!message.member.voice.channel) { const embednovc4 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`Error 404`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**You Need To Be In A Voice Channel To Execute This Command!**') return message.lineReplyNoMention({ embed: embednovc4 }); } if (!queue) { const embednovc33 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`Error 404`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**There Are No Songs In Queue! 🎶**') return message.lineReplyNoMention({ embed: embednovc33 }); } try { const skipvote = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**This Will Skip To The Next Song. Continue?**`).setFooter('Please Reply With Yes Or No!') message.lineReplyNoMention({ embed: skipvote }) const filter1 = _message => message.author.id === _message.author.id && ['y', 'n', 'yes', 'no'].includes(_message.content.toLowerCase()); const options1 = { max: 1, time: 30000, errors: ['time'] }; const proceed1 = await message.channel.awaitMessages(filter1, options1).then(collected => ['y', 'yes'].includes(collected.first().content.toLowerCase()) ? true : false).catch(() => false); if (!proceed1) { const noskipcmdplz = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**You Cancelled The Skip Command Successfully!**`) return message.lineReplyNoMention({ embed: noskipcmdplz }) }; message.client.distube.skip(message) } catch (err) { const errorlogs = client.channels.cache.get(errorChannel); message.lineReplyNoMention({ content: "**Looks Like An Error Has Occured!**" }); errorlogs.send({ content: `**Error On Skip Command!\n\nError:\n\n${err}**` }) } } else if (cmd === 'pause') { if (!message.member.voice.channel) { const embednovc5 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`Error 404`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**You Need To Be In A Voice Channel To Execute This Command!**') return message.lineReplyNoMention({ embed: embednovc5 }); } if (!queue) { const embednovc44 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`Error 404`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**There Are No Songs In Queue! 🎶**') return message.lineReplyNoMention({ embed: embednovc44 }); } if (queue.pause) { message.client.distube.resume(message) const ressong1 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**XOPBOT \`Resumed\` The Music For You! ▶**`) return message.lineReplyNoMention({ embed: ressong1 }); } try { const pausevote = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**This Will Pause The Song From Playing. Continue?**`).setFooter('Please Reply With Yes Or No!') message.lineReplyNoMention({ embed: pausevote }) const filter2 = _message => message.author.id === _message.author.id && ['y', 'n', 'yes', 'no'].includes(_message.content.toLowerCase()); const options2 = { max: 1, time: 30000, errors: ['time'] }; const proceed2 = await message.channel.awaitMessages(filter2, options2).then(collected => ['y', 'yes'].includes(collected.first().content.toLowerCase()) ? true : false).catch(() => false); if (!proceed2) { const nopausecmdplz = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**You Cancelled The Pause Command Successfully!**`) return message.lineReplyNoMention({ embed: nopausecmdplz }) }; message.client.distube.pause(message) const embed = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**XOPBOT \`Paused\` The Music For You! ⏸**`) message.lineReplyNoMention({ embed: embed }); } catch (err) { const errorlogs = client.channels.cache.get(errorChannel); message.lineReplyNoMention({ content: "**Looks Like An Error Has Occured!**" }); errorlogs.send({ content: `**Error On Pause Command!\n\nError:\n\n${err}**` }) } } else if (cmd === 'unpause') { if (!message.member.voice.channel) { const embednovc6 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`Error 404`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**You Need To Be In A Voice Channel To Execute This Command!**') return message.lineReplyNoMention({ embed: embednovc6 }); } if (!queue) { const embednovc55 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`Error 404`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**There Are No Songs In Queue! 🎶**') return message.lineReplyNoMention({ embed: embednovc55 }); } try { const unpausevote = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**This Will Resume The Music To Play. Continue?**`).setFooter('Please Reply With Yes Or No!') message.lineReplyNoMention({ embed: unpausevote }) const filter3 = _message => message.author.id === _message.author.id && ['y', 'n', 'yes', 'no'].includes(_message.content.toLowerCase()); const options3 = { max: 1, time: 30000, errors: ['time'] }; const proceed3 = await message.channel.awaitMessages(filter3, options3).then(collected => ['y', 'yes'].includes(collected.first().content.toLowerCase()) ? true : false).catch(() => false); if (!proceed3) { const nounpausecmdplz = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**You Cancelled The Unpause Command Successfully!**`) return message.lineReplyNoMention({ embed: nounpausecmdplz }) }; message.client.distube.resume(message) const ressong2 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**XOPBOT \`Resumed\` The Music For You! ▶**`) return message.lineReplyNoMention({ embed: ressong2 }); } catch (err) { const errorlogs = client.channels.cache.get(errorChannel); message.lineReplyNoMention({ content: "**Looks Like An Error Has Occured!**" }); errorlogs.send({ content: `**Error On Unpause Command!\n\nError:\n\n${err}**` }) } } else if (cmd === 'loop') { if (!message.member.voice.channel) { const embednovc7 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`Error 404`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**You Need To Be In A Voice Channel To Execute This Command!**') return message.lineReplyNoMention({ embed: embednovc7 }); } if (!queue) { const embednovc66 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`Error 404`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**There Are No Songs In Queue! 🎶**') return message.lineReplyNoMention({ embed: embednovc66 }); } try { if (!args[0]) { const nopr2 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**\`(prefix)loop <(Repeat queue)(Repeat song)(Off)>\`**`) return message.lineReplyNoMention({ embed: nopr2 }) } const loopvote = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**This Will Loop The (Song)(Queue) To That Mode. Continue?**`).setFooter('Please Reply With Yes Or No!') message.lineReplyNoMention({ embed: loopvote }) const filter4 = _message => message.author.id === _message.author.id && ['y', 'n', 'yes', 'no'].includes(_message.content.toLowerCase()); const options4 = { max: 1, time: 30000, errors: ['time'] }; const proceed4 = await message.channel.awaitMessages(filter4, options4).then(collected => ['y', 'yes'].includes(collected.first().content.toLowerCase()) ? true : false).catch(() => false); if (!proceed4) { const noloopcmdplz = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**You Cancelled The Loop Command Successfully!**`) return message.lineReplyNoMention({ embed: noloopcmdplz }) }; const mode = message.client.distube.setRepeatMode(message, parseInt(args[0])); mode = mode ? mode == 2 ? "Repeat queue" : "Repeat song" : "Off"; const loopembed = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**XOPBOT Set Loop Mode To \`${mode}\` For You! 👍**`) return message.lineReplyNoMention({ embed: loopembed }) } catch (err) { const errorlogs = client.channels.cache.get(errorChannel); errorlogs.send({ content: `**Error On Loop Command!\n\nError:\n\n${err}**` }) } } else if (cmd === 'leave') { if (!message.member.voice.channel) { const embednovc1 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`Error 404`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**You Need To Be In A Voice Channel To Execute This Command!**') return message.lineReplyNoMention({ embed: embednovc1 }); } try { const leavevote = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**This Will Make XOPBOT Leave The Voice Channel. Continue?**`).setFooter('Please Reply With Yes Or No!') message.lineReplyNoMention({ embed: leavevote }) const filter5 = _message => message.author.id === _message.author.id && ['y', 'n', 'yes', 'no'].includes(_message.content.toLowerCase()); const options5 = { max: 1, time: 30000, errors: ['time'] }; const proceed5 = await message.channel.awaitMessages(filter5, options5).then(collected => ['y', 'yes'].includes(collected.first().content.toLowerCase()) ? true : false).catch(() => false); if (!proceed5) { const noleavecmdplz = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**You Cancelled The Leave Command Successfully!**`) return message.lineReplyNoMention({ embed: noleavecmdplz }) }; message.member.voice.channel.leave(); const leavevcembed = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**XOPBOT \`Left\` The Voice Channel For You! 😢**') return message.lineReplyNoMention({ embed: leavevcembed }) } catch (err) { const errorlogs = client.channels.cache.get(errorChannel); message.lineReplyNoMention({ content: "**Looks Like An Error Has Occured!**" }); errorlogs.send({ content: `**Error On Leave Command!\n\nError:\n\n${err}**` }) } } else if (cmd === 'volume') { if (!message.member.voice.channel) { const embednovc1 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`Error 404`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**You Need To Be In A Voice Channel To Execute This Command!**') return message.lineReplyNoMention({ embed: embednovc1 }); } if (!queue) { const embednovc77 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`Error 404`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**There Are No Songs In Queue! 🎶**') return message.lineReplyNoMention({ embed: embednovc77 }); } try { if (!args[0]) { const nopr3 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**\`(prefix)volume <number>\`**`) return message.lineReplyNoMention({ embed: nopr3 }) } const volume = parseInt(args[0]) const maxvolume = 500 if (isNaN(volume)) { const fakvolume = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**\`${volume}\` Is Not A Number!**`) return message.lineReplyNoMention({ embed: fakvolume }) } if (volume > maxvolume) { const nomorevolthanm = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**The Max Volume Is \`500\`%, Higher Than That Will Destroy Devices!**`) return message.lineReplyNoMention({ embed: nomorevolthanm }) } message.client.distube.setVolume(message, volume); const volembed = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**XOPBOT Set Volume To \`${volume}\`% For You!😃**`) return message.lineReplyNoMention({ embed: volembed }) } catch (err) { const errorlogs = client.channels.cache.get(errorChannel); message.lineReplyNoMention({ content: "**Looks Like An Error Has Occured!**" }); errorlogs.send({ content: `**Error On Volume Command!\n\nError:\n\n${err}**` }) } } else if (cmd === 'jump') { if (!message.member.voice.channel) { const embednovc1 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`Error 404`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**You Need To Be In A Voice Channel To Execute This Command!**') return message.lineReplyNoMention({ embed: embednovc1 }); } if (!queue) { const embednovc88 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`Error 404`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**There Are No Songs In Queue! 🎶**') return message.lineReplyNoMention({ embed: embednovc88 }); } try { if (!args[0]) { const nopr4 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**\`(prefix)jump <queuenumber>\`**`) return message.lineReplyNoMention({ embed: nopr4 }) } const jumpnu = parseInt(args[0]) if (isNaN(jumpnu)) { const nonumsongal = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**\`${jumpnu}\` Is Not A Number!**`) return message.lineReplyNoMention({ embed: nonumsongal }) } message.client.distube.jump(message, jumpnu); const jumpembed = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**XOPBOT Jumped Queue To \`${jumpnu}\` For You!🤪**`) return message.lineReplyNoMention({ embed: jumpembed }) } catch (err) { const errorlogs = client.channels.cache.get(errorChannel); errorlogs.send({ content: `**Error On Jump Command!\n\nError:\n\n${err}**` }) } } else if (cmd === 'queue') { if (!message.member.voice.channel) { const embednovc1 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`Error 404`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**You Need To Be In A Voice Channel To Execute This Command!**') return message.lineReplyNoMention({ embed: embednovc1 }); } if (!queue) { const embednovc99 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`Error 404`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**There Are No Songs In Queue! 🎶**') return message.lineReplyNoMention({ embed: embednovc99 }); } try { const queueembed = new Discord.MessageEmbed().setTimestamp().setThumbnail('https://cdn.discordapp.com/attachments/824319314495537175/893023202169749504/XOPBOT_Playlist.png').setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**Current Queue: 🎶** \n' + queue.songs.map((song, id) => `**${id + 1}. [${song.name}](${song.url}) - \`[${song.formattedDuration}]\`**`).slice(0, 10).join("\n")) return message.lineReplyNoMention({ embed: queueembed }) } catch (err) { const errorlogs = client.channels.cache.get(errorChannel); message.lineReplyNoMention({ content: "**Looks Like An Error Has Occured!**" }); errorlogs.send({ content: `**Error On Queue Command!\n\nError:\n\n${err}**` }) } } else if (cmd === 'join') { if (!message.member.voice.channel) { const embednovc1 = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`Error 404`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**You Need To Be In A Voice Channel To Execute This Command!**') return message.lineReplyNoMention({ embed: embednovc1 }); } try { const joinvote = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**This Will Make XOPBOT Join The Voice Channel. Continue?**`).setFooter('Please Reply With Yes Or No!') message.lineReplyNoMention({ embed: joinvote }) const filter6 = _message => message.author.id === _message.author.id && ['y', 'n', 'yes', 'no'].includes(_message.content.toLowerCase()); const options6 = { max: 1, time: 30000, errors: ['time'] }; const proceed6 = await message.channel.awaitMessages(filter6, options6).then(collected => ['y', 'yes'].includes(collected.first().content.toLowerCase()) ? true : false).catch(() => false); if (!proceed6) { const nostopcmdplz = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription(`**You Cancelled The Join Command Successfully!**`) return message.lineReplyNoMention({ embed: nostopcmdplz }) }; message.member.voice.channel.join(); const leavevcembed = new Discord.MessageEmbed().setTimestamp().setColor(`${color}`).setAuthor(`${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })).setDescription('**XOPBOT \`Joined\` The Voice Channel For You! 😉**') return message.lineReplyNoMention({ embed: leavevcembed }) } catch (err) { const errorlogs = client.channels.cache.get(errorChannel); message.lineReplyNoMention({ content: "**Looks Like An Error Has Occured!**" }); errorlogs.send({ content: `**Error On Join Command!\n\nError:\n\n${err}**` }) } } } }