diff options
| author | Andrew Lee <andrew@alee14.me> | 2025-02-25 23:15:04 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-25 23:15:04 -0500 |
| commit | 44f7f14736aaf77858ee71c80abeb3c13343d3c2 (patch) | |
| tree | 47dc895e50fa95b52a894bf0806e1a6c1edc8818 /To be worked on/play.js | |
| parent | 9519602e73a53931be10438dcd990becea7989d9 (diff) | |
| parent | 5777f96394444dab18a81d6f085ac81df3e62008 (diff) | |
| download | AleeBot-44f7f14736aaf77858ee71c80abeb3c13343d3c2.tar.gz AleeBot-44f7f14736aaf77858ee71c80abeb3c13343d3c2.tar.bz2 AleeBot-44f7f14736aaf77858ee71c80abeb3c13343d3c2.zip | |
Merge pull request #36 from Alee14/beta
2.13 Release
Diffstat (limited to 'To be worked on/play.js')
| -rw-r--r-- | To be worked on/play.js | 203 |
1 files changed, 98 insertions, 105 deletions
diff --git a/To be worked on/play.js b/To be worked on/play.js index ddf80db..f14d3c5 100644 --- a/To be worked on/play.js +++ b/To be worked on/play.js @@ -1,7 +1,7 @@ -/**************************************** - * +/** ************************************** + * * Play: Command for AleeBot - * Copyright (C) 2018 AleeCorp + * Copyright (C) 2017-2021 Alee Productions * * 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 @@ -15,108 +15,101 @@ * * 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 + 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.'); + + const vaildate = await ytdl.validateURL(args[0]); + + if (!vaildate) return message.reply('Please input a **valid** url.'); + + const info = await ytdl.getInfo(args[0]); + + const 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 {MessageEmbed} = require('discord.js'); + const embed = new MessageEmbed() + .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 {MessageEmbed} = require('discord.js'); + const embed = new MessageEmbed() + .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) { + const 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); + + const 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', +}; |
