diff options
| author | Alee <alee14498@gmail.com> | 2018-07-04 16:48:56 -0400 |
|---|---|---|
| committer | Alee <alee14498@gmail.com> | 2018-07-04 16:48:56 -0400 |
| commit | 300080d295f75bd01e365cde25f5d5ca7cbd848a (patch) | |
| tree | b6af53e56eb4a2b8ac9d19a7fae7670491ffcaa3 /To be worked on/play.js | |
| parent | 98e6fa6be72bb95d7ed069cd082cdba862e215bb (diff) | |
| download | AleeBot-2.11.0.tar.gz AleeBot-2.11.0.tar.bz2 AleeBot-2.11.0.zip | |
Release 2.11.0v2.11.0
Diffstat (limited to 'To be worked on/play.js')
| -rw-r--r-- | To be worked on/play.js | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/To be worked on/play.js b/To be worked on/play.js new file mode 100644 index 0000000..ddf80db --- /dev/null +++ b/To be worked on/play.js @@ -0,0 +1,122 @@ +/**************************************** + * + * Play: Command for AleeBot + * Copyright (C) 2018 AleeCorp + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * *************************************/ + +module.exports.run = async (client, message, args, ops) => { + const ytdl = require('ytdl-core'); + + if (!message.member.voiceChannel) return message.reply('Please connect to a voice channel...'); + + if (!args[0]) return message.reply('Please input a url.'); + + let vaildate = await ytdl.validateURL(args[0]); + + if (!vaildate) return message.reply('Please input a **valid** url.'); + + let info = await ytdl.getInfo(args[0]); + + let data = ops.active.get(message.guild.id) || {}; + + if (!data.connection) data.connection = await message.member.voiceChannel.join(); + if (!data.queue) data.queue = []; + data.guildID = message.guild.id; + + data.queue.push({ + songTitle: info.title, + requester: message.author.tag, + url: args[0], + announceChannel: message.channel.id + }); + if (!data.dispatcher) play(client, ops, data); + else { + const { RichEmbed } = require('discord.js'); + const embed = new RichEmbed() + .setTitle('This music has been added to the queue!') + .setAuthor(info.title, client.user.avatarURL) + .setColor(0x00afff) + .setTimestamp() + .addField('Title', info.title) + .addField('Requested by:', message.author.tag) + .setFooter('AleeBot Music Player'); + + message.channel.send({embed}) + } + + ops.active.set(message.guild.id, data); + + }; + + async function play(client, ops, data) { + const ytdl = require('ytdl-core'); + const { RichEmbed } = require('discord.js'); + const embed = new RichEmbed() + .setTitle('Now playing!') + .setAuthor(data.queue[0].songTitle, client.user.avatarURL) + .setColor(0x00afff) + .setTimestamp() + .addField('Title', data.queue[0].songTitle) + .addField('Requested by:', data.queue[0].requester) + // .addField('Link', info.url) + // .addField('Duration', time) + .setFooter('AleeBot Music Player'); + + client.channels.get(data.queue[0].announceChannel).send({embed}) + + data.dispatcher = await data.connection.playStream(ytdl(data.queue[0].url, { filter: 'audioonly'})); + data.dispatcher.guildID = data.guildID; + + data.dispatcher.once('finish', function () { + finish(client, ops, this); + }); + + }; + + function finish(client, ops, dispatcher) { + + let fetched = ops.active.get(dispatcher.guildID); + + fetched.queue.shift(); + + if (fetched.queue.length > 0) { + + ops.active.set(dispatcher.guildID, fetched); + + play(client, ops, fetched); + + } else { + ops.active.delete(dispatcher.guildID); + + let vc = client.guild.get(dispatcher.guildID).me.voiceChannel; + + if (vc) vc.leave(); + + } + + } + + exports.conf = { + aliases: [], + guildOnly: false, + }; + exports.help = { + name: 'play', + description: 'Plays music.', + usage: 'play [url]', + category: '- Music Commands', + };
\ No newline at end of file |
