const Discord = require(`discord.js`); const client = new Discord.Client(); const token = `TOKEN`; const prefix = `+`; const antilink = false; const discordlinkonly = false; const warnuserslist = new Object(); const warnlimit = 3; const warnactions = `mute`; // mute;durée | kick | ban;durée function USERISWARN(id) { if (!warnuserslist[id]) { return false; } else if (warnuserslist[id]) { return true; }; }; function WARNUSER(message) { message.delete().then(async (msg) => { if (!USERISWARN(msg.member.id)) warnuserslist[msg.member.id] = 1; else if (USERISWARN(msg.member.id)) warnuserslist[msg.member.id] += 1; if (warnuserslist[msg.member.id] >= warnlimit) { const actions = [`mute`, `kick`, `ban`]; // KICK ET BAN NON TESTER !!! if (!actions.some(action => warnactions.toLocaleLowerCase().includes(action))) return; else if (actions.some(action => warnactions.toLocaleLowerCase().includes(action)) && warnactions.toLocaleLowerCase().includes(`mute`)) { let muteRole = msg.guild.roles.cache.find(x => x.name == `Muet`); if (!muteRole) { try { muteRole = await msg.guild.roles.create({ data: { name: `Muet`, color: `#514f48`, hoist: true, permissions: [] } }); msg.guild.channels.cache.forEach(async (channel) => { await channel.overwritePermissions([{ id: muteRole.id, deny: [`SEND_MESSAGES`, `SEND_TTS_MESSAGES`, `ATTACH_FILES`, `ADD_REACTIONS`, `SPEAK`, `STREAM`] }]); }); } catch (error) { if (msg.guild.roles.cache.find(x => x.name == `Muet`)) msg.guild.roles.cache.find(x => x.name == `Muet`).delete(); return console.error(error); }; }; if (!msg.member.roles.cache.has(muteRole.id)) { console.log(`${msg.member.displayName} est muet !`); if ((/^-?\d+$/.test(warnactions.toLocaleLowerCase().split(`;`)[1]))) { msg.member.roles.add(muteRole); return setTimeout(() => { console.log(`${msg.member.displayName} n'est plus muet !`); return msg.member.roles.remove(muteRole); }, warnactions.toLocaleLowerCase().split(`;`)[1] * 1000); } else return msg.member.roles.add(muteRole); }; } else if (actions.some(action => warnactions.toLocaleLowerCase().includes(action)) && warnactions.toLocaleLowerCase().includes(`kick`)) { console.log(`${msg.member.displayName} est kick !`); return msg.member.kick(); } else if (actions.some(action => warnactions.toLocaleLowerCase().includes(action)) && warnactions.toLocaleLowerCase().includes(`ban`)) { console.log(`${msg.member.displayName} est ban !`); if ((/^-?\d+$/.test(warnactions.toLocaleLowerCase().split(`;`)[1]))) { msg.guild.members.ban(msg.member.id); return setTimeout(() => { console.log(`${msg.member.displayName} n'est plus ban !`); return msg.guild.members.unban(msg.member.id); }, warnactions.toLocaleLowerCase().split(`;`)[1] * 1000); } else return msg.guild.members.ban(msg.member.id); }; }; }); }; client.on(`ready`, () => { console.log(`${client.user.username} est en ligne !`); }); client.on(`message`, async (message) => { if (message.author.bot || message.channel.type != `text`) return; const args = message.content.slice(prefix.length).trim().split(/ +/g); const command = args.shift().toLowerCase(); if (antilink == true) { const discordlink = [`discord.gg`, `discordapp.com/invite`, `canary.discord.com/invite`, `ptb.discord.com/invite`]; const matchesurl = message.content.toLocaleLowerCase().match(/(https?:\/\/[^\s]+)/g) ? message.content.toLocaleLowerCase().match(/(https?:\/\/[^\s]+)/g) : undefined; if (matchesurl ? discordlink.some(link => matchesurl.some(url => url.includes(link))) == true || discordlink.some(link => message.content.toLocaleLowerCase().includes(link)) && discordlinkonly == true : discordlink.some(link => message.content.toLocaleLowerCase().includes(link)) == true && discordlinkonly == true) return WARNUSER(message); else if (matchesurl && discordlinkonly == false) return WARNUSER(message); }; if (message.content.indexOf(prefix) != 0) return; if (command == `warn-delete`) { if (!message.member.hasPermission(`ADMINISTRATOR`)) { const embed = new Discord.MessageEmbed() .setColor(`#0099FF`) .setAuthor(message.author.username, message.author.displayAvatarURL({ dynamic: true })) .setTitle(`Vous n'avez pas les permissions !`) .setTimestamp() .setFooter(client.user.username, client.user.displayAvatarURL({ dynamic: true })); return message.channel.send(embed); }; let target = message.mentions.users.first() || message.author; if (USERISWARN(target.id)) { if (args[0] && (/^-?\d+$/.test(args[0]))) { if (args[0] > warnuserslist[target.id].length) { delete warnuserslist[target.id]; let muteRole = message.guild.roles.cache.find(x => x.name == `Muet`); if (message.member.roles.cache.has(muteRole.id)) message.member.roles.remove(muteRole); console.log(`${target.username} n'as plus de warn !`); const embed = new Discord.MessageEmbed() .setColor(`#0099FF`) .setAuthor(message.author.username, message.author.displayAvatarURL({ dynamic: true })) .setTitle(target.id == message.author.id ? `Vous n'avez plus de warn !` : `${target.username} n'as plus warn !`) .setTimestamp() .setFooter(client.user.username, client.user.displayAvatarURL({ dynamic: true })); return message.channel.send(embed); } else { warnuserslist[target.id] -= args[0]; console.log(`${target.username} à maintenant ${warnuserslist[target.id]} warn !`); const embed = new Discord.MessageEmbed() .setColor(`#0099FF`) .setAuthor(message.author.username, message.author.displayAvatarURL({ dynamic: true })) .setTitle(target.id == message.author.id ? `Vous avez maintenant ${warnuserslist[target.id]} warn !` : `${target.username} à maintenant ${warnuserslist[target.id]} warn !`) .setTimestamp() .setFooter(client.user.username, client.user.displayAvatarURL({ dynamic: true })); return message.channel.send(embed); }; } else { delete warnuserslist[target.id]; let muteRole = message.guild.roles.cache.find(x => x.name == `Muet`); if (message.member.roles.cache.has(muteRole.id)) message.member.roles.remove(muteRole); console.log(`${target.username} n'as plus de warn !`); const embed = new Discord.MessageEmbed() .setColor(`#0099FF`) .setAuthor(message.author.username, message.author.displayAvatarURL({ dynamic: true })) .setTitle(target.id == message.author.id ? `Vous n'avez plus de warn !` : `${target.username} n'as plus warn !`) .setTimestamp() .setFooter(client.user.username, client.user.displayAvatarURL({ dynamic: true })); return message.channel.send(embed); }; } else if (!USERISWARN(target.id)) { const embed = new Discord.MessageEmbed() .setColor(`#0099FF`) .setAuthor(message.author.username, message.author.displayAvatarURL({ dynamic: true })) .setTitle(target.id == message.author.id ? `Vous n'avez aucun warn !` : `${target.username} n'as aucun warn !`) .setTimestamp() .setFooter(client.user.username, client.user.displayAvatarURL({ dynamic: true })); return message.channel.send(embed); }; } else if (command == `warn-info`) { let target = message.mentions.users.first() || message.author; const embed = new Discord.MessageEmbed() .setColor(`#0099FF`) .setAuthor(message.author.username, message.author.displayAvatarURL({ dynamic: true })) .addField(`⚠️ • __Nombres de warn__`, `\`${warnuserslist[target.id] || `Aucun Warn`}\``) .setTimestamp() .setFooter(client.user.username, client.user.displayAvatarURL({ dynamic: true })); return message.channel.send(embed); } else if (command == `warn-help`) { // STATIQUE HELP const embed = new Discord.MessageEmbed() .setColor(`#0099FF`) .setAuthor(message.author.username, message.author.displayAvatarURL({ dynamic: true })) .addField(`🗑 • __warn-delete__`, `\`Supprime les warns d'un membre.\`\n__Utilisation:__ *[nombres de warn ou rien] [mention d'un membre ou rien]*\n***Note: une valeur supérieure au nombre de warn ou rien supprime tous les warns !***`) .addField(`❔ • __warn-info__`, `\`Affiche si un membre a un warn et combien il en a.\`\n__Utilisation:__ *[mention d'un membre ou rien]*`) .setTimestamp() .setFooter(client.user.username, client.user.displayAvatarURL({ dynamic: true })); return message.channel.send(embed); }; }); client.login(token);