Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let channel = "0";
- let playing = false;
- let paused = false;
- let akira = `Akira | Music Module`
- let queue = {
- songs: []
- };
- let repeat = "off";
- const yt = require('ytdl-core');
- const fs = require('fs');
- const search = require('youtube-search');
- var opts = {
- maxResults: 1,
- key: 'AIzaSyBBX4J1CpAIQPRRFtWKwyqNyCG5j3RIXfs',
- }
- let dispatcher;
- const connectToVoiceChannel = function(message) {
- return new Promise((resolve, reject) => {
- const voiceChannel = message.member.voiceChannel;
- if (!voiceChannel || voiceChannel.type !== 'voice') return /*message.client.musicjoin[message.guild.id] = "false"*/;
- channel = voiceChannel;
- /*voiceChannel.join().then(connection => {
- resolve(connection);
- }).catch(err => reject(err));
- */
- });
- };
- const isValidWatchUrl = function(url) {
- const regexStr = /^(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'<> #]+)/gm
- if (!url.match(regexStr)) return false;
- else return true;
- }
- module.exports.run = (client, message, args, perms) => {
- if(message.author.id != "297008001351417856") return;
- const playSong = function(song) {
- try {
- let embed = new Discord.RichEmbed()
- .setTitle("Очередь завершена.")
- .setColor(`#ff9100`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- if(song === undefined) return message.channel.send(embed).then(() => {
- playing = false;
- channel.leave();
- channel = "0";
- })
- //message.channel.send(`Now playing **${song.title}**\nRequested by **${song.requester}**`);
- let imgUrl;
- //var regExp = /^.*(youtu\.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/;
- //var match = song.url.match(regExp);
- //if(match && match[2].length == 11) {
- // imgUrl = match[2];
- //}
- message.channel.send({embed:
- embed = new Discord.RichEmbed()
- .setTitle("Сейчас играет:")
- .setDescription(`**${song.title}**`)
- .addField("Запрошено:", song.requester)
- .setImage(`https://img.youtube.com/vi/${imgUrl}/maxresdefault.jpg`)
- .setColor(`#80ff00`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- });
- // dispatcher = message.guild.voiceConnection.play('http://www.sample-videos.com/audio/mp3/wave.mp3');
- dispatcher = message.guild.voiceConnection.play(yt(song.url, { filter: "audioonly" }), {passes: 3});
- dispatcher.on('end', () => {
- if (repeat === "playlist") {
- queue.songs.push(queue.songs[0]);
- }
- if (repeat !== "single") {
- queue.songs.shift();
- }
- playSong(queue.songs[0]);
- });
- dispatcher.on('error', (err) => {
- let embed = new Discord.RichEmbed()
- .setTitle("Произошла ошибка.")
- .setDescription(`Пожалуйста, сообщите ${client.users.get('450994494247010314')}, чтобы проверить консоль.`)
- .setColor(`RED`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- return message.channel.send(embed).then(() => {
- queue.songs.shift();
- playSong(queue.songs[0]);
- });
- });
- // message.guild.voiceConnection.play('/Antiproton.m4a');
- // message.guild.voiceConnection.play(yt('https://www.youtube.com/watch?v=ZR2CqwnS2KA', { filter: "audioonly" }))
- } catch (e) {
- console.error(e);
- return;
- }
- } // взломать через токен - просто.....
- if (args[0] === "join") {
- connectToVoiceChannel(message);
- } else if (args[0] === "play") {
- if (!paused) {
- if (!args[1]) {
- let embed = new Discord.RichEmbed()
- .setTitle("Использовать:")
- .setDescription("+music play <url>")
- .setColor(`RED`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- }
- let url = args[1];
- if (!isValidWatchUrl(url)) {
- if(!args[1]) {
- message.channel.send(`Вы не указали url!`)
- return;
- }
- search(args.join(" ").replace("play", ""), opts, (err, results) => {
- //console.log(results)
- if (err) {
- console.log(err.message)
- let embed = new Discord.RichEmbed()
- .setTitle("Что-то не так.")
- .setDescription("Пожалуйста, попробуйте еще раз.")
- .setColor(`RED`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- }
- //console.log(results);
- url = results[0].link;
- console.log(url);
- if (channel != message.member.voiceChannel) connectToVoiceChannel(message);
- let dispatcher;
- yt.getInfo(url, (err, info) => {
- if (err) {
- let embed = new Discord.RichEmbed()
- .setTitle("Что-то не так.")
- .setDescription("Пожалуйста, попробуйте еще раз.")
- .setColor(`RED`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- }
- queue.songs.push({url: url, title: results.title, requester: message.author.username});
- let embed = new Discord.RichEmbed()
- .setTitle(`Added **${results.title}** to the queue.`)
- .setColor(`#80ff00`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- if (!playing) {
- playing = true;
- playSong(queue.songs[0])
- }
- });
- });
- } else {
- if (channel != message.member.voiceChannel) connectToVoiceChannel(message);
- let dispatcher;
- if (playing) {
- yt.getInfo(url, (err, info) => {
- //console.log(info)
- if (err) return message.channel.send("Неверная youtube ссылка.");
- queue.songs.push({url: url, title: info.title, requester: message.author.username});
- message.channel.send(`**${info.title}** добалено в очередь.`);
- })
- } else {
- playing = true;
- yt.getBasicInfo(url, (err, info) => {
- //console.log(info)
- if (err) return message.channel.send("Неверная youtube ссылка.");
- queue.songs.push({url: url, title: info.title, requester: message.author.username});
- message.channel.send(`**${info.title}** добалено в очередь.`);
- playSong(queue.songs[0]);
- })
- }
- }
- } else {
- let embed = new Discord.RichEmbed()
- .setTitle("Музыка возобновлена.")
- .setColor(`#80ff00`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- dispatcher.resume();
- paused = false;
- }
- } else if (args[0] === "stop" || args[0] === "leave") {
- if (playing) {
- if (perms < 2) {
- let embed = new Discord.RichEmbed()
- .setTitle("У вас нет разрешения останавливать музыку.")
- .setColor(`RED`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- }
- queue = {
- songs: []
- }
- dispatcher.end();
- playing = false;
- paused = false;
- if (channel != "0") channel.leave();
- channel = "0";
- } else {
- let embed = new Discord.RichEmbed()
- .setTitle("В данный момент нет музыки.")
- .setColor(`RED`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- }
- } else if (args[0] === "queue") {
- if (queue.songs.length === 0) {
- let embed = new Discord.RichEmbed()
- .setTitle("В данный момент очередь пуста.")
- .setColor(`#ffd500`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- return
- }
- let tosend = [];
- queue.songs.forEach((song, i) => {
- tosend.push(`${i+1}. ${song.title} - Запрошенно: ${song.requester}`);
- });
- message.channel.send(`__**${message.guild.name}'s queue:**__ В настоящее время **${tosend.length}** песен в очереди ${(tosend.length > 15 ? '[*Показаны только 15*]' : '')}\n\`\`\`${tosend.slice(0,15).join('\n')}\`\`\``);
- } else if (args[0] === "pause") {
- if (!paused && playing) {
- let embed = new Discord.RichEmbed()
- .setTitle("Музыка остановлена.")
- .setColor(`#80ff00`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- dispatcher.pause();
- paused = true;
- } else if (!playing) {
- let embed = new Discord.RichEmbed()
- .setTitle("В данный момент нет музыки.")
- .setColor(`RED`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- } else if (paused) {
- let embed = new Discord.RichEmbed()
- .setTitle("Музыка уже приостановлена.")
- .setColor(`RED`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- }
- } else if (args[0] === "resume") {
- if (paused && playing) {
- let embed = new Discord.RichEmbed()
- .setTitle("Музыка возобновлена.")
- .setColor(`#80ff00`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- dispatcher.resume();
- paused = false;
- } else if (!playing) {
- let embed = new Discord.RichEmbed()
- .setTitle("В данный момент нет музыки.")
- .setColor(`RED`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- } else if (!paused) {
- let embed = new Discord.RichEmbed()
- .setTitle("Музыка уже играет.")
- .setColor(`#80ff00`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- }
- } else if (args[0] === "skip") {
- if (playing) {
- if (perms < 2 && message.author.username != queue.songs[0].requester) {
- let embed = new Discord.RichEmbed()
- .setTitle("У вас нет разрешения пропустить эту песню.")
- .setColor(`RED`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- return;
- }
- let embed = new Discord.RichEmbed()
- .setTitle(`**${queue.songs[0].title}** пропущена.`)
- .setColor(`#80ff00`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- dispatcher.end();
- } else {
- let embed = new Discord.RichEmbed()
- .setTitle("В данный момент нет музыки.")
- .setColor(`RED`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- }
- } else if (args[0] === "restart") {
- if (playing) {
- queue.songs.unshift(queue.songs[0]);
- dispatcher.end();
- let embed = new Discord.RichEmbed()
- .setTitle(`**${queue.songs[0].title}** перезапущена.`)
- .setColor(`#80ff00`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- } else {
- let embed = new Discord.RichEmbed()
- .setTitle("В данный момент нет музыки.")
- .setColor(`RED`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- }
- } else if (args[0] === "volume") {
- if (!playing) {
- let embed = new Discord.RichEmbed()
- .setTitle("В данный момент нет музыки.")
- .setColor(`RED`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- return;
- }
- if (!args[1]) return message.channel.send(`Громкость: ${Math.round(dispatcher.volume * 50)}%`);
- if (isNaN(parseInt(args[1]))) {
- let embed = new Discord.RichEmbed()
- .setTitle("Использовать:")
- .setDescription("+music volume <volume>")
- .setColor(`RED`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- return;
- }
- let volume = parseInt(args[1]);
- if (volume > 100 || volume < 0) {
- let embed = new Discord.RichEmbed()
- .setTitle("Громкость должена быть от 1 до 100.")
- .setColor(`RED`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- return;
- }
- dispatcher.setVolume(volume / 50);
- message.channel.send(`Громкость: ${Math.round(dispatcher.volume * 50)}%`);
- } else if (args[0] === "repeat") {
- if (!args[1]) {
- let embed = new Discord.RichEmbed()
- .setTitle(`Повтор песни в настоящее время установлен на **${repeat}**.`)
- .setColor(`#80ff00`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- return;
- }
- if (perms < 2) {
- let embed = new Discord.RichEmbed()
- .setTitle("У вас нет прав на изменение настроек повтора.")
- .setColor(`RED`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- return;
- }
- if (args[1] === "off") {
- repeat = "off";
- let embed = new Discord.RichEmbed()
- .setTitle("Повтор песни отключен.")
- .setColor(`#80ff00`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- } else if (args[1] === "single" || args[1] === "on") {
- repeat = "single";
- let embed = new Discord.RichEmbed()
- .setTitle("Повтор песни был установлен на один раз.")
- .setColor(`#80ff00`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- } else if (args[1] === "playlist") {
- repeat = "playlist";
- let embed = new Discord.RichEmbed()
- .setTitle(".")
- .setColor(`#80ff00`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- } else {
- let embed = new Discord.RichEmbed()
- .setTitle("Редко используемые.")
- .setDescription("Доступные настройки повтора: off, single, playlist")
- .setColor(`RED`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- }
- } else {
- let embed = new Discord.RichEmbed()
- .setAuthor("Использовать:")
- .setDescription("\n>music play <url/search>\n>music queue\n>music stop\n>music skip\n>music restart\n>music repeat <mode>\n>music pause\n>music resume\n>music play\n>music leave")
- .setColor(`RED`)
- .setTimestamp()
- .setFooter(akira, client.user.avatarURL)
- message.channel.send(embed);
- }
- };
- module.exports.help = {
- name: 'music'
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement