Advertisement
Guest User

Untitled

a guest
Jan 28th, 2018
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. var SyncPromise = require('sync-promise');
  3.  
  4. const Discord = require('discord.js');
  5. var JSON = require('JSON');
  6. var mysql = require('mysql');
  7.  
  8.  
  9. const fs = require('fs');
  10. var convert = require('convert-seconds');
  11.  
  12. var rp = require('request-promise');
  13. var Promise = require('bluebird');
  14. var Jimp = require("jimp");
  15.  
  16. var assert = require('assert')
  17. var fsins = require('fs');
  18.  
  19.  
  20.  
  21. var outsidepass = ["0", "1"];
  22. const Nodesu = require('nodesu');
  23.  
  24. outsidepass[0] = fs.readFileSync('./pswdt.config', 'utf8');
  25.  
  26. const osu = new Nodesu.Client(outsidepass[0], {
  27.     // parseData: true
  28.  
  29. });
  30.  
  31. const client = new Discord.Client();
  32.  
  33. // outputs to stdout.
  34. // Valeur définissant l'activation des inscriptions
  35. var allowedsub = true;
  36.  
  37. // Mot de passe du Discord API
  38. var fspass2 = "";
  39. var Enum = require('enum');
  40.  
  41. // Liste des joueurs actuellement inscrits
  42. var joueurs = ["Vide", "Vide", "Vide", "Vide", "Vide", "Vide", "Vide", "Vide", "Vide", "Vide"];
  43. fsins.readFile('players.json', function (err, data) {
  44.     if (err) throw err;
  45.     joueurs = data.toString().split("\n");
  46.  
  47.     for (i in joueurs) {
  48.         console.log(joueurs[i]);
  49.  
  50.     }
  51. });
  52.  
  53. var rolls = ["Vide", "Vide", "Vide", "Vide", "Vide", "Vide", "Vide", "Vide", "Vide", "Vide"];
  54. var spoils = ["no"]
  55. fsins.readFile('spoilers.json', function (err, data) {
  56.     if (err) throw err;
  57.     spoils = JSON.parse(data)
  58.  
  59.     for (i in spoils) {
  60.         console.log(spoils[i]);
  61.  
  62.     }
  63. });
  64. var messagetwitch = ""
  65. // Pour le lol
  66. var colors = require('colors');
  67.  
  68. // Le channel auquel les joueurs peuvent écrire une commande
  69. var allowedchannel = "inscriptions";
  70. var allowedchannelroll = "rolls";
  71. osu.user.get("300BPM JUMPER", 0, 1, 1).then(console.log());
  72. //"```"
  73. // Vérification des messages envoyés par les utilisateurs
  74.  
  75. //Mode output
  76. function getmods(modscount) {
  77.     var modetest = 0
  78.     //Nodesu.mods.get(modetest).then(console.log)
  79.     var myEnum = new Enum(Nodesu.Mods)
  80.     console.log(modscount)
  81.     myEnum.isFlaggable;
  82.     console.log(myEnum.get(64))
  83.  
  84.  
  85. }
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92. client.on('message', async message => {
  93.     if (message.author.bot) return;
  94.  
  95.     var fsuser = require('fs');
  96.     if(message.guild == null && (message.content.startsWith('!aspoil') || message.content.startsWith("!spoil"))){
  97.        
  98.     if (message.content.startsWith("!aspoil ")){
  99.         const fs = require('fs');
  100.  
  101.         var spoiler = message.author.username + ": " + message.content.replace("!aspoil ", "")
  102.         if (spoiler != ""){
  103.             message.reply("Votre spoil a bien été ajouté. Numéro: "+spoils.length +" - " + spoiler)
  104.             spoils.push(spoiler)
  105.             fs.writeFile("./spoilers.json", JSON.stringify(spoils))
  106.  
  107.         } else{
  108.             message.reply("Merci d'indiquer un texte.")
  109.         }
  110.  
  111.     }
  112.     if (message.content == "!spoils"){
  113.         message.reply("Total de spoils disponibles: " + spoils.length)
  114.     }
  115.     if (message.content.startsWith("!spoil ")){
  116.         var content = parseInt(message.content.replace('!spoil ', ""))
  117.         if (spoils[content]!= undefined){
  118.             message.reply(spoils[content])
  119.         } else {
  120.             message.reply("Ce spoil n'existe pas.")
  121.         }
  122.     }
  123.  
  124.     } else if (message.guild != null && (message.content.startsWith('!aspoil') || message.content.startsWith("!spoil"))){
  125.         message.reply("Cette commande ne fonctionne qu'en privé.")
  126.     }
  127.     /*  if (message.content === '!mapset') {
  128.         var allowedRole = message.guild.roles.find("name", "botuse");
  129.  
  130.         if (message.member.roles.has(allowedRole.id)) {
  131.             const embed = new Discord.RichEmbed()
  132.  
  133.  
  134.                 .setColor(0x00AE86)
  135.  
  136.                 .addField("**-------- EASY (Simple) --------**",
  137.                 "\r\n**[--- Made of fire ---](https://osu.ppy.sh/b/40017)**\r\n**Difficulté**: Oni (4.98)\r\n**Durée:** 2:40" +
  138.                 "\r\n\r\n" +
  139.                 "\r\n**[--- System of a down - Victinity of Obscenity ---](https://osu.ppy.sh/b/50712)**\r\n**Difficulté**: Impossible (4.74)\r\n**Durée:** 2:40" +
  140.                 "\r\n\r\n" +
  141.                 "\r\n**[--- BlackYooh vs. siromaru - BLACK or WHITE? ---](https://osu.ppy.sh/b/637477)**\r\n**Difficulté**: INFINITE (4.74) \r\n**Durée:** 1:55" +
  142.                 "\r\n\r\n"
  143.                 , true)
  144.                 .addBlankField(false)
  145.                 .addField("**-------- EASY (Advanced) --------**",
  146.                 "\r\n**[--- Nomy - Cocaine (Nightcore Mix) ---](https://osu.ppy.sh/b/124993)**\r\n**Difficulté**: Insane (4.66) \r\n**Durée:** 3:01" +
  147.                 "\r\n\r\n" +
  148.                 "\r\n**[--- RADWIMPS - Zen Zen Zense (movie ver.) ---](https://osu.ppy.sh/b/1093245)**\r\n**Difficulté**: Sotarks' Insane (4.65)\r\n**Durée:** 1:53" +
  149.                 "\r\n\r\n" +
  150.                 "\r\n**[--- senya - Hitomi ni Kakusareta Omoi ---](https://osu.ppy.sh/b/867391)**\r\n**Difficulté**: Lunatic (4.64)\r\n**Durée:** 2:44" +
  151.                 "\r\n\r\n"
  152.                 , true)
  153.                 .addBlankField(false)
  154.                 .addField("**-------- EASY (Hard) --------**",
  155.                 "\r\n**[--- Stonebank - All Night ---](https://osu.ppy.sh/b/891762)**\r\n**Difficulté**: Insane (4.61) \r\n**Durée:** 1:52" +
  156.                 "\r\n\r\n" +
  157.                 "\r\n**[--- Nico Nico Douga - U.N. Owen wa Kanojo nanoka? (Nico Mega Mix) ---](https://osu.ppy.sh/b/27638)**\r\n**Difficulté**: TAG4 (10.25)\r\n**Durée:** 3:30" +
  158.                 "\r\n\r\n" +
  159.                 "\r\n**[--- Frederic - oddloop ---](https://osu.ppy.sh/b/1137879)**\r\n**Difficulté**: oldloop (4.46)\r\n**Durée:** 4:11" +
  160.                 "\r\n\r\n"
  161.                 , true)
  162.                 .addBlankField(false)
  163.                 .addField("**-------- EASY + FLASHLIGHT --------**",
  164.                 "\r\n**[--- beatMARIO - Night of Knights ---](https://osu.ppy.sh/b/58063)**\r\n**Difficulté**: SOLO (4.52) \r\n**Durée:** 3:14" +
  165.                 "\r\n\r\n" +
  166.                 "\r\n**[--- Drop - Granat ---](https://osu.ppy.sh/b/1059390)**\r\n**Difficulté**: INSANE (3.62)\r\n**Durée:** 0:42" +
  167.                 "\r\n\r\n" +
  168.                 "\r\n**[--- SawanoHiroyuki[nZk]:mizuki - &Z (TV size-English ver.-) ---](https://osu.ppy.sh/b/595161)**\r\n**Difficulté**: captin's Insane (3.81)\r\n**Durée:** 1:27" +
  169.                 "\r\n\r\n"
  170.                 , true)
  171.                 .addBlankField(false)
  172.  
  173.                 .addField("**-------- TIEBREAK --------**",
  174.                 "\r\n**[--- AK X LYNX ft. Veela - Virtual Paradise ---](https://osu.ppy.sh/b/1020502)**\r\n**Difficulté**: Fantaisie (4.77)\r\n**Durée:** 2:57"
  175.  
  176.  
  177.                 , true).addBlankField(false)
  178.                 .addField("**-------- MAPSET COMPLET --------**",
  179.                 "\r\n**[--- CLIQUEZ ICI ---](http://www.mediafire.com/file/4g49vk5bxdu2u5k/NAWAK%20N8.zip)**"
  180.  
  181.  
  182.                 , true)
  183.             message.channel.send({ embed });
  184.         }
  185.         else {
  186.             //   message.reply("Vous n'avez pas le droit.");
  187.         }
  188.  
  189.     }*/
  190.  
  191.     if (message.content === '!inscrits') {
  192.         var nombrejoueursactuel = 0;
  193.         var inscritstotal = "";
  194.         for (var i = 0; i < 10; i++) {
  195.             if (joueurs[i] == "Vide") {/*Osef */ } else {
  196.                 inscritstotal = inscritstotal + joueurs[i] + "\r\n";
  197.                 nombrejoueursactuel++;
  198.             }
  199.         }
  200.         console.log(inscritstotal);
  201.         message.channel.send("Joueurs: (" + nombrejoueursactuel + " sur 10)   \r\n" + inscritstotal);
  202.     }
  203.  
  204.     // Osu related commands
  205.     if (message.content === '!rolls') {
  206.         var nombrejoueursactuel = 0;
  207.         var inscritstotal = "";
  208.         for (var i = 0; i < 10; i++) {
  209.             if (joueurs[i] == "Vide") {/*Osef */ } else {
  210.                 inscritstotal = inscritstotal + "Joueur n°" + parseInt(i + 1) + " " + joueurs[i] + ": " + rolls[i] + "\r\n";
  211.                 nombrejoueursactuel++;
  212.             }
  213.         }
  214.         console.log(inscritstotal);
  215.         message.channel.send("Rolls: (" + nombrejoueursactuel + " sur 10)   \r\n" + inscritstotal);
  216.     }
  217.  
  218.     if (message.content.startsWith("!osu")) {
  219.  
  220.         var osu_name = message.content.replace("!osu", "")
  221.         console.log(osu_name)
  222.         if (osu_name != "") {
  223.             if (osu_name.startsWith(" add")) {
  224.                 osu_name = osu_name.replace(" add ", "")
  225.  
  226.                 osu.user.get(osu_name).then(function (osudata) {
  227.                     // console.log(osudata)
  228.                     var stats_per_player = {
  229.                         "name": message.author.username,
  230.                         "osuname": osu_name,
  231.                         "pp": "0",
  232.                         "rank": "0",
  233.                         "countryrank": "0",
  234.                         "date": ""
  235.                     }
  236.  
  237.                     stats_per_player['pp'] = osudata['pp_raw']
  238.                     stats_per_player['rank'] = osudata['pp_rank']
  239.                     stats_per_player['countryrank'] = osudata['pp_country_rank']
  240.                     var fs = require('fs')
  241.                     fs.writeFile("./user/" + message.author.id + ".json", JSON.stringify(stats_per_player))
  242.                     message.channel.send("Votre pseudo a bien été ajouté à la liste. Faites '!osu stats' pour mettre à jour vos pp.")
  243.                 }).catch()
  244.             }
  245.             else if (osu_name.startsWith(" stats")) {
  246.  
  247.                 if (osu_name == " stats") {
  248.  
  249.  
  250.                     var fs = require('fs')
  251.                     fs.readFile("./user/" + message.author.id + ".json", (err, data) => {
  252.                         if (err) {
  253.                             message.reply("Vous n'avez pas activé les statistiques, faites !osu add pseudo (remplacez pseudo par votre pseudo osu")
  254.                         } else {
  255.                             var osudata = JSON.parse(data)
  256.                             osu.user.get(osudata['osuname']).then(function (osu_user) {
  257.                                 var ppdifference = parseFloat(osu_user["pp_raw"]) - parseFloat(osudata['pp'])
  258.                                 var rankdifference = parseFloat(osudata['rank']) - parseFloat(osu_user["pp_rank"])
  259.                                 var crankdifference = parseFloat(osudata['countryrank']) - parseFloat(osu_user["pp_country_rank"])
  260.  
  261.                                 if (osudata['acc'] != undefined) {
  262.                                     var accdifference = parseFloat(osudata['acc']) - parseFloat(osu_user["accuracy"])
  263.  
  264.                                 } else {
  265.                                     var accdifference = "0";
  266.                                 }
  267.                                 if (osudata['rankscore'] != undefined) {
  268.                                     var rscoredifference = parseFloat(osu_user["ranked_score"]) - parseFloat(osudata['rankscore'])
  269.  
  270.                                 } else {
  271.                                     var rscoredifference = "0";
  272.                                 }
  273.                                 if (osudata['norankscore'] != undefined) {
  274.                                     var scoredifference = parseFloat(osu_user["total_score"]) - parseFloat(osudata['norankscore'])
  275.  
  276.                                 } else {
  277.                                     var scoredifference = "0";
  278.                                 }
  279.                                 osudata['pp'] = osu_user['pp_raw']
  280.                                 osudata['acc'] = osu_user['accuracy']
  281.                                 osudata['rankscore'] = osu_user['ranked_score']
  282.                                 osudata['norankscore'] = osu_user['total_score']
  283.                                 osudata['countryrank'] = osu_user['pp_country_rank']
  284.                                 osudata['rank'] = osu_user['pp_rank']
  285.                                 const embed = new Discord.RichEmbed()
  286.                                     .setTitle(osudata['osuname'])
  287.                                     .setThumbnail("https://a.ppy.sh/" + osu_user['user_id'] + "?.jpg")
  288.                                     .setURL("https://osu.ppy.sh/u/" + osu_user['user_id'])
  289.                                     .setColor(0x00AE86)
  290.                                     .setDescription("**`|- PP -|`** " + ("__`" + osu_user['pp_raw'] + " (" + ppdifference + ")" + "`__").padStart(50) +
  291.  
  292.                                     "\r\n**`|- Accuracy -|` ** " + ("__`" + osudata['acc'].substring(0, 5) + "% (" + accdifference + ")" + "`__").padStart(35) +
  293.                                     "\r\n**`|- Score total -|`** " + ("__`" + osudata['norankscore'].replace(/\B(?=(\d{3})+(?!\d))/g, " ") + " ( +" + scoredifference + " )" + "`__").padStart(40) +
  294.                                     "\r\n**`|- Score ranked -|`** " + ("__`" + osudata['rankscore'].replace(/\B(?=(\d{3})+(?!\d))/g, " ") + " ( +" + rscoredifference + " )" + "`__").padStart(37) +
  295.                                     "\r\n**`|- Rank Global -|`**   " + ("__`#" + osu_user['pp_rank'] + " (" + rankdifference + ")" + "`__").padStart(28) +
  296.                                     "\r\n**`|- Rank Pays (" + osu_user['country'] + ") -|`** " + ("__`#" + osu_user['pp_country_rank'] + " (" + crankdifference + ")" + "`__").padStart(22))
  297.                                 message.channel.send({ embed })
  298.  
  299.                                 fs.writeFile("./user/" + message.author.id + ".json", JSON.stringify(osudata))
  300.                             })
  301.                         }
  302.  
  303.                     })
  304.                 } else {
  305.  
  306.                     var osu_name2 = osu_name.replace(" stats ", "")
  307.                     osu.user.get(osu_name2).then(function (osu_user) {
  308.                         console.log(osu_user['events'][0])
  309.                         if (osu_user['events'][0] != undefined) {
  310.  
  311.                             var topmapid = osu_user['events'][0]['beatmap_id']
  312.                             var topmapuserid = osu_user['user_id']
  313.                             osu.scores.get(topmapid, undefined, 0, 1, topmapuserid).then(function (data) {
  314.                                 console.log(data[0])
  315.  
  316.                             })
  317.  
  318.  
  319.                         }
  320.                         const embed = new Discord.RichEmbed()
  321.                             .setTitle("**`" + osu_user['username'] + "`**")
  322.                             .setThumbnail("https://a.ppy.sh/" + osu_user['user_id'] + "?.png")
  323.                             .setURL("https://osu.ppy.sh/u/" + osu_user['user_id'])
  324.                             .setColor(0x00AE86)
  325.                             .setDescription("**`|- PP -|`** " + ("__`" + osu_user['pp_raw'] + "`__").padStart(50) +
  326.                             "\r\n**`|- Accuracy -|` ** " + ("__`" + osu_user['accuracy'].substring(0, 5) + "`__").padStart(34) +
  327.                             "\r\n**`|- Score total -|`** " + ("__`" + osu_user['total_score'].replace(/\B(?=(\d{3})+(?!\d))/g, " ") + "`__").padStart(37) +
  328.                             "\r\n**`|- Score ranked -|`** " + ("__`" + osu_user['ranked_score'].replace(/\B(?=(\d{3})+(?!\d))/g, " ") + "`__").padStart(34) +
  329.  
  330.                             "\r\n**`|- Rank Global -|`**   " + ("__`#" + osu_user['pp_rank'] + "`__").padStart(27) +
  331.                             "\r\n**`|- Rank Pays (" + osu_user['country'] + ") -|`** " + ("__`#" + osu_user['pp_country_rank'] + "`__").padStart(21) +
  332.                             "\r\n**`|- Last top -|`**   ")
  333.                         message.channel.send({ embed })
  334.                         //console.log()
  335.  
  336.  
  337.  
  338.                     }).catch()
  339.  
  340.                 }
  341.  
  342.             }
  343.  
  344.  
  345.  
  346.  
  347.         } else {
  348.             const embed = new Discord.RichEmbed()
  349.                 .setTitle("Liste des commandes disponibles pour !osu")
  350.  
  351.                 .setColor(0x00AE86)
  352.                 .setDescription("**!osu add <pseudo_osu>:** Ajoutez votre compte pour tracker votre progression" +
  353.                 "\r\n**!osu stats:** Affiche vos informations" +
  354.                 "\r\n**!osu stats <pseudo_osu>:** Affiche les statistiques d'un autre joueur" +
  355.                 "\r\n**!osu recent:** Affiche le dernier score obtenu sur une map si vous l'avez pass. La commande sera bientôt remplacé par une notification MP (désactivable)")
  356.             message.channel.send({ embed })
  357.         }
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.     }
  368.  
  369.  
  370.     // AFFICHAGE D'UN JOUEUR
  371.     if ((message.content.startsWith('https://osu.ppy.sh/u/')) || message.content.startsWith('https://osu.ppy.sh/users/')) {
  372.  
  373.         const m = await message.channel.send("Création de vos informations en cours... Étape 0/3");
  374.  
  375.         //first_message_var =  message.channel.send("Veuillez patienter...")
  376.  
  377.         var old_usermes = message.content;
  378.  
  379.         if (message.content.startsWith('https://osu.ppy.sh/u/')) {
  380.             old_usermes = old_usermes.replace("https://osu.ppy.sh/u/", "");
  381.         } else if (message.content.startsWith('https://osu.ppy.sh/users/')) {
  382.             old_usermes = old_usermes.replace("https://osu.ppy.sh/users/", "");
  383.         }
  384.         if (message.content.indexOf("%20")) {
  385.  
  386.             old_usermes = old_usermes.replace(/%20/g, "_")
  387.         }
  388.         var userarray = ["empty"];
  389.         var username = { "name": old_usermes, "content": userarray };
  390.         function printuserbest(user) {
  391.  
  392.             osu.user.getBest(user['name'], 0, 5).then(function (userdata) {
  393.                 m.edit("Création de vos informations en cours...  Étape 1/3")
  394.                 var username = { "name": user['name'], "content": userdata };
  395.                 return username;
  396.  
  397.             }).then(function (userbpmap) {
  398.                 // console.log(userbpmap['content'][1])
  399.                 m.edit("Création de vos informations en cours...  Étape 2/3")
  400.                 return Promise.all(userbpmap['content'].map(function (row) {
  401.                     // console.log(row['beatmap_id']);
  402.                     return osu.beatmaps.getByBeatmapId(row['beatmap_id']).then(function (mapinfo) {
  403.                         row['beatmap_id'] = mapinfo[0]['artist'] + " " + mapinfo[0]['title']
  404.  
  405.                         return row;
  406.                     })
  407.                 }))
  408.  
  409.             }).then(function (userinfo) {
  410.  
  411.                 // message.delete();
  412.                 var pseudo_osu = user['name']
  413.                 osu.user.get(pseudo_osu).then(function (finalinfos) {
  414.  
  415.                     return finalinfos;
  416.  
  417.  
  418.                 }).then(function (write_to_embed) {
  419.                     checkosu_id = "./osuinfos/" + write_to_embed["user_id"] + ".json"
  420.                     var fs = require('fs')
  421.                     fs.readFile(checkosu_id, "utf8", (err, data) => {
  422.                         if (err) {
  423.                             var saveuser = require('fs')
  424.                             var data_parsed = {
  425.                                 "osuname": "",
  426.                                 "actualpp": 0,
  427.                                 "newpp": "",
  428.                                 "osu_id": ""
  429.                             }
  430.                             console.log(err)
  431.                             var saveuser = require('fs')
  432.  
  433.                             data_parsed["osu_name"] = write_to_embed["username"]
  434.                             data_parsed["actualpp"] = write_to_embed["pp_raw"]
  435.                             data_parsed["newpp"] = write_to_embed["pp_raw"]
  436.                             data_parsed["osu_id"] = write_to_embed["user_id"]
  437.                             saveuser.writeFile(checkosu_id, JSON.stringify(data_parsed), function (err) {
  438.  
  439.                             })
  440.  
  441.  
  442.  
  443.  
  444.                             const embed = new Discord.RichEmbed()
  445.                                 .setAuthor(write_to_embed["username"], "https://a.ppy.sh/" + write_to_embed['user_id'] + "?.jpg")
  446.                                 /*
  447.                                  * Alternatively, use "#00AE86", [0, 174, 134] or an integer number.
  448.                                  */
  449.                                 .setColor(0x00AE86)
  450.                                 .setDescription("**PP:** " + write_to_embed['pp_raw'] + "\r\n" +
  451.                                 "**Playcount:** " + write_to_embed['playcount'] + "\r\n" +
  452.                                 "**Rank National:** #" + write_to_embed['pp_country_rank'] + " " + write_to_embed['country'] + "\r\n" +
  453.                                 "**Rank Global:** #" + write_to_embed['pp_rank'] + "\r\n\r\nLe bot va maintenant enregistrer les différences de PP pour cet utilisateur."
  454.  
  455.  
  456.                                 )
  457.                                 //.setFooter("This is the footer text, it can hold 2048 characters", "http://i.imgur.com/w1vhFSR.png")
  458.                                 //.setImage("http://i.imgur.com/yVpymuV.png")
  459.                                 .setThumbnail("https://a.ppy.sh/" + write_to_embed['user_id'] + "?.jpg")
  460.                                 /*
  461.                                  * Takes a Date object, defaults to current date.
  462.                                  */
  463.                                 //.setTimestamp()
  464.                                 .setURL("https://osu.ppy.sh/u/" + write_to_embed['user_id'])
  465.                                 .addField("TOP 5 PP:",
  466.                                 "**" + userinfo[0]['beatmap_id'] + "** \r\n" +
  467.                                 "Rank: " + userinfo[0]['rank'] + "\r\n" +
  468.                                 "PP: " + userinfo[0]['pp'] + "\r\n" +
  469.                                 "Score: " + userinfo[0]['score'] + "\r\n\r\n" +
  470.  
  471.                                 "**" + userinfo[1]['beatmap_id'] + "**\r\n" +
  472.                                 "Rank: " + userinfo[1]['rank'] + "\r\n" +
  473.                                 "PP: " + userinfo[1]['pp'] + "\r\n" +
  474.                                 "Score: " + userinfo[1]['score'] + "\r\n\r\n" +
  475.  
  476.                                 "**" + userinfo[2]['beatmap_id'] + "**\r\n" +
  477.                                 "Rank: " + userinfo[2]['rank'] + "\r\n" +
  478.                                 "PP: " + userinfo[2]['pp'] + "\r\n" +
  479.                                 "Score: " + userinfo[2]['score'] + "\r\n\r\n" +
  480.                                 "**" + userinfo[3]['beatmap_id'] + "**\r\n" +
  481.                                 "Rank: " + userinfo[3]['rank'] + "\r\n" +
  482.                                 "PP: " + userinfo[3]['pp'] + "\r\n" +
  483.                                 "Score: " + userinfo[3]['score'] + "\r\n\r\n" +
  484.                                 "**" + userinfo[4]['beatmap_id'] + "**\r\n" +
  485.                                 "Rank: " + userinfo[4]['rank'] + "\r\n" +
  486.                                 "PP: " + userinfo[4]['pp'] + "\r\n" +
  487.                                 "Score: " + userinfo[4]['score'] + "\r\n\r\n"
  488.  
  489.                                 , true)
  490.  
  491.                             m.edit({ embed });
  492.                             //console.log({ embed })
  493.  
  494.  
  495.                         } else {
  496.  
  497.  
  498.                             var currentuser = JSON.parse(data);
  499.                             var ppdifference = parseFloat(currentuser['actualpp'])
  500.                             ppdifference = parseFloat(write_to_embed['pp_raw']) - ppdifference
  501.                             console.log(ppdifference)
  502.                             console.log("Pseudo: " + pseudo_osu +
  503.                                 "\r\n" + write_to_embed['pp_raw'])
  504.                             currentuser['actualpp'] = write_to_embed['pp_raw']
  505.                             fs.writeFile(checkosu_id, JSON.stringify(currentuser), function (err) {
  506.  
  507.                             })
  508.  
  509.                             const embed = new Discord.RichEmbed()
  510.                                 .setAuthor(write_to_embed["username"], "https://a.ppy.sh/" + write_to_embed['user_id'] + "?.jpg")
  511.                                 /*
  512.                                  * Alternatively, use "#00AE86", [0, 174, 134] or an integer number.
  513.                                  */
  514.                                 .setColor(0x00AE86)
  515.                                 .setDescription("**PP:** " + write_to_embed['pp_raw'] + "\r\n" +
  516.                                 "**PP gagnés:** " + ppdifference + " \r\n" +
  517.                                 "**Playcount:** " + write_to_embed['playcount'] + "\r\n" +
  518.                                 "**Rank National:** #" + write_to_embed['pp_country_rank'] + " " + write_to_embed['country'] + "\r\n" +
  519.                                 "**Rank Global:** #" + write_to_embed['pp_rank']
  520.  
  521.                                 )
  522.                                 //.setFooter("This is the footer text, it can hold 2048 characters", "http://i.imgur.com/w1vhFSR.png")
  523.                                 //.setImage("http://i.imgur.com/yVpymuV.png")
  524.                                 .setThumbnail("https://a.ppy.sh/" + write_to_embed['user_id'] + "?.jpg")
  525.                                 /*
  526.                                  * Takes a Date object, defaults to current date.
  527.                                  */
  528.                                 //.setTimestamp()
  529.                                 .setURL("https://osu.ppy.sh/u/" + write_to_embed['user_id'])
  530.                                 .addField("TOP 5 PP:",
  531.                                 "**" + userinfo[0]['beatmap_id'] + "**\r\n" +
  532.                                 "Rank: " + userinfo[0]['rank'] + "\r\n" +
  533.                                 "PP: " + userinfo[0]['pp'] + "\r\n" +
  534.                                 "Score: " + userinfo[0]['score'] + "\r\n\r\n" +
  535.  
  536.                                 "**" + userinfo[1]['beatmap_id'] + "**\r\n" +
  537.                                 "Rank: " + userinfo[1]['rank'] + "\r\n" +
  538.                                 "PP: " + userinfo[1]['pp'] + "\r\n" +
  539.                                 "Score: " + userinfo[1]['score'] + "\r\n\r\n" +
  540.  
  541.                                 "**" + userinfo[2]['beatmap_id'] + "**\r\n" +
  542.                                 "Rank: " + userinfo[2]['rank'] + "\r\n" +
  543.                                 "PP: " + userinfo[2]['pp'] + "\r\n" +
  544.                                 "Score: " + userinfo[2]['score'] + "\r\n\r\n" +
  545.                                 "**" + userinfo[3]['beatmap_id'] + "**\r\n" +
  546.                                 "Rank: " + userinfo[3]['rank'] + "\r\n" +
  547.                                 "PP: " + userinfo[3]['pp'] + "\r\n" +
  548.                                 "Score: " + userinfo[3]['score'] + "\r\n\r\n" +
  549.                                 "**" + userinfo[4]['beatmap_id'] + "**\r\n" +
  550.                                 "Rank: " + userinfo[4]['rank'] + "\r\n" +
  551.                                 "PP: " + userinfo[4]['pp'] + "\r\n" +
  552.                                 "Score: " + userinfo[4]['score'] + "\r\n\r\n"
  553.  
  554.                                 , true)
  555.  
  556.                             m.edit({ embed });
  557.                             console.log({ embed })
  558.  
  559.                         }
  560.                     })
  561.                 }).catch(function (error) {
  562.  
  563.                     m.edit("Création impossible. Avez-vous entré un lien valide ?");
  564.  
  565.                 })
  566.  
  567.                 //Fs end
  568.  
  569.             });
  570.         }
  571.         printuserbest(username);
  572.     }
  573.     //AFFICHAGE /BEATMAP/ (:b)
  574.     if ((message.content.startsWith('https://osu.ppy.sh/b/')) || message.content.startsWith('https://osu.ppy.sh/beatmapsets')) {
  575.         var newmessages2 = "";
  576.         var varmode = "0";
  577.         var modename = "osu";
  578.         var texts0 = "";
  579.         var texts1 = "";
  580.         if (message.content.startsWith('https://osu.ppy.sh/b/')) {
  581.  
  582.             var newmessages_old = message.content.replace('https://osu.ppy.sh/b/', '');
  583.             console.log("test: " + newmessages_old);
  584.  
  585.             if (newmessages_old.indexOf("&m=0") || newmessages_old.indexOf("?m=0") > -1) {
  586.  
  587.                 newmessages2 = newmessages_old.replace("&m=0", "");
  588.             } else if (newmessages_old.indexOf("&m=1") || newmessages_old.indexOf("?m=1") > -1) {
  589.  
  590.                 newmessages2 = newmessages_old.replace("&m=1", "");
  591.             } else if (newmessages_old.indexOf("&m=2") || newmessages_old.indexOf("?m=2") > -1) {
  592.  
  593.                 newmessages2 = newmessages_old.replace("&m=2", "");
  594.             } else if (newmessages_old.indexOf("&m=3") || newmessages_old.indexOf("?m=3") > -1) {
  595.  
  596.                 newmessages2 = newmessages_old.replace("&m=3", "");
  597.             } else {
  598.                 newmessages2 = newmessages_old;
  599.  
  600.             }
  601.         }
  602.         if (message.content.startsWith('https://osu.ppy.sh/beatmapsets/')) {
  603.  
  604.             var newmessages_old = message.content.replace('https://osu.ppy.sh/beatmapsets', '');
  605.  
  606.             var newmessages2 = newmessages_old;
  607.  
  608.             newmessages2 = newmessages2.split('/')[3];
  609.             if (newmessages2 == undefined) {
  610.  
  611.                 var newmessages2 = newmessages_old;
  612.                 newmessage2 = newmessages2.split('/')[2];
  613.             }
  614.         }
  615.         console.log(newmessages2);
  616.         // console.log("mode " + varmode);
  617.         osu.beatmaps.getByBeatmapId(newmessages2).then(function (result) {
  618.             // https://assets.ppy.sh//beatmaps/532713/covers/cover.jpg
  619.  
  620.             try {
  621.                 //  console.log(result);
  622.  
  623.  
  624.                 var beatmapinfodata = result[0];
  625.                 console.log(beatmapinfodata['difficultyrating'])
  626.                 var diffsize = beatmapinfodata['difficultyrating'];
  627.                 var maxlenghts = "xxxx";
  628.                 var mapmode = beatmapinfodata['mode'];
  629.                 var lenghttotal = beatmapinfodata['total_length'];
  630.                 lenghttotal = convert(lenghttotal);
  631.                 var newtimetext = '';
  632.                 if (lenghttotal[0] != 0) {
  633.  
  634.                 } else {
  635.  
  636.                 }
  637.                 if (lenghttotal[1] != 0) {
  638.                     newtimetext = "" + lenghttotal["minutes"];
  639.                 } else {
  640.  
  641.                 }
  642.                 if (lenghttotal[2] != 0) {
  643.                     newtimetext = newtimetext + ":" + lenghttotal["seconds"];
  644.                 } else {
  645.  
  646.                 }
  647.  
  648.                 console.log(lenghttotal);
  649.  
  650.                 console.log(beatmapinfodata['title']);
  651.  
  652.                 const embed = new Discord.RichEmbed()
  653.                     .setTitle(beatmapinfodata['artist'] + " - " + beatmapinfodata['title'], "https://b.ppy.sh/thumb/" + beatmapinfodata['beatmapset_id'] + "l.jpg")
  654.                     .setAuthor("Wesh Wesh canne à pêche")
  655.                     /*
  656.                      * Alternatively, use "#00AE86", [0, 174, 134] or an integer number.
  657.                      */
  658.                     .setColor(0x00AE86)
  659.                     .setDescription("Mappeur: " + beatmapinfodata['creator'] + "\r\n" +
  660.  
  661.                     "Star rating:  " + diffsize.substring(0, 4) + "\r\n" +
  662.                     "BPM: " + beatmapinfodata['bpm'] + "\r\n" +
  663.                     "Durée: " + newtimetext)
  664.  
  665.                     .setThumbnail("https://b.ppy.sh/thumb/" + beatmapinfodata['beatmapset_id'] + "l.jpg")
  666.  
  667.  
  668.                     .setURL("https://osu.ppy.sh/b/" + beatmapinfodata['beatmap_id'])
  669.  
  670.                 message.channel.send({ embed });
  671.  
  672.  
  673.  
  674.  
  675.  
  676.  
  677.             } catch (err) {
  678.                 console.log(err)
  679.  
  680.             }
  681.  
  682.         });
  683.  
  684.     }
  685.  
  686.  
  687.     //AFFICHAGE /BEATMAP/ (:s)
  688.     if ((message.content.startsWith('https://osu.ppy.sh/s/'))) {
  689.         message.reply("Le bot n'accepte pour le moment uniquement la difficulté des maps séléctionnées.")
  690.     }
  691.  
  692.  
  693.  
  694.     //Commande venant de /commands
  695.     if (message.content.startsWith('!')) {
  696.         const testFolder = './commands/';
  697.         const fs = require('fs');
  698.         var commandlist = "";
  699.  
  700.         fs.readdir(testFolder, (err, files) => {
  701.             files.forEach(file => {
  702.                 //  console.log(file);
  703.                 var commandlist = file.replace('.json', '');
  704.                 if (commandlist == message.content) {
  705.                     const fs2 = require('fs');
  706.                     fs2.readFile('./commands/' + file, function (err, data) {
  707.                         // if(err) throw err;
  708.                         message.channel.send(data.toString())
  709.                     });
  710.                 }
  711.             });
  712.         })
  713.     }
  714.     if (message.content.startsWith('!osu recent')) {
  715.         const testFolder = './user/' + message.author.id;
  716.         const fs = require('fs');
  717.  
  718.         function mapdata(recentscores) {
  719.             //message.channel.send("ok") .replace(/\B(?=(\d{3})+(?!\d))/g, " ")
  720.             var mapid = recentscores[0]['beatmap_id']
  721.             var combo0 = parseInt(recentscores[0]['countmiss'])
  722.             var combo50 = parseInt(recentscores[0]['count50'])
  723.             var combo100 = parseInt(recentscores[0]['count100'])
  724.             var combo300 = parseInt(recentscores[0]['count300'])
  725.             var accuracy = 100 * (((combo0) * 0 + (combo50) * 50 + (combo100) * 100 + (combo300) * 300) / (300 * (combo0 + combo50 + combo100 + combo300)))
  726.             var mapcombo = recentscores[0]['maxcombo']
  727.             var mapscore = recentscores[0]['score']
  728.             var maprank = recentscores[0]['rank']
  729.             var mods = recentscores[0]['enabled_mods']
  730.             var mapobject = [mapid, mapcombo, "", ""]
  731.             var mapdate = recentscores[0]['date']
  732.             var newrank;
  733.             getmods(parseInt(mods))
  734.             if (maprank == "F") {
  735.                 newrank = "Non soumis"
  736.  
  737.             } else {
  738.                 newrank = maprank
  739.             }
  740.             osu.beatmaps.getByBeatmapId(mapobject[0], 0).then(function (mapinfos) {
  741.                 function precisionRound(number, precision) {
  742.                     var factor = Math.pow(10, precision);
  743.                     return Math.round(number * factor) / factor;
  744.                 }
  745.  
  746.                 var beatmap = mapinfos[0]
  747.                 //message.reply(beatmap['artist'] + " Combo: " + mapcombo+"/" + beatmap['max_combo'])
  748.                // console.log(mapinfos)
  749.                 const embed = new Discord.RichEmbed()
  750.                     .setTitle(beatmap['artist'] + " - " + beatmap['title'])
  751.                     .setThumbnail("https://b.ppy.sh/thumb/" + beatmap["beatmapset_id"] + ".jpg")
  752.                     .setDescription(
  753.                     "**Score**: " + mapscore.replace(/\B(?=(\d{3})+(?!\d))/g, " ") +
  754.                     "\r\n**Combo**: " + mapcombo + "**/**" + beatmap['max_combo'] +
  755.                     "\r\n**Accuracy**: " + precisionRound(accuracy, 2) + "%" +
  756.                     "\r\n**Mods**: " + "Temporairement désactivé" +
  757.                     //  "\r\n**Mods**: " + mapcombo +"**/**" + beatmap['max_combo'] +
  758.                     "\r\n**Rank**: " + newrank).setURL("https://osu.ppy.sh/b/" + beatmap["beatmap_id"])
  759.                 message.channel.send({ embed })
  760.  
  761.             })
  762.  
  763.  
  764.         }
  765.  
  766.         fs.readFile(testFolder + '.json', "utf8", function (err, data) {
  767.             if (err) {
  768.                 message.reply("Vous n'avez pas ajouté votre pseudo. Faites !osu add PSEUDO")
  769.             } else {
  770.  
  771.  
  772.                 console.log(data)
  773.                 var userdata = JSON.parse(data)
  774.                 //console.log(userdata)
  775.                 osu.user.getRecent(userdata["osuname"], 4, 10).then(function (recentscores) {
  776.                     //   osu.user.getRecent("-akeno-", 4,10).then(function (recentscores){
  777.                     console.log(recentscores[0])
  778.  
  779.                     if (recentscores[0] == undefined) {
  780.                         message.reply("Vous devez avoir au moins joué une map QUALIFIED/LOVED/RANKED ces 24 dernières heures.")
  781.                     } else {
  782.                         if (userdata['date'] == undefined | userdata['date'] != recentscores[0]['date']) {
  783.                             userdata['date'] = recentscores[0]['date']
  784.                             if (recentscores[0]['rank'] == "F") {
  785.                                 //message.reply("Information: Le score est faux. La map n'a pas été pass.")
  786.                                 mapdata(recentscores);
  787.                                 fs.writeFile(testFolder + ".json", JSON.stringify(userdata))
  788.  
  789.  
  790.                             } else {
  791.                                 userdata['date'] = recentscores[0]['date']
  792.                                 fs.writeFile(testFolder + ".json", JSON.stringify(userdata))
  793.                                 message.reply("Nouveau score:")
  794.                                 mapdata(recentscores);
  795.                             }
  796.  
  797.                         } else {
  798.                             userdata['date'] = recentscores[0]['date']
  799.  
  800.                             mapdata(recentscores);
  801.                             fs.writeFile(testFolder + ".json", JSON.stringify(userdata))
  802.  
  803.  
  804.                         }
  805.                     }
  806.  
  807.                 })
  808.             }
  809.         })
  810.  
  811.     }
  812.     //Osu get recent scores
  813.  
  814.     // Ajouter les roles selon le type de mode
  815.     if (message.guild.name == "Osu!Nawak") {
  816.         if (message.content == '!std') {
  817.             var allowedRoleJ = message.guild.roles.find("name", "Standard");
  818.             message.member.addRole(allowedRoleJ.id);
  819.             message.reply("Role modifié")
  820.         }
  821.         if (message.content == '!rstd') {
  822.             var allowedRoleJ = message.guild.roles.find("name", "Standard");
  823.             message.member.removeRole(allowedRoleJ.id);
  824.             message.reply("Role modifié")
  825.         }
  826.         if (message.content == '!ctb') {
  827.             var allowedRoleJ = message.guild.roles.find("name", "Catch the beat");
  828.             message.member.addRole(allowedRoleJ.id);
  829.             message.reply("Role modifié")
  830.         }
  831.         if (message.content == '!rctb') {
  832.             var allowedRoleJ = message.guild.roles.find("name", "Catch the beat");
  833.             message.member.removeRole(allowedRoleJ.id);
  834.             message.reply("Role modifié")
  835.         }
  836.  
  837.         if (message.content == '!taiko') {
  838.             var allowedRoleJ = message.guild.roles.find("name", "Taiko");
  839.             message.member.addRole(allowedRoleJ.id);
  840.             message.reply("Role modifié")
  841.         }
  842.         if (message.content == '!rtaiko') {
  843.             var allowedRoleJ = message.guild.roles.find("name", "Taiko");
  844.             message.member.removeRole(allowedRoleJ.id);
  845.             message.reply("Role modifié")
  846.         }
  847.  
  848.         if (message.content == '!mania') {
  849.             var allowedRoleJ = message.guild.roles.find("name", "Mania");
  850.             message.member.addRole(allowedRoleJ.id);
  851.             message.reply("Role modifié")
  852.         }
  853.         if (message.content == '!rmania') {
  854.             var allowedRoleJ = message.guild.roles.find("name", "Mania");
  855.             message.member.removeRole(allowedRoleJ.id);
  856.             message.reply("Role modifié")
  857.         }
  858.  
  859.     }
  860.  
  861.  
  862.     if (message.content.startsWith("!roll")) {
  863.  
  864.      
  865.            
  866.                 function getRandomInt(max) {
  867.                     return Math.floor(Math.random() * Math.floor(max));
  868.                 }
  869.                 var rollresult = getRandomInt(100);
  870.                 rolls[i];
  871.  
  872.            
  873.                      
  874.                         message.channel.send(message.author.username + ": "+rollresult);
  875.            
  876.                    
  877.                
  878.            
  879.        
  880.  
  881.     }
  882.     // Vérifier si ils sont bien dans le bon channel pour écrire une commande
  883.     var currentid2 = message.channel.name
  884.     if (currentid2 == allowedchannelroll) {
  885.  
  886.         if (message.content === '!saveroll') {
  887.             var allowedRole = message.guild.roles.find("name", "botuse");
  888.  
  889.             if (message.member.roles.has(allowedRole.id)) {
  890.  
  891.                 var fs = require('fs');
  892.  
  893.                 var filename = 'rolls.json';
  894.                 var str = rolls[0] + "\n" + rolls[1] + "\n" + rolls[2] + "\n" + rolls[3] + "\n" + rolls[4] + "\n" + rolls[5] + "\n" + rolls[6] + "\n" + rolls[7] + "\n" + rolls[8] + "\n" + rolls[9];
  895.  
  896.                 fs.writeFile(filename, str, function (err) {
  897.                     if (err) {
  898.                         console.log(err)
  899.                     } else {
  900.                         console.log('File written!');
  901.                     }
  902.                 });
  903.  
  904.                 message.reply("Rolls sauvegardés.");
  905.  
  906.             }
  907.             else {
  908.                 // message.reply("Vous n'avez pas le droit.");
  909.             }
  910.         }
  911.  
  912.         if (message.content === '!loadroll') {
  913.             var allowedRole = message.guild.roles.find("name", "botuse");
  914.  
  915.             if (message.member.roles.has(allowedRole.id)) {
  916.  
  917.  
  918.                 var fs = require('fs');
  919.                 fs.readFile('rolls.json', function (err, data) {
  920.                     if (err) throw err;
  921.                     rolls = data.toString().split("\n");
  922.  
  923.                     for (i in rolls) {
  924.                         console.log(rolls[i]);
  925.  
  926.                     }
  927.                 });
  928.                 message.reply("Informations chargés.");
  929.  
  930.  
  931.             }
  932.  
  933.             else {
  934.                 message.reply("Vous n'avez pas le droit.");
  935.             }
  936.         }
  937.  
  938.  
  939.  
  940.  
  941.  
  942.         // Commande de participation
  943.  
  944.         if (message.content === '!proll') {
  945.  
  946.             slot = 0;
  947.             var currentplayer = message.author.username;
  948.  
  949.             var checkpseudo = (joueurs.indexOf(currentplayer) > -1);
  950.             console.log(checkpseudo);
  951.  
  952.             for (var i = 0; i < 10; i++) {
  953.                 if (i == 10) {
  954.                     slot = 0;
  955.                 } else {
  956.                     function getRandomInt(max) {
  957.                         return Math.floor(Math.random() * Math.floor(max));
  958.                     }
  959.                     var rollresult = getRandomInt(100);
  960.                     rolls[i];
  961.                     joueurs[i];
  962.                     if (joueurs[i] == currentplayer) {
  963.                         if (rolls[i] === "Vide" && slot == 0) {
  964.                             var slot = 1;
  965.                             rolls[i] = rollresult;
  966.                             message.reply("**[ - " + rollresult + " - ]**");
  967.                             var allowedRoleJ = message.guild.roles.find("name", "Joueurs");
  968.                             message.member.addRole(allowedRoleJ.id);
  969.                         }
  970.                     }
  971.                 }
  972.             }
  973.  
  974.         }
  975.  
  976.  
  977.     }
  978.     if (message.content == '!help') {
  979.         const testFolder = './commands/';
  980.         const fs = require('fs');
  981.         var allcommands = "";
  982.         var commandlist = "";
  983.  
  984.         message.channel.send({
  985.             "embed": {
  986.  
  987.  
  988.                 "fields": [
  989.                     {
  990.                         "name": "!std !taiko !mania !ctb",
  991.                         "value": "Ajoute votre mode de jeu préféré à vos rôles"
  992.                     },
  993.                     {
  994.                         "name": "!osu",
  995.                         "value": "Affiche une liste d'informations sur les statistiques"
  996.                     },
  997.                     {
  998.                         "name": "Les spoils (en privé uniquement):",
  999.                         "value": "**!spoil x :** remplacez x par un chiffre, affiche le spoil.\r\n" +
  1000.                         "**!aspoil *votre message* ** crée un spoil avec votre message et indique le chiffre.\r\n" +
  1001.                         "**!spoils** Affiche le nombre de spoils disponible."
  1002.                     },
  1003.                     {
  1004.                         "name": "Liens osu tel que https://osu.ppy.sh/u/Ael",
  1005.                         "value": "Affiche les informations sur un joueur"
  1006.                     }
  1007.                 ]
  1008.             }
  1009.         }
  1010.         )
  1011.         fs.readdir(testFolder, (err, files) => {
  1012.  
  1013.             files.forEach(file => {
  1014.                 console.log(file);
  1015.                 var commandlist = file.replace('.json', '');
  1016.                 allcommands = allcommands + "\r\n" + commandlist.toString();
  1017.  
  1018.  
  1019.             });
  1020.  
  1021.             /*  message.channel.send("Commandes liés au bot: \r\n```!std !taiko !mania !ctb Ajoute votre mode de jeu préféré à vos rôles``` "+
  1022.           "\r\n```!osu Affiche une liste d'informations sur les statistiques```" +
  1023.       "\r\n```Liens osu tel que https://osu.ppy.sh/u/Ael : Affiche les informations sur un joueur```" );*/
  1024.  
  1025.             message.channel.send("Liste des commandes personnalisés:```" + allcommands + "```");
  1026.         })
  1027.  
  1028.  
  1029.     }
  1030.  
  1031.     var currentid = message.channel.name
  1032.     if (currentid == allowedchannel) {
  1033.  
  1034.  
  1035.  
  1036.         // PLAYERS SPECIFICS COMMANDS
  1037.         //Afficher les documents liés au tournoi ici.
  1038.         if (message.content === '!docs') {
  1039.             var allowedRolePlayer = message.guild.roles.find("name", "Joueurs");
  1040.             if (message.member.roles.has(allowedRolePlayer.id)) {
  1041.                 message.channel.send("Aucun document n'est disponible pour le moment.")
  1042.  
  1043.             } else {
  1044.  
  1045.                 message.reply("Vous devez être un joueur pour utiliser cette commande.")
  1046.             }
  1047.         }
  1048.  
  1049.  
  1050.  
  1051.  
  1052.         // Afficher la liste des inscrits
  1053.  
  1054.  
  1055.  
  1056.         // SAUVEGARDER
  1057.         if (message.content === '!save') {
  1058.             var allowedRole = message.guild.roles.find("name", "botuse");
  1059.  
  1060.             if (message.member.roles.has(allowedRole.id)) {
  1061.  
  1062.                 var fs = require('fs');
  1063.  
  1064.                 var filename = 'players.json';
  1065.                 var str = joueurs[0] + "\n" + joueurs[1] + "\n" + joueurs[2] + "\n" + joueurs[3] + "\n" + joueurs[4] + "\n" + joueurs[5] + "\n" + joueurs[6] + "\n" + joueurs[7] + "\n" + joueurs[8] + "\n" + joueurs[9];
  1066.  
  1067.                 fs.writeFile(filename, str, function (err) {
  1068.                     if (err) {
  1069.                         console.log(err)
  1070.                     } else {
  1071.                         console.log('File written!');
  1072.                     }
  1073.                 });
  1074.  
  1075.                 message.reply("Les joueurs sont définitivements inscrits.");
  1076.  
  1077.             }
  1078.             else {
  1079.                 message.reply("Vous n'avez pas le droit.");
  1080.             }
  1081.         }
  1082.  
  1083.  
  1084.  
  1085.  
  1086.         //Test
  1087.  
  1088.  
  1089.         //liste twitch
  1090.  
  1091.  
  1092.         // Liste des commandes customs
  1093.  
  1094.         //Ajouter une commande
  1095.         if (message.content.startsWith('!addcom')) {
  1096.             var allowedRole = message.guild.roles.find("name", "botuse");
  1097.  
  1098.             if (message.member.roles.has(allowedRole.id) && (currentid == allowedchannel)) {
  1099.                 var newmessage = message.content.replace('!addcom ', '');
  1100.                 var newcontentmessage = "";
  1101.                 if (newmessage.startsWith('!')) {
  1102.  
  1103.                     newmessage.replace(/ +$/, "");
  1104.                     newmessage = newmessage.split(' ');
  1105.                     var messagecommandname = newmessage[0];
  1106.                     for (var i = 1; i < 16; i++) {
  1107.                         if (newmessage[i] == null) {
  1108.  
  1109.                         } else {
  1110.                             newcontentmessage = newcontentmessage + " " + newmessage[i];
  1111.                         }
  1112.  
  1113.                     }
  1114.                     message.channel.send("La commande se nommant " + messagecommandname + " déscrivant " + newcontentmessage + " a bien été ajouté.");
  1115.  
  1116.  
  1117.  
  1118.                     var fs = require('fs');
  1119.  
  1120.                     var filename = "./commands/" + messagecommandname + '.json';
  1121.                     var str = newcontentmessage;
  1122.  
  1123.                     fs.writeFile(filename, str, function (err) {
  1124.                         if (err) {
  1125.                             console.log(err)
  1126.                         } else {
  1127.                             console.log('File written!');
  1128.                         }
  1129.                     });
  1130.  
  1131.  
  1132.  
  1133.                 } else {
  1134.  
  1135.                     message.reply("La commande est impossible à ajouter si vous n'avez pas de ! en premier.")
  1136.  
  1137.                 }
  1138.  
  1139.             }
  1140.  
  1141.         }
  1142.  
  1143.         //Supprimer une commande
  1144.         if (message.content.startsWith('!delcom')) {
  1145.             var allowedRole = message.guild.roles.find("name", "botuse");
  1146.  
  1147.             if (message.member.roles.has(allowedRole.id) && (currentid == allowedchannel)) {
  1148.                 var newmessage = message.content.replace('!delcom ', '');
  1149.                 var newcontentmessage = "";
  1150.                 if (newmessage.startsWith('!')) {
  1151.  
  1152.                     newmessage.replace(/ +$/, "");
  1153.                     newmessage = newmessage.split(' ');
  1154.                     var messagecommandname = newmessage[0];
  1155.  
  1156.  
  1157.  
  1158.                     var fs = require('fs');
  1159.  
  1160.                     var filename = "./commands/" + messagecommandname + '.json';
  1161.                     var str = newcontentmessage;
  1162.                     console.log(filename);
  1163.                     fs.exists(filename, function (exists) {
  1164.                         if (exists) {
  1165.                             //Show in green
  1166.                             message.reply("La commande a bien été supprimé.")
  1167.                             fs.unlink(filename);
  1168.                         } else {
  1169.                             //Show in red
  1170.                             message.reply("La commande n'existe pas.")
  1171.                         }
  1172.                     });
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.                 } else {
  1179.  
  1180.  
  1181.  
  1182.                 }
  1183.  
  1184.             }
  1185.  
  1186.         }
  1187.  
  1188.  
  1189.         //Charger la liste des joueurs
  1190.         if (message.content === '!load') {
  1191.             var allowedRole = message.guild.roles.find("name", "botuse");
  1192.  
  1193.             if (message.member.roles.has(allowedRole.id) && (currentid == allowedchannel)) {
  1194.  
  1195.  
  1196.                 var fs = require('fs');
  1197.                 fs.readFile('players.json', function (err, data) {
  1198.                     if (err) throw err;
  1199.                     joueurs = data.toString().split("\n");
  1200.  
  1201.                     for (i in joueurs) {
  1202.                         console.log(joueurs[i]);
  1203.  
  1204.                     }
  1205.                 });
  1206.                 message.reply("Informations chargés.");
  1207.  
  1208.  
  1209.             }
  1210.  
  1211.             else {
  1212.                 message.reply("Vous n'avez pas le droit.");
  1213.             }
  1214.         }
  1215.  
  1216.  
  1217.  
  1218.  
  1219.         //Activer les Inscriptions
  1220.         if (message.content === '!start' && allowedsub == false) {
  1221.             var allowedRole = message.guild.roles.find("name", "botuse");
  1222.  
  1223.             if (message.member.roles.has(allowedRole.id)) {
  1224.  
  1225.                 allowedsub = true;
  1226.                 message.channel.send("Les inscriptions sont ouvertes ! Faites !participer pour entrer.");
  1227.             } else {
  1228.  
  1229.                 message.reply("Vous n'avez pas les droits.!");
  1230.             }
  1231.         }
  1232.  
  1233.  
  1234.         //Désactiver les inscriptions
  1235.         if (message.content === '!stop' && allowedsub == true) {
  1236.             var allowedRole = message.guild.roles.find("name", "botuse");
  1237.  
  1238.             if (message.member.roles.has(allowedRole.id)) {
  1239.                 allowedsub = false;
  1240.                 message.channel.send("Les inscriptions sont maintenant fermés.");
  1241.             } else {
  1242.  
  1243.                 message.reply("Vous n'avez pas les droits.!");
  1244.             }
  1245.         }
  1246.  
  1247.  
  1248.         //Inscriptions désactivés
  1249.         if (message.content === '!participer' && allowedsub == false) {
  1250.             message.reply("Les inscriptions sont actuellement désactivés.");
  1251.         }
  1252.         if (message.content === '!ragequit' && allowedsub == false) {
  1253.             message.reply("Vous ne pouvez pas quitter lorsque les inscriptions sont fermés. Contactez un admin.");
  1254.         }
  1255.  
  1256.  
  1257.         // Commande de participation
  1258.  
  1259.         if (message.content === '!participer' && allowedsub == true) {
  1260.  
  1261.             slot = 0;
  1262.             var currentplayer = message.author.username;
  1263.  
  1264.             var checkpseudo = (joueurs.indexOf(currentplayer) > -1);
  1265.             console.log(checkpseudo);
  1266.  
  1267.             for (var i = 0; i < 10; i++) {
  1268.                 if (i == 10) {
  1269.                     slot = 0;
  1270.                 } else {
  1271.                     joueurs[i];
  1272.                     if (joueurs[i] === "Vide" && slot == 0 && checkpseudo == false) {
  1273.                         var slot = 1;
  1274.                         joueurs[i] = currentplayer;
  1275.                         message.reply("Vous êtes inscrits en tant que " + currentplayer + ".");
  1276.                         var allowedRoleJ = message.guild.roles.find("name", "Joueurs");
  1277.                         message.member.addRole(allowedRoleJ.id);
  1278.                     }
  1279.  
  1280.                 }
  1281.             }
  1282.  
  1283.         }
  1284.  
  1285.  
  1286.         //Commande de désincription
  1287.  
  1288.         if (message.content === '!ragequit' && allowedsub == true) {
  1289.             var currentplayer = message.author.username;
  1290.             var slot = 0;
  1291.             var checkpseudo = (joueurs.indexOf(currentplayer) > -1);
  1292.             console.log(checkpseudo);
  1293.  
  1294.             for (var i = 0; i < 10; i++) {
  1295.  
  1296.                 if (i == 10) {
  1297.                     var slot = 0;
  1298.  
  1299.                 } else {
  1300.  
  1301.                     if (joueurs[i] === currentplayer && slot == 0) {
  1302.                         var slot = 1;
  1303.                         joueurs[i] = "Vide";
  1304.                         message.reply("Vous vous êtes retiré.");
  1305.                     }
  1306.  
  1307.                     var allowedRoleJ = message.guild.roles.find("name", "Joueurs");
  1308.                     message.member.removeRole(allowedRoleJ.id);
  1309.                 }
  1310.  
  1311.             }
  1312.  
  1313.  
  1314.  
  1315.         }
  1316.  
  1317.  
  1318.  
  1319.         //Commande d'affichage des tournois
  1320.         if (message.content === '!tournois') {
  1321.         }
  1322.  
  1323.         if (message.content === "") {
  1324.  
  1325.  
  1326.  
  1327.         }
  1328.  
  1329.     }
  1330.  
  1331.  
  1332.     // Fin de client.on('message', message => {
  1333.  
  1334. });
  1335.  
  1336. //  Récupération de L'API key de discord
  1337. var fspass = require('fs');
  1338. fspass.readFile('pswd.config', function (err, data) {
  1339.     if (err) throw err;
  1340.     fspass2 = data.toString();
  1341.  
  1342.     client.login(fspass2);
  1343. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement