Ajout du Bot
This commit is contained in:
		
							
								
								
									
										18
									
								
								commands/Musique/join.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								commands/Musique/join.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
const { MESSAGES } = require("../../util/constants");
 | 
			
		||||
 | 
			
		||||
module.exports.run = async (client, message, args, settings) => {
 | 
			
		||||
    const { channel } = message.member.voice;
 | 
			
		||||
    
 | 
			
		||||
    const queueConstruct = {
 | 
			
		||||
        textChannel: message.channel,
 | 
			
		||||
        channel,
 | 
			
		||||
        connection: null,
 | 
			
		||||
        songs: [],
 | 
			
		||||
        loop: false,
 | 
			
		||||
        playing: true
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
    queueConstruct.connection = await channel.join();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
module.exports.help = MESSAGES.COMMANDS.MUSIQUE.JOIN;
 | 
			
		||||
							
								
								
									
										8
									
								
								commands/Musique/leave.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								commands/Musique/leave.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
const { MESSAGES } = require("../../util/constants");
 | 
			
		||||
 | 
			
		||||
module.exports.run = (client, message, args, settings) => {
 | 
			
		||||
    const queue = message.client.queue.get(message.guild.id);
 | 
			
		||||
    queue.connection.disconnect()
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
module.exports.help = MESSAGES.COMMANDS.MUSIQUE.LEAVE;
 | 
			
		||||
							
								
								
									
										26
									
								
								commands/Musique/loop.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								commands/Musique/loop.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
const { MESSAGES } = require("../../util/constants");
 | 
			
		||||
const { canModifyQueue } = require("../../util/LanBot");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
module.exports.run = (client, message, args, settings) => {
 | 
			
		||||
 | 
			
		||||
    if (!canModifyQueue(message.member)) return message.channel.send('Vous devez être dans un salon vocal pour utiliser cette commande !');
 | 
			
		||||
    const queue = message.client.queue.get(message.guild.id)
 | 
			
		||||
    if(!queue){ return message.channel.send({
 | 
			
		||||
        embed: {
 | 
			
		||||
            description: `Liste d'attente vide ! merci d'utiliser la commande \`${settings.prefix}play + URL / Nom de la musique\` !`,
 | 
			
		||||
            color: 'BLACK'
 | 
			
		||||
        }
 | 
			
		||||
    })
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // toggle from false to true and reverse
 | 
			
		||||
    queue.loop = !queue.loop;
 | 
			
		||||
    //queue.connection.dispatcher.loop()   
 | 
			
		||||
    return message.channel.send(`Le loop est maintenant ${queue.loop ? `**Actif**` : `**Inactif**`}`)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
module.exports.help = MESSAGES.COMMANDS.MUSIQUE.LOOP;
 | 
			
		||||
							
								
								
									
										30
									
								
								commands/Musique/lyrics.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								commands/Musique/lyrics.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
			
		||||
const { MessageEmbed } = require("discord.js");
 | 
			
		||||
const lyricsFinder = require("lyrics-finder");
 | 
			
		||||
const { MESSAGES } = require("../../util/constants");
 | 
			
		||||
 | 
			
		||||
module.exports.run = async (client, message, args, settings) => {
 | 
			
		||||
    const queue = message.client.queue.get(message.guild.id);
 | 
			
		||||
    if (!queue) return message.channel.send("Aucune musique lancé !").catch(console.error);
 | 
			
		||||
 | 
			
		||||
    let lyrics = null;
 | 
			
		||||
    const title = queue.songs[0].title;
 | 
			
		||||
 | 
			
		||||
    try {
 | 
			
		||||
      lyrics = await lyricsFinder(queue.songs[0].title, "");
 | 
			
		||||
      if (!lyrics) lyrics = `Pas de paroles trouvé pour ${queue.songs[0].title} ! `;
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
      lyrics = `Pas de paroles trouvé pour ${queue.songs[0].title} ! `;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let lyricsEmbed = new MessageEmbed()
 | 
			
		||||
      .setTitle(`Paroles pour ${queue.songs[0].title}`)
 | 
			
		||||
      .setDescription(lyrics)
 | 
			
		||||
      .setColor("GREEN")
 | 
			
		||||
      .setTimestamp();
 | 
			
		||||
 | 
			
		||||
    if (lyricsEmbed.description.length >= 2048)
 | 
			
		||||
      lyricsEmbed.description = `${lyricsEmbed.description.substr(0, 2045)}...`;
 | 
			
		||||
    return message.channel.send(lyricsEmbed).catch(console.error);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports.help = MESSAGES.COMMANDS.MUSIQUE.LYRICS;
 | 
			
		||||
							
								
								
									
										22
									
								
								commands/Musique/move.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								commands/Musique/move.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
const { MESSAGES } = require("../../util/constants");
 | 
			
		||||
const move = require("array-move");
 | 
			
		||||
const { canModifyQueue } = require("../../util/LanBot");
 | 
			
		||||
 | 
			
		||||
module.exports.run = (client, message, args, settings) => {
 | 
			
		||||
    const queue = message.client.queue.get(message.guild.id);
 | 
			
		||||
    if (!queue) return message.channel.send("Il n'y a pas de musique dans la file d'attente.").catch(console.error);
 | 
			
		||||
    if (!canModifyQueue(message.member)) return;
 | 
			
		||||
 | 
			
		||||
    let song = queue.songs[args[0] - 1];
 | 
			
		||||
 | 
			
		||||
    queue.songs = move(queue.songs, args[0] - 1, args[1] == 1 ? 1 : args[1] - 1);
 | 
			
		||||
    queue.textChannel.send(
 | 
			
		||||
      ("Déplacement effectué !", {
 | 
			
		||||
        author: message.author,
 | 
			
		||||
        title: song.title,
 | 
			
		||||
        index: args[1] == 1 ? 1 : args[1]
 | 
			
		||||
      })
 | 
			
		||||
    );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
module.exports.help = MESSAGES.COMMANDS.MUSIQUE.MOVE;
 | 
			
		||||
							
								
								
									
										52
									
								
								commands/Musique/nowplaying.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								commands/Musique/nowplaying.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,52 @@
 | 
			
		||||
const { MessageEmbed, MessageAttachment } = require("discord.js");
 | 
			
		||||
const musicGif = new MessageAttachment('./assets/img/Music.gif');
 | 
			
		||||
const { MESSAGES } = require("../../util/constants");
 | 
			
		||||
const createBar = require("string-progressbar");
 | 
			
		||||
 | 
			
		||||
module.exports.run = (client, message, args, settings) => {
 | 
			
		||||
    const channel = message.member.voice.channel;
 | 
			
		||||
    if (!channel) return message.channel.send('Tu dois te trouver dans un salon vocal pour utiliser cette commande');
 | 
			
		||||
    let queue = message.client.queue.get(message.guild.id)
 | 
			
		||||
    if(!queue) return message.channel.send({
 | 
			
		||||
        embed:{
 | 
			
		||||
            title: `Aucune musique n'est lancé actuellement donc merci d'utiliser la commande \`${settings.prefix}play + URL\`! `
 | 
			
		||||
        }
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    const song = queue.songs[0];
 | 
			
		||||
    const seek = (queue.connection.dispatcher.streamTime - queue.connection.dispatcher.pausedTime) / 1000;
 | 
			
		||||
    const left = song.duration - seek;
 | 
			
		||||
 | 
			
		||||
    let nowPlaying = new MessageEmbed()
 | 
			
		||||
      .setTitle("En lecture")
 | 
			
		||||
      .setDescription(`${song.title}\n${song.url}`)
 | 
			
		||||
      .setColor("#F8AA2A")
 | 
			
		||||
      .setAuthor(message.client.user.username)
 | 
			
		||||
      //.attachFiles(musicGif)
 | 
			
		||||
      //.setThumbnail('attachment://Music.gif')
 | 
			
		||||
      .setThumbnail('https://tenor.com/8P2l.gif');
 | 
			
		||||
      
 | 
			
		||||
 | 
			
		||||
      var time = new Date(left * 1000).toISOString().substr(11, 8);
 | 
			
		||||
 | 
			
		||||
    if (song.duration > 0) {
 | 
			
		||||
      nowPlaying.addField(
 | 
			
		||||
        "\u200b",
 | 
			
		||||
        new Date(seek * 1000).toISOString().substr(11, 8) +
 | 
			
		||||
          "[" +
 | 
			
		||||
          createBar(song.duration == 0 ? seek : song.duration, seek, 20)[0] +
 | 
			
		||||
          "]" +
 | 
			
		||||
          (song.duration == 0 ? " ◉ LIVE" : new Date(song.duration * 1000).toISOString().substr(11, 8)),
 | 
			
		||||
        false
 | 
			
		||||
      );
 | 
			
		||||
      nowPlaying.setFooter(
 | 
			
		||||
        (`Temps restant : ${time}`)
 | 
			
		||||
      );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return message.channel.send(nowPlaying);
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
module.exports.help = MESSAGES.COMMANDS.MUSIQUE.NOWPLAYING;
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										19
									
								
								commands/Musique/pause.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								commands/Musique/pause.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
const { MESSAGES } = require("../../util/constants");
 | 
			
		||||
const { canModifyQueue } = require("../../util/LanBot");
 | 
			
		||||
 | 
			
		||||
module.exports.run = (client, message, args, settings) => {
 | 
			
		||||
 | 
			
		||||
    if (!canModifyQueue(message.member))return message.channel.send('Vous devez être dans un salon vocal pour utiliser cette commande !');
 | 
			
		||||
    let queue = message.client.queue.get(message.guild.id)
 | 
			
		||||
    if(!queue) return message.channel.send({
 | 
			
		||||
        embed: {
 | 
			
		||||
            description: "Impossible de mettre en pause, car aucune musique n'est lancé !"
 | 
			
		||||
        }
 | 
			
		||||
    })
 | 
			
		||||
    if(queue.playing !== false)
 | 
			
		||||
    queue.connection.dispatcher.pause()
 | 
			
		||||
    message.react('⏸')
 | 
			
		||||
    message.channel.send('Musique mis en pause !')
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports.help = MESSAGES.COMMANDS.MUSIQUE.PAUSE;
 | 
			
		||||
							
								
								
									
										116
									
								
								commands/Musique/play.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								commands/Musique/play.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,116 @@
 | 
			
		||||
const { play } = require("../../Includes/play");
 | 
			
		||||
const ytdl = require("ytdl-core");
 | 
			
		||||
const YouTubeAPI = require("simple-youtube-api");
 | 
			
		||||
const { YOUTUBE_API_KEY, DEFAULT_VOLUME } = require("../../util/LanBot");
 | 
			
		||||
const youtube = new YouTubeAPI(YOUTUBE_API_KEY);
 | 
			
		||||
const { MessageEmbed } = require("discord.js");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const { MESSAGES } = require("../../util/constants");
 | 
			
		||||
 | 
			
		||||
module.exports.run = async (client, message, args, settings) => {
 | 
			
		||||
    const { channel } = message.member.voice;
 | 
			
		||||
 | 
			
		||||
    const serverQueue = message.client.queue.get(message.guild.id);
 | 
			
		||||
    if (!channel) return message.reply("Vous devez d'abord rejoindre un canal vocal!").catch(console.error);
 | 
			
		||||
    if (serverQueue && channel !== message.guild.me.voice.channel)
 | 
			
		||||
      return message
 | 
			
		||||
        .reply("Vous devez être dans le même canal que {user}", { user: message.client.user })
 | 
			
		||||
        .catch(console.error);
 | 
			
		||||
 | 
			
		||||
    if (!channel.permissionsFor(message.client.user).has("CONNECT")) return message.channel.send("Je n'ai pas la permission de rejoindre un salon vocal !")
 | 
			
		||||
    if (!channel.permissionsFor(message.client.user).has("SPEAK"))return message.channel.send("Je n'ai pas la permission Parler dans le salon vocal !")
 | 
			
		||||
  
 | 
			
		||||
    const search = args.join(" ");
 | 
			
		||||
    const videoPattern = /^(https?:\/\/)?(www\.)?(m\.)?(youtube\.com|youtu\.?be)\/.+$/gi;
 | 
			
		||||
    const playlistPattern = /^.*(list=)([^#\&\?]*).*/gi;
 | 
			
		||||
    const url = args[0];
 | 
			
		||||
    const urlValid = videoPattern.test(args[0]);
 | 
			
		||||
 | 
			
		||||
    // Start the playlist if playlist url was provided
 | 
			
		||||
    if (!videoPattern.test(args[0]) && playlistPattern.test(args[0])) {
 | 
			
		||||
      return message.client.commands.get("playlist").execute(message, args);
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    const queueConstruct = {
 | 
			
		||||
      textChannel: message.channel,
 | 
			
		||||
      channel,
 | 
			
		||||
      connection: null,
 | 
			
		||||
      songs: [],
 | 
			
		||||
      loop: false,
 | 
			
		||||
      volume: DEFAULT_VOLUME || 100,
 | 
			
		||||
      playing: true
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    let songInfo = null;
 | 
			
		||||
    let song = null;
 | 
			
		||||
 | 
			
		||||
    if (urlValid) {
 | 
			
		||||
      try {
 | 
			
		||||
        songInfo = await ytdl.getInfo(url);
 | 
			
		||||
        song = {
 | 
			
		||||
          title: songInfo.videoDetails.title,
 | 
			
		||||
          url: songInfo.videoDetails.video_url,
 | 
			
		||||
          duration: songInfo.videoDetails.lengthSeconds,
 | 
			
		||||
          views: songInfo.videoDetails.viewCount,
 | 
			
		||||
          thumbnail: songInfo.videoDetails.thumbnails[2]["url"]
 | 
			
		||||
        };
 | 
			
		||||
      } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
        return message.reply(error.message).catch(console.error);
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      try {
 | 
			
		||||
        const results = await youtube.searchVideos(search, 1, { part: "snippet" });
 | 
			
		||||
        songInfo = await ytdl.getInfo(results[0].url);
 | 
			
		||||
        song = {
 | 
			
		||||
          title: songInfo.videoDetails.title,
 | 
			
		||||
          url: songInfo.videoDetails.video_url,
 | 
			
		||||
          duration: songInfo.videoDetails.lengthSeconds,
 | 
			
		||||
          views: songInfo.videoDetails.viewCount,
 | 
			
		||||
          thumbnail: songInfo.videoDetails.thumbnails[2]["url"] 
 | 
			
		||||
        };
 | 
			
		||||
      } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
        return message.reply(error.message).catch(console.error);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    var date = new Date(0);
 | 
			
		||||
    date.setSeconds(song.duration); // specify value for SECONDS here
 | 
			
		||||
    var timeString = date.toISOString().substr(11, 8);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    if (serverQueue) {
 | 
			
		||||
      serverQueue.songs.push(song);
 | 
			
		||||
      let embed = new MessageEmbed()
 | 
			
		||||
      .setTitle('Ajouté à la liste de lecture!')
 | 
			
		||||
      .setColor('#00fff1')
 | 
			
		||||
      .addField('Nom', song.title, true)
 | 
			
		||||
      .setThumbnail(song.thumbnail)
 | 
			
		||||
      .addField('Nombre de vues', song.views, true)
 | 
			
		||||
      .addField('Demandé par', message.author, true)
 | 
			
		||||
      .addField('Durée', timeString, true)
 | 
			
		||||
      return serverQueue.textChannel
 | 
			
		||||
        .send(embed)
 | 
			
		||||
        .catch(console.error);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    queueConstruct.songs.push(song);
 | 
			
		||||
    message.client.queue.set(message.guild.id, queueConstruct);
 | 
			
		||||
 | 
			
		||||
    try {
 | 
			
		||||
      queueConstruct.connection = await channel.join();
 | 
			
		||||
      await queueConstruct.connection.voice.setSelfDeaf(true);
 | 
			
		||||
      play(queueConstruct.songs[0], message);
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
      console.error(error);
 | 
			
		||||
      message.client.queue.delete(message.guild.id);
 | 
			
		||||
      await channel.leave();
 | 
			
		||||
      return message.channel.send(`Impossible de rejoindre le channel: ${error}`).catch(console.error);
 | 
			
		||||
    }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  module.exports.help = MESSAGES.COMMANDS.MUSIQUE.PLAY;
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										114
									
								
								commands/Musique/playlist.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								commands/Musique/playlist.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,114 @@
 | 
			
		||||
const { MESSAGES } = require("../../util/constants");
 | 
			
		||||
const { MessageEmbed } = require("discord.js");
 | 
			
		||||
const { play } = require("../../Includes/play");
 | 
			
		||||
const YouTubeAPI = require("simple-youtube-api");
 | 
			
		||||
 | 
			
		||||
const {
 | 
			
		||||
  YOUTUBE_API_KEY,
 | 
			
		||||
  MAX_PLAYLIST_SIZE,
 | 
			
		||||
  DEFAULT_VOLUME,
 | 
			
		||||
} = require("../../util/LanBot");
 | 
			
		||||
const youtube = new YouTubeAPI(YOUTUBE_API_KEY);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
module.exports.run = async (client, message, args, settings) => {
 | 
			
		||||
  const { channel } = message.member.voice;
 | 
			
		||||
    const serverQueue = message.client.queue.get(message.guild.id);
 | 
			
		||||
 | 
			
		||||
    if (!channel.permissionsFor(message.client.user).has("CONNECT")) return message.channel.send("Je n'ai pas la permission de rejoindre un salon vocal !")
 | 
			
		||||
    if (!channel.permissionsFor(message.client.user).has("SPEAK"))return message.channel.send("Je n'ai pas la permission Parler dans le salon vocal !")
 | 
			
		||||
 | 
			
		||||
    if (serverQueue && channel !== message.guild.me.voice.channel)
 | 
			
		||||
      return message
 | 
			
		||||
        .reply(`Vous devez être dans le même canal que ${message.client.user}`)
 | 
			
		||||
        .catch(console.error);
 | 
			
		||||
 | 
			
		||||
    const search = args.join(" ");
 | 
			
		||||
    const pattern = /^.*(youtu.be\/|list=)([^#\&\?]*).*/gi;
 | 
			
		||||
    const url = args[0];
 | 
			
		||||
    const urlValid = pattern.test(args[0]);
 | 
			
		||||
 | 
			
		||||
    const queueConstruct = {
 | 
			
		||||
      textChannel: message.channel,
 | 
			
		||||
      channel,
 | 
			
		||||
      connection: null,
 | 
			
		||||
      songs: [],
 | 
			
		||||
      loop: false,
 | 
			
		||||
      volume: DEFAULT_VOLUME || 100,
 | 
			
		||||
      playing: true
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    let playlist = null;
 | 
			
		||||
    let videos = [];
 | 
			
		||||
 | 
			
		||||
    if (urlValid) {
 | 
			
		||||
      try {
 | 
			
		||||
        playlist = await youtube.getPlaylist(url, { part: "snippet" });
 | 
			
		||||
        videos = await playlist.getVideos(MAX_PLAYLIST_SIZE || 10, { part: "snippet" });
 | 
			
		||||
      } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
        return message.reply("Playlist introuvable ! 🥺 ").catch(console.error);
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      try {
 | 
			
		||||
        const results = await youtube.searchPlaylists(search, 1, { part: "snippet" });
 | 
			
		||||
        playlist = results[0];
 | 
			
		||||
        videos = await playlist.getVideos(MAX_PLAYLIST_SIZE || 10, { part: "snippet" });
 | 
			
		||||
      } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
        return message.reply(error.message).catch(console.error);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const newSongs = videos
 | 
			
		||||
      .filter((video) => video.title != "Private video" && video.title != "Deleted video")
 | 
			
		||||
      .map((video) => {
 | 
			
		||||
        return (song = {
 | 
			
		||||
          title: video.title,
 | 
			
		||||
          url: video.url,
 | 
			
		||||
          duration: video.durationSeconds
 | 
			
		||||
        });
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
    serverQueue ? serverQueue.songs.push(...newSongs) : queueConstruct.songs.push(...newSongs);
 | 
			
		||||
 | 
			
		||||
    let playlistEmbed = new MessageEmbed()
 | 
			
		||||
      .setTitle(`${playlist.title}`)
 | 
			
		||||
      .setDescription(newSongs.map((song, index) => `${index + 1}. ${song.title}`))
 | 
			
		||||
      .setURL(playlist.url)
 | 
			
		||||
      .setColor("#F8AA2A")
 | 
			
		||||
      .setTimestamp();
 | 
			
		||||
 | 
			
		||||
    if (playlistEmbed.description.length >= 2048)
 | 
			
		||||
      playlistEmbed.description =
 | 
			
		||||
        playlistEmbed.description.substr(0, 2007) + ("\nListe de lecture supérieure à la limite de caractères...");
 | 
			
		||||
 | 
			
		||||
    message.channel.send((`${message.author} a commencé une playlist`), playlistEmbed);
 | 
			
		||||
 | 
			
		||||
    if (!serverQueue) {
 | 
			
		||||
      message.client.queue.set(message.guild.id, queueConstruct);
 | 
			
		||||
 | 
			
		||||
      try {
 | 
			
		||||
        queueConstruct.connection = await channel.join();
 | 
			
		||||
        await queueConstruct.connection.voice.setSelfDeaf(true);
 | 
			
		||||
        play(queueConstruct.songs[0], message);
 | 
			
		||||
      } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
        message.client.queue.delete(message.guild.id);
 | 
			
		||||
        await channel.leave();
 | 
			
		||||
        return message.channel.send(`Impossible de rejoindre le channel: ${error}`).catch(console.error);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
module.exports.help = MESSAGES.COMMANDS.MUSIQUE.PLAYLIST;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
Play Pause      ⏯️
 | 
			
		||||
Stop            ⏹️
 | 
			
		||||
Shuffle         🔀
 | 
			
		||||
Loop All        🔁
 | 
			
		||||
Loop One        🔂
 | 
			
		||||
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										28
									
								
								commands/Musique/pruning.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								commands/Musique/pruning.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
const fs = require("fs");
 | 
			
		||||
const { MESSAGES } = require("../../util/constants");
 | 
			
		||||
 | 
			
		||||
let config;
 | 
			
		||||
 | 
			
		||||
try {
 | 
			
		||||
  config = require("../../config");
 | 
			
		||||
} catch (error) {
 | 
			
		||||
  config = null;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports.run = (client, message, args, settings) => {
 | 
			
		||||
    if (!config) return;
 | 
			
		||||
    config.PRUNING = !config.PRUNING;
 | 
			
		||||
 | 
			
		||||
    fs.writeFile("../../config", JSON.stringify(config, null, 2), (err) => {
 | 
			
		||||
      if (err) {
 | 
			
		||||
        console.log(err);
 | 
			
		||||
        return message.channel.send("Une erreur s'est produite lors de l'écriture dans le fichier.").catch(console.error);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return message.channel
 | 
			
		||||
        .send(`Pruning est ${config.PRUNING ? "**ON**" : "**OFF**"}`)
 | 
			
		||||
        .catch(console.error);
 | 
			
		||||
    });
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
module.exports.help = MESSAGES.COMMANDS.MUSIQUE.PRUNING;
 | 
			
		||||
							
								
								
									
										88
									
								
								commands/Musique/queue.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								commands/Musique/queue.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,88 @@
 | 
			
		||||
const { MessageEmbed } = require('discord.js')
 | 
			
		||||
const { MESSAGES } = require("../../util/constants");
 | 
			
		||||
 | 
			
		||||
module.exports.run = async (client, message, args, settings) => {
 | 
			
		||||
    const permissions = message.channel.permissionsFor(message.client.user);
 | 
			
		||||
    if (!permissions.has(["MANAGE_MESSAGES", "ADD_REACTIONS"]))
 | 
			
		||||
      return message.reply("Il me manque l'autorisation de gérer les messages ou d'ajouter des réactions");
 | 
			
		||||
 | 
			
		||||
    const queue = message.client.queue.get(message.guild.id);
 | 
			
		||||
    if (!queue) return message.channel.send("❌ **Rien ne joue sur ce serveur**");
 | 
			
		||||
 | 
			
		||||
    let currentPage = 0;
 | 
			
		||||
    const embeds = generateQueueEmbed(message, queue.songs);
 | 
			
		||||
 | 
			
		||||
    const queueEmbed = await message.channel.send(
 | 
			
		||||
      `**${("Page actuelle - ")} ${currentPage + 1}/${embeds.length}**`,
 | 
			
		||||
      embeds[currentPage]
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    try {
 | 
			
		||||
      await queueEmbed.react("⬅️");
 | 
			
		||||
      await queueEmbed.react("⏹");
 | 
			
		||||
      await queueEmbed.react("➡️");
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
      console.error(error);
 | 
			
		||||
      message.channel.send(error.message).catch(console.error);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const filter = (reaction, user) =>
 | 
			
		||||
      ["⬅️", "⏹", "➡️"].includes(reaction.emoji.name) && message.author.id === user.id;
 | 
			
		||||
    const collector = queueEmbed.createReactionCollector(filter, { time: 60000 });
 | 
			
		||||
 | 
			
		||||
    collector.on("collect", async (reaction, user) => {
 | 
			
		||||
      try {
 | 
			
		||||
        if (reaction.emoji.name === "➡️") {
 | 
			
		||||
          if (currentPage < embeds.length - 1) {
 | 
			
		||||
            currentPage++;
 | 
			
		||||
            queueEmbed.edit(
 | 
			
		||||
              ("Page actuelle - ", { page: currentPage + 1, length: embeds.length }),
 | 
			
		||||
              embeds[currentPage]
 | 
			
		||||
            );
 | 
			
		||||
          }
 | 
			
		||||
        } else if (reaction.emoji.name === "⬅️") {
 | 
			
		||||
          if (currentPage !== 0) {
 | 
			
		||||
            --currentPage;
 | 
			
		||||
            queueEmbed.edit(
 | 
			
		||||
              ("Page actuelle - ", { page: currentPage + 1, length: embeds.length }),
 | 
			
		||||
              embeds[currentPage]
 | 
			
		||||
            );
 | 
			
		||||
          }
 | 
			
		||||
        } else {
 | 
			
		||||
          collector.stop();
 | 
			
		||||
          reaction.message.reactions.removeAll();
 | 
			
		||||
        }
 | 
			
		||||
        await reaction.users.remove(message.author.id);
 | 
			
		||||
      } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
        return message.channel.send(error.message).catch(console.error);
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function generateQueueEmbed(message, queue) {
 | 
			
		||||
    let embeds = [];
 | 
			
		||||
    let k = 10;
 | 
			
		||||
  
 | 
			
		||||
    for (let i = 0; i < queue.length; i += 10) {
 | 
			
		||||
      const current = queue.slice(i, k);
 | 
			
		||||
      let j = i;
 | 
			
		||||
      k += 10;
 | 
			
		||||
  
 | 
			
		||||
      const info = current.map((track) => `${++j} - [${track.title}](${track.url})`).join("\n");
 | 
			
		||||
  
 | 
			
		||||
      const embed = new MessageEmbed()
 | 
			
		||||
        .setTitle("Song Queue\n")
 | 
			
		||||
        .setThumbnail(message.guild.iconURL())
 | 
			
		||||
        .setColor("#F8AA2A")
 | 
			
		||||
        .setDescription(
 | 
			
		||||
         (`**Morceau en cours - [${queue[0].title}](${queue[0].url})**\n\n${info}`)
 | 
			
		||||
        )
 | 
			
		||||
        .setTimestamp();
 | 
			
		||||
      embeds.push(embed);
 | 
			
		||||
    }
 | 
			
		||||
  
 | 
			
		||||
    return embeds;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
module.exports.help = MESSAGES.COMMANDS.MUSIQUE.QUEUE;
 | 
			
		||||
							
								
								
									
										104
									
								
								commands/Musique/radiozebre.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										104
									
								
								commands/Musique/radiozebre.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,104 @@
 | 
			
		||||
const { MESSAGES } = require("../../util/constants");
 | 
			
		||||
const { MessageEmbed } = require("discord.js");
 | 
			
		||||
const { play } = require("../../Includes/play");
 | 
			
		||||
const YouTubeAPI = require("simple-youtube-api");
 | 
			
		||||
 | 
			
		||||
const {
 | 
			
		||||
  YOUTUBE_API_KEY,
 | 
			
		||||
  MAX_PLAYLIST_SIZE,
 | 
			
		||||
  DEFAULT_VOLUME,
 | 
			
		||||
} = require("../../util/LanBot");
 | 
			
		||||
const youtube = new YouTubeAPI(YOUTUBE_API_KEY);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
module.exports.run = async (client, message, args, settings) => {
 | 
			
		||||
  const { channel } = message.member.voice;
 | 
			
		||||
    const serverQueue = message.client.queue.get(message.guild.id);
 | 
			
		||||
 | 
			
		||||
    if (!channel.permissionsFor(message.client.user).has("CONNECT")) return message.channel.send("Je n'ai pas la permission de rejoindre un salon vocal !")
 | 
			
		||||
    if (!channel.permissionsFor(message.client.user).has("SPEAK"))return message.channel.send("Je n'ai pas la permission Parler dans le salon vocal !")
 | 
			
		||||
 | 
			
		||||
    if (serverQueue && channel !== message.guild.me.voice.channel)
 | 
			
		||||
      return message
 | 
			
		||||
        .reply(`Vous devez être dans le même canal que ${message.client.user}`)
 | 
			
		||||
        .catch(console.error);
 | 
			
		||||
 | 
			
		||||
    const search = ("https://youtube.com/playlist?list=PLEQIc8j7Pa4SX6ixC2D6wplqzXI9Jv6el");
 | 
			
		||||
    const pattern = /^.*(youtu.be\/|list=)([^#\&\?]*).*/gi;
 | 
			
		||||
    const url = ("https://youtube.com/playlist?list=PLEQIc8j7Pa4SX6ixC2D6wplqzXI9Jv6el");
 | 
			
		||||
    const urlValid = pattern.test("https://youtube.com/playlist?list=PLEQIc8j7Pa4SX6ixC2D6wplqzXI9Jv6el");
 | 
			
		||||
 | 
			
		||||
    const queueConstruct = {
 | 
			
		||||
      textChannel: message.channel,
 | 
			
		||||
      channel,
 | 
			
		||||
      connection: null,
 | 
			
		||||
      songs: [],
 | 
			
		||||
      loop: false,
 | 
			
		||||
      volume: DEFAULT_VOLUME || 100,
 | 
			
		||||
      playing: true
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    let playlist = null;
 | 
			
		||||
    let videos = [];
 | 
			
		||||
 | 
			
		||||
    if (urlValid) {
 | 
			
		||||
      try {
 | 
			
		||||
        playlist = await youtube.getPlaylist(url, { part: "snippet" });
 | 
			
		||||
        videos = await playlist.getVideos(MAX_PLAYLIST_SIZE || 10, { part: "snippet" });
 | 
			
		||||
      } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
        return message.reply("Playlist introuvable ! 🥺 ").catch(console.error);
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      try {
 | 
			
		||||
        const results = await youtube.searchPlaylists(search, 1, { part: "snippet" });
 | 
			
		||||
        playlist = results[0];
 | 
			
		||||
        videos = await playlist.getVideos(MAX_PLAYLIST_SIZE || 10, { part: "snippet" });
 | 
			
		||||
      } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
        return message.reply(error.message).catch(console.error);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const newSongs = videos
 | 
			
		||||
      .filter((video) => video.title != "Private video" && video.title != "Deleted video")
 | 
			
		||||
      .map((video) => {
 | 
			
		||||
        return (song = {
 | 
			
		||||
          title: video.title,
 | 
			
		||||
          url: video.url,
 | 
			
		||||
          duration: video.durationSeconds
 | 
			
		||||
        });
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
    serverQueue ? serverQueue.songs.push(...newSongs) : queueConstruct.songs.push(...newSongs);
 | 
			
		||||
 | 
			
		||||
    let playlistEmbed = new MessageEmbed()
 | 
			
		||||
      .setTitle(`${playlist.title}`)
 | 
			
		||||
      .setDescription(newSongs.map((song, index) => `${index + 1}. ${song.title}`))
 | 
			
		||||
      .setURL(playlist.url)
 | 
			
		||||
      .setColor("#F8AA2A")
 | 
			
		||||
      .setTimestamp();
 | 
			
		||||
 | 
			
		||||
    if (playlistEmbed.description.length >= 2048)
 | 
			
		||||
      playlistEmbed.description =
 | 
			
		||||
        playlistEmbed.description.substr(0, 2007) + ("\nListe de lecture supérieure à la limite de caractères...");
 | 
			
		||||
 | 
			
		||||
    message.channel.send((`${message.author} a commencé une playlist`), playlistEmbed);
 | 
			
		||||
 | 
			
		||||
    if (!serverQueue) {
 | 
			
		||||
      message.client.queue.set(message.guild.id, queueConstruct);
 | 
			
		||||
 | 
			
		||||
      try {
 | 
			
		||||
        queueConstruct.connection = await channel.join();
 | 
			
		||||
        await queueConstruct.connection.voice.setSelfDeaf(true);
 | 
			
		||||
        play(queueConstruct.songs[0], message);
 | 
			
		||||
      } catch (error) {
 | 
			
		||||
        console.error(error);
 | 
			
		||||
        message.client.queue.delete(message.guild.id);
 | 
			
		||||
        await channel.leave();
 | 
			
		||||
        return message.channel.send(`Impossible de rejoindre le channel: ${error}`).catch(console.error);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
module.exports.help = MESSAGES.COMMANDS.MUSIQUE.RADIOZEBRE;
 | 
			
		||||
							
								
								
									
										33
									
								
								commands/Musique/remove.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								commands/Musique/remove.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
			
		||||
const pattern = /^[0-9]{1,2}(\s*,\s*[0-9]{1,2})*$/;
 | 
			
		||||
const { MESSAGES } = require("../../util/constants");
 | 
			
		||||
const { canModifyQueue } = require("../../util/LanBot");
 | 
			
		||||
 | 
			
		||||
module.exports.run = (client, message, args, settings) => {
 | 
			
		||||
    const queue = message.client.queue.get(message.guild.id);
 | 
			
		||||
 | 
			
		||||
    if (!queue) return message.channel.send("Il n'y a pas de file d'attente.").catch(console.error);
 | 
			
		||||
    if (!canModifyQueue(message.member))return message.channel.send('Vous devez être dans un salon vocal pour utiliser cette commande !');
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    const arguments = args.join("");
 | 
			
		||||
    const songs = arguments.split(",").map((arg) => parseInt(arg));
 | 
			
		||||
    let removed = [];
 | 
			
		||||
 | 
			
		||||
    if (pattern.test(arguments)) {
 | 
			
		||||
      queue.songs = queue.songs.filter((item, index) => {
 | 
			
		||||
        if (songs.find((songIndex) => songIndex - 1 === index)) removed.push(item);
 | 
			
		||||
        else return true;
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      queue.textChannel.send(
 | 
			
		||||
        `${message.author} ❌ suppression de **${removed.map((song) => song.title).join("\n")}** de la file d'attente.`
 | 
			
		||||
      );
 | 
			
		||||
    } else if (!isNaN(args[0]) && args[0] >= 1 && args[0] <= queue.songs.length) {
 | 
			
		||||
      console.log("On a eu de la chance !");
 | 
			
		||||
      return queue.textChannel.send(
 | 
			
		||||
        `${message.author} ❌ suppression de **${queue.songs.splice(args[0] - 1, 1)[0].title}** de la file d'attente.`
 | 
			
		||||
      );
 | 
			
		||||
    }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  module.exports.help = MESSAGES.COMMANDS.MUSIQUE.REMOVE;
 | 
			
		||||
							
								
								
									
										18
									
								
								commands/Musique/resume.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								commands/Musique/resume.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
const { MESSAGES } = require("../../util/constants");
 | 
			
		||||
const { canModifyQueue } = require("../../util/LanBot");
 | 
			
		||||
 | 
			
		||||
module.exports.run = (client, message, args, settings) => {
 | 
			
		||||
    if (!canModifyQueue(message.member))return message.channel.send('Vous devez être dans un salon vocal pour utiliser cette commande !');
 | 
			
		||||
    let queue = message.client.queue.get(message.guild.id)
 | 
			
		||||
    if(!queue) return message.channel.send({
 | 
			
		||||
        embed: {
 | 
			
		||||
            description: "Aucune musique actuellement en pause !"
 | 
			
		||||
        }
 | 
			
		||||
    })
 | 
			
		||||
    if(queue.playing !== false)
 | 
			
		||||
    queue.connection.dispatcher.resume()
 | 
			
		||||
    message.react('▶')
 | 
			
		||||
    message.channel.send('Musique relancée !')
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
module.exports.help = MESSAGES.COMMANDS.MUSIQUE.RESUME;
 | 
			
		||||
							
								
								
									
										60
									
								
								commands/Musique/search.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								commands/Musique/search.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,60 @@
 | 
			
		||||
const { MessageEmbed } = require("discord.js");
 | 
			
		||||
const YouTubeAPI = require("simple-youtube-api");
 | 
			
		||||
const { YOUTUBE_API_KEY } = require("../../util/LanBot");
 | 
			
		||||
const youtube = new YouTubeAPI(YOUTUBE_API_KEY);
 | 
			
		||||
const { MESSAGES } = require("../../util/constants");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
module.exports.run = async (client, message, args, settings) => {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    if (message.channel.activeCollector) return message.reply("Un collecteur de messages est déjà actif dans ce canal.");
 | 
			
		||||
    if (!message.member.voice.channel)
 | 
			
		||||
      return message.reply("Vous devez d'abord rejoindre un canal vocal!").catch(console.error);
 | 
			
		||||
 | 
			
		||||
    const search = args.join(" ");
 | 
			
		||||
 | 
			
		||||
    let resultsEmbed = new MessageEmbed()
 | 
			
		||||
      .setTitle("**Répondez avec le numéro de la chanson que vous souhaitez écouter**")
 | 
			
		||||
      .setDescription(`Résultat pour: ${search}`)
 | 
			
		||||
      .setColor("#F8AA2A");
 | 
			
		||||
 | 
			
		||||
    try {
 | 
			
		||||
      const results = await youtube.searchVideos(search, 10);
 | 
			
		||||
      results.map((video, index) => resultsEmbed.addField(video.shortURL, `${index + 1}. ${video.title}`));
 | 
			
		||||
 | 
			
		||||
      let resultsMessage = await message.channel.send(resultsEmbed);
 | 
			
		||||
 | 
			
		||||
      function filter(msg) {
 | 
			
		||||
        const pattern = /^[0-9]{1,2}(\s*,\s*[0-9]{1,2})*$/;
 | 
			
		||||
        return pattern.test(msg.content);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      message.channel.activeCollector = true;
 | 
			
		||||
      const response = await message.channel.awaitMessages(filter, { max: 1, time: 30000, errors: ["time"] });
 | 
			
		||||
      const reply = response.first().content;
 | 
			
		||||
 | 
			
		||||
      if (reply.includes(",")) {
 | 
			
		||||
        let songs = reply.split(",").map((str) => str.trim());
 | 
			
		||||
 | 
			
		||||
        for (let song of songs) {
 | 
			
		||||
          await message.client.commands
 | 
			
		||||
            .get("play")
 | 
			
		||||
            .execute(message, [resultsEmbed.fields[parseInt(song) - 1].name]);
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
        const choice = resultsEmbed.fields[parseInt(response.first()) - 1].name;
 | 
			
		||||
        message.client.commands.get("play").execute(message, [choice]);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      message.channel.activeCollector = false;
 | 
			
		||||
      resultsMessage.delete().catch(console.error);
 | 
			
		||||
      response.first().delete().catch(console.error);
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
      console.error(error);
 | 
			
		||||
      message.channel.activeCollector = false;
 | 
			
		||||
      message.reply("lantium a encore chié sur le code ! ").catch(console.error);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  module.exports.help = MESSAGES.COMMANDS.MUSIQUE.SEARCH;
 | 
			
		||||
							
								
								
									
										23
									
								
								commands/Musique/shuffle.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								commands/Musique/shuffle.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
const { MESSAGES } = require("../../util/constants");
 | 
			
		||||
const { canModifyQueue } = require("../../util/LanBot");
 | 
			
		||||
 | 
			
		||||
module.exports.run = (client, message, args, settings) => {
 | 
			
		||||
 | 
			
		||||
  if (!canModifyQueue(message.member))return message.channel.send('Vous devez être dans un salon vocal pour utiliser cette commande !');
 | 
			
		||||
  
 | 
			
		||||
  const queue = message.client.queue.get(message.guild.id)
 | 
			
		||||
    if(!queue) return message.channel.send("Aucune musique dans la liste d'attente !")
 | 
			
		||||
   
 | 
			
		||||
    let songs = queue.songs;
 | 
			
		||||
    for (let i = songs.length - 1; i > 1; i--) {
 | 
			
		||||
      let j = 1 + Math.floor(Math.random() * i);
 | 
			
		||||
      [songs[i], songs[j]] = [songs[j], songs[i]];
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    queue.songs = songs;
 | 
			
		||||
    
 | 
			
		||||
    message.client.queue.set(message.guild.id, queue);
 | 
			
		||||
    message.channel.send(`Lecture aléatoire de la liste de lecture 🔀`).catch(console.error);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
module.exports.help = MESSAGES.COMMANDS.MUSIQUE.SHUFFLE;
 | 
			
		||||
							
								
								
									
										23
									
								
								commands/Musique/skip.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								commands/Musique/skip.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
const { MESSAGES } = require("../../util/constants");
 | 
			
		||||
const { canModifyQueue } = require("../../util/LanBot");
 | 
			
		||||
 | 
			
		||||
module.exports.run = (client, message, args, settings) => {
 | 
			
		||||
    
 | 
			
		||||
    if (!canModifyQueue(message.member))return message.channel.send('Vous devez être dans un salon vocal pour utiliser cette commande !');
 | 
			
		||||
 | 
			
		||||
    let queue = message.client.queue.get(message.guild.id)
 | 
			
		||||
    if(!queue){ return message.channel.send({
 | 
			
		||||
        embed: {
 | 
			
		||||
            description: `Liste d'attente vide ! merci d'utiliser la commande \`${settings.prefix}play + URL / Nom de la musique\` !`,
 | 
			
		||||
            color: 'BLACK'
 | 
			
		||||
        }
 | 
			
		||||
    })
 | 
			
		||||
}
 | 
			
		||||
    if(queue.songs.length !== 0) {
 | 
			
		||||
        message.react('✅')
 | 
			
		||||
        queue.connection.dispatcher.end('Dacodac Je passe à la suivante')
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
module.exports.help = MESSAGES.COMMANDS.MUSIQUE.SKIP;
 | 
			
		||||
							
								
								
									
										33
									
								
								commands/Musique/skipto.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								commands/Musique/skipto.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
			
		||||
 | 
			
		||||
const { MESSAGES } = require("../../util/constants");
 | 
			
		||||
const { canModifyQueue } = require("../../util/LanBot");
 | 
			
		||||
 | 
			
		||||
module.exports.run = (client, message, args, settings) => {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    const queue = message.client.queue.get(message.guild.id);
 | 
			
		||||
    if (!queue) return message.channel.send("Il n'y a pas de file d'attente.").catch(console.error);
 | 
			
		||||
    if (!canModifyQueue(message.member))return message.channel.send('Vous devez être dans un salon vocal pour utiliser cette commande !');
 | 
			
		||||
 | 
			
		||||
    if (args[0] > queue.songs.length)
 | 
			
		||||
      return message
 | 
			
		||||
        .reply(`La file d'attente contient seulement ${queue.songs.length} chansons!`)
 | 
			
		||||
        .catch(console.error);
 | 
			
		||||
 | 
			
		||||
    queue.playing = true;
 | 
			
		||||
 | 
			
		||||
    if (queue.loop) {
 | 
			
		||||
      for (let i = 0; i < args[0] - 2; i++) {
 | 
			
		||||
        queue.songs.push(queue.songs.shift());
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      queue.songs = queue.songs.slice(args[0] - 2);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    queue.connection.dispatcher.end();
 | 
			
		||||
    queue.textChannel
 | 
			
		||||
      .send(`${message.author} ⏭ skip ${args[0] - 1} musiques`)
 | 
			
		||||
      .catch(console.error);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  module.exports.help = MESSAGES.COMMANDS.MUSIQUE.SKIPTO;
 | 
			
		||||
							
								
								
									
										19
									
								
								commands/Musique/stop.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								commands/Musique/stop.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
const { MESSAGES } = require("../../util/constants");
 | 
			
		||||
const { canModifyQueue } = require("../../util/LanBot");
 | 
			
		||||
 | 
			
		||||
module.exports.run = (client, message, args, settings) => {
 | 
			
		||||
    if (!canModifyQueue(message.member))return message.channel.send('Vous devez être dans un salon vocal pour utiliser cette commande !');
 | 
			
		||||
 | 
			
		||||
    let queue = message.client.queue.get(message.guild.id)
 | 
			
		||||
    if(!queue) return message.channel.send({
 | 
			
		||||
        embed: {
 | 
			
		||||
            description: "Aucune musique de jouer, donc impossible d'utiliser la commande !",
 | 
			
		||||
            color: 'BLACK'
 | 
			
		||||
        }
 | 
			
		||||
    })
 | 
			
		||||
    message.react('✅')
 | 
			
		||||
    queue.songs = []
 | 
			
		||||
    queue.connection.dispatcher.end('Fin!')
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
module.exports.help = MESSAGES.COMMANDS.MUSIQUE.STOP;
 | 
			
		||||
							
								
								
									
										22
									
								
								commands/Musique/volume.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								commands/Musique/volume.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
const { MESSAGES } = require("../../util/constants");
 | 
			
		||||
const { canModifyQueue } = require("../../util/LanBot");
 | 
			
		||||
 | 
			
		||||
module.exports.run = (client, message, args, settings) => {
 | 
			
		||||
    const queue = message.client.queue.get(message.guild.id);
 | 
			
		||||
 | 
			
		||||
    if (!queue) return message.reply(i18n.__("volume.errorNotQueue")).catch(console.error);
 | 
			
		||||
    if (!canModifyQueue(message.member))return message.channel.send('Vous devez être dans un salon vocal pour utiliser cette commande !');
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    if (!args[0]) return message.reply(`🔊 Le volume actuelle est de: **${queue.volume}%**`).catch(console.error);
 | 
			
		||||
    if (isNaN(args[0])) return message.reply("Veuillez utiliser un nombre pour régler le volume.").catch(console.error);
 | 
			
		||||
    if (Number(args[0]) > 100 || Number(args[0]) < 0)
 | 
			
		||||
      return message.reply("Veuillez utiliser un nombre compris entre 0 et 100.").catch(console.error);
 | 
			
		||||
 | 
			
		||||
    queue.volume = args[0];
 | 
			
		||||
    queue.connection.dispatcher.setVolumeLogarithmic(args[0] / 100);
 | 
			
		||||
    return queue.textChannel.send(`Volume réglé sur: **${args[0]}%**`).catch(console.error);
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
module.exports.help = MESSAGES.COMMANDS.MUSIQUE.VOLUME;
 | 
			
		||||
		Reference in New Issue
	
	Block a user