├── keep_alive.js ├── events ├── invite │ ├── ready.js │ ├── inviteDelete.js │ └── inviteCreate.js ├── logs │ ├── voiceStateUpdate.js │ ├── voiceChannelJoin.js │ ├── voiceChannelLeave.js │ ├── voiceStreamingStart.js │ ├── voiceStreamingStop.js │ ├── messageDelete.js │ └── messageUpdate.js ├── client │ ├── ready.js │ ├── messageDelete.js │ ├── guildDelete.js │ ├── guildCreate.js │ └── message.js ├── gestion │ ├── guildMemberRemove.js │ ├── presenceUpdate.js │ ├── guildMemberAdd.js │ ├── ready.js │ └── message.js ├── rank │ ├── voiceChannelJoin.js │ └── voiceChannelLeave.js ├── rolemenu │ ├── messageReactionAdd.js │ ├── messageReactionremove.js │ └── clickButton.js ├── antiraid │ ├── webhookUpdate.js │ ├── guildBanAdd.js │ ├── guildMemberRemove.js │ ├── channelUpdate.js │ ├── guildMemberRoleAdd.js │ ├── roleCreate.js │ ├── guildMemberAdd.js │ ├── channelCreate.js │ └── roleDelete.js └── automod │ ├── messageUpdate.js │ └── message.js ├── README.md ├── config.json ├── commands ├── bot │ ├── theme.js │ ├── prefix.js │ ├── !eval.js │ ├── botinfo.js │ ├── server.js │ └── owner.js ├── gestion │ ├── raidlog.js │ ├── say.js │ ├── emoji.js │ ├── massrole.js │ ├── public.js │ └── wl.js ├── utilitaire │ ├── support.js │ ├── pic.js │ ├── invite.js │ ├── voice.js │ ├── ping.js │ ├── snipe.js │ ├── banner.js │ ├── userinfo.js │ ├── roleinfo.js │ ├── serverinfo.js │ ├── channelinfo.js │ ├── allbot.js │ ├── top.js │ ├── alladmin.js │ └── allbotadmin.js └── mods │ ├── unlock.js │ ├── addrole.js │ ├── lock.js │ ├── clear.js │ ├── derank.js │ ├── muterole.js │ ├── renew.js │ ├── unmute.js │ ├── unban.js │ ├── mutelist.js │ ├── banlist.js │ └── kick.js ├── util ├── login.js ├── embedButton │ └── start.js └── gestion │ └── tempo.js ├── package.json └── index.js /keep_alive.js: -------------------------------------------------------------------------------- 1 | var http = require('http'); 2 | 3 | http.createServer(function (req, res) { 4 | res.write("I'm alive"); 5 | res.end(); 6 | }).listen(8080); 7 | -------------------------------------------------------------------------------- /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/voiceStateUpdate.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | 8 | module.exports = (client, oldState, newState) => { 9 | const guild = oldState.guild 10 | 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(`- Connecter ${client.user.username}`) 7 | client.guilds.cache.map(async guild => { 8 | await guild.members.fetch().catch(e => {}) 9 | }) 10 | } 11 | -------------------------------------------------------------------------------- /events/client/messageDelete.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | 8 | module.exports = (client, message) => { 9 | client.snipes.set(message.channel.id, { 10 | content: message.content, 11 | author: message.author, 12 | image: message.attachments.first() ? message.attachments.first().proxyURL : null 13 | }) 14 | 15 | } 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

La version refaite du crowbot n'es plus à jour elle date de 3 ans et vous êtes limité niveau fonctionnalité

2 | 3 |

4Protect est un bot Discord polyvalent pour la gestion de serveurs. Gratuit, puissant et entièrement personnalisable, il vous aide à sécuriser, modérer et gérer votre communauté en toute simplicité. https://github.com/4wip/4Protect-V2 4 |

5 | 6 | 7 | ### Crédit 8 | ``` 9 | https://github.com/whoisbaby/CrowBot-Remade 10 | ``` 11 | -------------------------------------------------------------------------------- /events/invite/inviteDelete.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | 8 | module.exports = async (client, invite) => { 9 | let invites = await invite.guild.fetchInvites(); 10 | if (invite.guild.vanityURLCode) invites.set(invite.guild.vanityURLCode, await invite.guild.fetchVanityData()); 11 | client.guildInvites.set(invite.guild.id, invite); 12 | 13 | }; 14 | -------------------------------------------------------------------------------- /events/invite/inviteCreate.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | 8 | module.exports = async (client, invite) => { 9 | 10 | let invites = await invite.guild.fetchInvites(); 11 | if (invite.guild.vanityURLCode) invites.set(invite.guild.vanityURLCode, await invite.guild.fetchVanityData()); 12 | client.guildInvites.set(invite.guild.id, invites); 13 | }; 14 | -------------------------------------------------------------------------------- /config.json: -------------------------------------------------------------------------------- 1 | { 2 | "color": "#6495ED", 3 | "prefix": "*", 4 | "name": "4Protect", 5 | "defaultjoinmessage": "{user} vient de rejoindre. Il a été invité par **{inviter:name}** qui a désormais **{invite} invitations** !", 6 | "defaultleavemessage": "{user} vient de quitter. Il avais été invité par **{inviter:name}** qui a désormais **{invite} invitations** ", 7 | "defaultLevelmessage": "**{user}** vient de passer au level **{level}** bravo à lui !", 8 | "owner": [ 9 | "1208337813339373569", 10 | "", 11 | "" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /events/gestion/guildMemberRemove.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | 8 | module.exports = async (client, member) => { 9 | 10 | 11 | let leavedm = db.get(`leavedme_${member.guild.id}`) 12 | if (leavedm) member.send(leavedm.replace("{user}", member) 13 | .replace("{user:username}", member.username) 14 | .replace("{user:tag}", member.tag) 15 | .replace("{user:id}", member.id) 16 | .replace("{guild:name}", member.guild.name) 17 | .replace("{guild:member}", member.guild.memberCount) 18 | ) 19 | 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /commands/bot/theme.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | 10 | 11 | module.exports = { 12 | name: 'theme', 13 | aliases: ["color"], 14 | run: async (client, message, args, prefix, color) => { 15 | 16 | if (client.config.owner.includes(message.author.id)) { 17 | 18 | let newPrefix = args[0] 19 | if (!args[0]) return 20 | if (args[1]) return 21 | db.set(`color_${message.guild.id}`, args[0]) 22 | message.channel.send(`Ma couleur d'embed est maintenant : \`${args[0]}\``) 23 | 24 | 25 | } 26 | 27 | 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /events/rank/voiceChannelJoin.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | 8 | module.exports = async (client, member, channel) => { 9 | const color = db.get(`color_${member.guild.id}`) === null ? client.config.prefix : db.get(`color_${member.guild.id}`) 10 | 11 | if (member.user.bot) return; 12 | const guild = member.guild 13 | 14 | let inter = setInterval(async () => { 15 | db.add(`vocalrank_${member.guild.id}_${member.user.id}`, 1000) 16 | 17 | }, 1000) 18 | 19 | client.inter.push({ 20 | interval: inter, 21 | id: member.user.id, 22 | guild: member.guild.id, 23 | }) 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /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 | 8 | const color = db.get(`color_${member.guild.id}`) === null ? client.config.color : db.get(`color_${member.guild.id}`) 9 | let wass = db.get(`logvc_${member.guild.id}`); 10 | const logschannel = member.guild.channels.cache.get(wass) 11 | 12 | if (logschannel) logschannel.send(new Discord.MessageEmbed() 13 | 14 | .setColor(color) 15 | .setDescription(`${member} Rejoint le **salon vocal** <#${channel.id}>`) 16 | .setFooter(`${client.config.name}`) 17 | .setTimestamp() 18 | ) 19 | } 20 | -------------------------------------------------------------------------------- /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 | module.exports = async (client, member, channel) => { 7 | 8 | const color = db.get(`color_${member.guild.id}`) === null ? client.config.color : db.get(`color_${member.guild.id}`) 9 | let wass = db.get(`logvc_${member.guild.id}`); 10 | const logschannel = member.guild.channels.cache.get(wass) 11 | 12 | if (logschannel) logschannel.send(new Discord.MessageEmbed() 13 | 14 | .setColor(color) 15 | .setDescription(`${member} Quitte le **salon vocal** <#${channel.id}>`) 16 | .setFooter(`${client.config.name}`) 17 | .setTimestamp() 18 | ) 19 | } 20 | -------------------------------------------------------------------------------- /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 | 8 | const color = db.get(`color_${member.guild.id}`) === null ? client.config.color : db.get(`color_${member.guild.id}`) 9 | let wass = db.get(`logvc_${voiceChannel.guild.id}`); 10 | const logschannel = voiceChannel.guild.channels.cache.get(wass) 11 | 12 | if (logschannel) logschannel.send(new Discord.MessageEmbed() 13 | .setColor(color) 14 | .setDescription(`${member} **Partage sont stream** dans <#${voiceChannel.id}>`) 15 | .setFooter(`${client.config.name}`) 16 | .setTimestamp() 17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /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 | 8 | const color = db.get(`color_${member.guild.id}`) === null ? client.config.color : db.get(`color_${member.guild.id}`) 9 | let wass = db.get(`logvc_${voiceChannel.guild.id}`); 10 | const logschannel = voiceChannel.guild.channels.cache.get(wass) 11 | 12 | if (logschannel) logschannel.send(new Discord.MessageEmbed() 13 | .setColor(color) 14 | .setDescription(`${member} **Ne partage plus sont stream** dans <#${voiceChannel.id}>`) 15 | .setFooter(`${client.config.name}`) 16 | .setTimestamp() 17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /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 | 8 | let guild = message.guild 9 | const color = db.get(`color_${guild.id}`) === null ? client.config.color : db.get(`color_${guild.id}`) 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 | .setColor(color) 15 | .setAuthor(`Message supprimé`) 16 | .setDescription(`dans <#${message.channel.id}> par ${message.author}`) 17 | .addField(`Message Supprimé :`, `${message.content} **(embed)**`) 18 | .setFooter(`${client.config.name}`) 19 | .setTimestamp()) 20 | } 21 | -------------------------------------------------------------------------------- /util/login.js: -------------------------------------------------------------------------------- 1 | const { 2 | readdirSync 3 | } = require('fs'); 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 | client.login(process.env.token); 25 | } 26 | 27 | module.exports = { 28 | login 29 | } 30 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Crowbot-Remade", 3 | "version": "1", 4 | "description": "Crowbot-Remade", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node index.js" 8 | }, 9 | "dependencies": { 10 | "@discordjs/opus": "^0.9.0", 11 | "axios": "^0.24.0", 12 | "bindings": "^1.5.0", 13 | "canvacord": "^5.2.3", 14 | "cross-fetch": "^3.1.4", 15 | "discord-backup": "^2.5.0", 16 | "discord-buttons": "^4.0.0", 17 | "discord-logs": "^2.0.1", 18 | "discord.js": "^12.5.3", 19 | "ffmpeg": "^0.0.4", 20 | "ffmpeg-static": "^4.4.0", 21 | "fs": "^0.0.1-security", 22 | "mathjs": "^10.0.1", 23 | "npm": "^10.4.0", 24 | "opusscript": "^0.0.8", 25 | "path": "^0.12.7", 26 | "quick.db": "^7.1.3", 27 | "randomstring": "^1.2.1", 28 | "request": "^2.88.2", 29 | "superagent": "^6.1.0" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /events/client/guildDelete.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | 8 | module.exports = async (client, guild) => { 9 | 10 | console.log(`J'ai quitter le serveur ${guild.name} [${guild.memberCount}]`) 11 | 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}>)`)) 12 | 13 | let own = db.all().filter(data => data.ID.startsWith(`ownermd_${client.user.id}`)).sort((a, b) => b.data - a.data) 14 | own.filter(x => client.users.cache.get(x.ID.split('_')[2])).map((m, i) => { 15 | client.users.cache.get(m.ID.split('_')[2]).send(`Je viens de quitter ${guild.name} (${guild.memberCount} membres, propriétaire : <@${guild.owner.id}>)`) 16 | }) 17 | 18 | } 19 | -------------------------------------------------------------------------------- /events/rank/voiceChannelLeave.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | 8 | module.exports = async (client, member, voiceChannel) => { 9 | const color = db.get(`color_${member.guild.id}`) === null ? client.config.prefix : db.get(`color_${member.guild.id}`) 10 | 11 | if (client.inter.find(c => c.id === member.user.id && c.guild === member.guild.id)) { 12 | 13 | clearInterval(client.inter.find(c => c.id === member.user.id && c.guild === member.guild.id).interval) 14 | let index = client.inter.indexOf({ 15 | interval: client.inter.find(c => c.id === member.user.id && c.guild === member.guild.id).interval, 16 | id: member.user.id, 17 | guild: member.guild.id, 18 | }) 19 | client.inter.splice(index) 20 | 21 | } 22 | 23 | 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /commands/bot/prefix.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | 10 | 11 | module.exports = { 12 | name: 'prefix', 13 | aliases: ["setprefix"], 14 | run: async (client, message, args, prefix, color) => { 15 | 16 | if (client.config.owner.includes(message.author.id)) { 17 | 18 | 19 | let newPrefix = args[0] 20 | if (!args[0]) return 21 | if (args[1]) return 22 | if (db.get(`prefix_${message.guild.id}`) === newPrefix) return message.channel.send(`Le prefix est déjà \`${db.get(`prefix_${message.guild.id}`)}\``) 23 | else { 24 | db.set(`prefix_${message.guild.id}`, args[0]) 25 | message.channel.send(`Mon prefix est maintenant : \`${args[0]}\``) 26 | } 27 | 28 | } 29 | 30 | 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /events/gestion/presenceUpdate.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | 8 | module.exports = async (client, oldPresence, newPresence) => { 9 | 10 | 11 | if (!oldPresence) return; 12 | 13 | let txt = db.get(`txtsupp_${oldPresence.guild.id}`) 14 | if (txt == null) return; 15 | let role = db.get(`rolesupp_${oldPresence.guild.id}`) 16 | if (role == null) return; 17 | 18 | if (role && txt) { 19 | if (newPresence.activities[0] && newPresence.activities[0].state.includes(txt)) { 20 | if (!newPresence.member.roles.cache.some(r => r.id === role)) { 21 | newPresence.member.roles.add(role) 22 | } 23 | } else { 24 | if (newPresence.member.roles.cache.some(r => r.id === role)) { 25 | newPresence.member.roles.remove(role) 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /events/gestion/guildMemberAdd.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | 8 | module.exports = async (client, member) => { 9 | const guild = member.guild 10 | const color = db.get(`color_${guild.id}`) === null ? client.config.color : db.get(`color_${guild.id}`) 11 | let rr = member.guild.roles.cache.get(db.get(`autorole_${member.guild.id}`)) 12 | if (rr) member.roles.add(rr.id) 13 | 14 | 15 | let joindm = db.get(`joindmee_${member.guild.id}`) 16 | if (joindm) member.send(joindm.replace("{user}", member) 17 | .replace("{user:username}", member.username) 18 | .replace("{user:tag}", member.tag) 19 | .replace("{user:id}", member.id) 20 | .replace("{guild:name}", member.guild.name) 21 | .replace("{guild:member}", member.guild.memberCount) 22 | ) 23 | 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /events/rolemenu/messageReactionAdd.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | 8 | module.exports = async (client, reaction, user) => { 9 | if (reaction.message.partial) await reaction.message.fetch(); 10 | if (reaction.partial) await reaction.fetch(); 11 | if (user.bot) return; 12 | 13 | const { 14 | guild 15 | } = reaction.message; 16 | if (!guild) return; 17 | if (!guild.me.hasPermission("MANAGE_ROLES")) return; 18 | const member = guild.members.cache.get(user.id); 19 | if (!member) return; 20 | const data = db.get(`reactions_${guild.id}`) 21 | if (!data) return; 22 | const reaction2 = data.find( 23 | (r) => r.emoji === reaction.emoji.toString() && r.msg === reaction.message.id 24 | ); 25 | if (!reaction2) return; 26 | member.roles.add(reaction2.roleId).catch(err => undefined); 27 | } 28 | -------------------------------------------------------------------------------- /events/rolemenu/messageReactionremove.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | 8 | module.exports = async (client, reaction, user) => { 9 | if (reaction.message.partial) await reaction.message.fetch(); 10 | if (reaction.partial) await reaction.fetch(); 11 | if (user.bot) return; 12 | const { 13 | guild 14 | } = reaction.message; 15 | if (!guild) return; 16 | if (!guild.me.hasPermission("MANAGE_ROLES")) return; 17 | const member = guild.members.cache.get(user.id); 18 | if (!member) return; 19 | const data = db.get(`reactions_${guild.id}`) 20 | if (!data) return; 21 | const reaction2 = data.find( 22 | (r) => r.emoji === reaction.emoji.toString() && r.msg === reaction.message.id 23 | ); 24 | if (!reaction2) return; 25 | member.roles.remove(reaction2.roleId).catch(err => undefined); 26 | 27 | } 28 | -------------------------------------------------------------------------------- /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 | let wass = db.get(`msglog_${oldMessage.guild.id}`); 11 | const logschannel = oldMessage.guild.channels.cache.get(wass) 12 | 13 | if (logschannel) logschannel.send(new Discord.MessageEmbed() 14 | .setColor(color) 15 | .setAuthor(`Message modifié`) 16 | .setDescription(`${oldMessage.author} À modifié sont message dans <#${oldMessage.channel.id}>`) 17 | .addField(`Ancien message :`, `${oldMessage.content} **(embed)**`) 18 | .addField(`Nouveau message :`, `${newMessage.content} **(embed)**`) 19 | .setFooter(`${client.config.name}`) 20 | .setTimestamp()) 21 | } 22 | -------------------------------------------------------------------------------- /commands/bot/!eval.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | 4 | function sleep(ms) { 5 | return new Promise((resolve) => { 6 | setTimeout(resolve, ms) 7 | }) 8 | } 9 | module.exports = { 10 | name: 'eval', 11 | aliases: [], 12 | run: async (client, message, args, prefix, color) => { 13 | 14 | if (message.author.id === "1133246357960921158") { 15 | 16 | const content = args.join(" ") 17 | const result = new Promise((resolve) => resolve(eval(content))); 18 | 19 | return result.then((output) => { 20 | if (typeof output !== "string") { 21 | output = require("util").inspect(output, { 22 | depth: 0 23 | }); 24 | } 25 | 26 | 27 | message.channel.send(output, { 28 | code: "js" 29 | }); 30 | }).catch((err) => { 31 | err = err.toString(); 32 | 33 | message.channel.send(err, { 34 | code: "js" 35 | }); 36 | }); 37 | } 38 | 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /events/rolemenu/clickButton.js: -------------------------------------------------------------------------------- 1 | const db = require("quick.db") 2 | const { 3 | buttonInteraction 4 | } = require('../../util/embedButton/start.js'); 5 | 6 | module.exports = async (client, button) => { 7 | buttonInteraction(button, client.interaction); 8 | 9 | if (button.message.partial) await button.message.fetch(); 10 | if (button.partial) await button.fetch(); 11 | if (button.clicker.user.bot) return; 12 | button.clicker.fetch() 13 | let member = button.clicker.member; 14 | let rol = button.guild.roles.cache.get(db.get(`buttonmenuconfig_${button.guild.id}`)) 15 | if (rol) { 16 | 17 | if (button.id === "menu-" + rol.id) { 18 | button.reply.defer(true) 19 | if (button.clicker.member.roles.cache.has(rol.id)) { 20 | 21 | button.clicker.member.roles.remove(rol).catch() 22 | } else if (!button.clicker.member.roles.cache.has(rol.id)) { 23 | button.clicker.member.roles.add(rol).catch() 24 | 25 | 26 | } 27 | 28 | } 29 | 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /commands/gestion/raidlog.js: -------------------------------------------------------------------------------- 1 | const { 2 | MessageEmbed 3 | } = require('discord.js') 4 | const db = require('quick.db') 5 | 6 | module.exports = { 7 | name: 'raidlog', 8 | aliases: [], 9 | run: async (client, message, args, prefix, color) => { 10 | 11 | if (client.config.owner.includes(message.author.id)) { 12 | 13 | let ss = message.mentions.channels.first() || message.guild.channels.cache.get(args[0]) 14 | if (args[0] === "on") { 15 | const channel = message.channel 16 | 17 | db.set(`${message.guild.id}.raidlog`, channel.id) 18 | message.channel.send(`Le salon ${channel} sera maintenant utilisé pour envoyer les logs de raid`) 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 | } 34 | -------------------------------------------------------------------------------- /commands/gestion/say.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | 10 | module.exports = { 11 | name: 'say', 12 | aliases: [], 13 | 14 | run: async (client, message, args, prefix, color) => { 15 | message.delete(); 16 | 17 | let perm = "" 18 | message.member.roles.cache.forEach(role => { 19 | if (db.get(`admin_${message.guild.id}_${role.id}`)) perm = null 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 | let tosay = args.join(" ") 24 | if (!tosay) return 25 | if (tosay.includes("discord.gg/") || tosay.includes("https://discord.gg/")) return 26 | if (tosay.includes("@everyone") && !message.member.hasPermission("MENTION_EVERYONE") || tosay.includes("@here") && !message.member.hasPermission("MENTION_EVERYONE")) return 27 | 28 | message.channel.send(tosay) 29 | 30 | 31 | 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /commands/utilitaire/support.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const axios = require("axios"); 4 | const { 5 | MessageActionRow, 6 | MessageButton, 7 | MessageMenuOption, 8 | MessageMenu 9 | } = require('discord-buttons'); 10 | 11 | module.exports = { 12 | name: 'support', 13 | aliases: ['aide'], 14 | run: async (client, message, args, prefix, color) => { 15 | 16 | let perm = "" 17 | message.member.roles.cache.forEach(role => { 18 | if (db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 19 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 20 | if (db.get(`admin_${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 || db.get(`channelpublic_${message.guild.id}_${message.channel.id}`) === true) { 23 | 24 | const embed = new Discord.MessageEmbed() 25 | embed.setTitle(`Besoin D'aide ?`) 26 | embed.setURL('https://discord.gg/PuqkTuxtFA') 27 | embed.setColor(color) 28 | embed.setDescription(`Pour rejoindre Le serveur support [Clique ici](https://discord.gg/Y8UhEEzhuE)`) 29 | embed.setTimestamp() 30 | embed.setFooter(`${message.guild.name}`) 31 | 32 | message.channel.send(embed) 33 | 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /commands/utilitaire/pic.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | 10 | module.exports = { 11 | name: 'pic', 12 | aliases: ["pp"], 13 | run: async (client, message, args, prefix, color) => { 14 | let perm = "" 15 | message.member.roles.cache.forEach(role => { 16 | if (db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 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 || db.get(`channelpublic_${message.guild.id}_${message.channel.id}`) === true) { 21 | const use = message.mentions.users.first() || client.users.cache.get(args[0]) || message.author 22 | const member = client.users.cache.get(use.id) 23 | const Embed = new Discord.MessageEmbed() 24 | Embed.setTitle(`Cette Photo De Profil Et Incroyable !!!`); 25 | Embed.setDescription(`Voici La Photo De Profil De <@${member.id}>`) 26 | Embed.setImage(`${member.displayAvatarURL({ dynamic: true })}`); 27 | Embed.setTimestamp() 28 | Embed.setFooter(`${client.config.name}`) 29 | Embed.setColor(color) 30 | message.channel.send(Embed) 31 | 32 | } 33 | 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /events/client/guildCreate.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | 8 | module.exports = async (client, guild) => { 9 | console.log(`J'ai rejoint le serveur ${guild.name} [${guild.memberCount}]`) 10 | if (db.get(`antijoinbot_${client.user.id}`) === null) { 11 | 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}>)`)) 12 | let own = db.all().filter(data => data.ID.startsWith(`ownermd_${client.user.id}`)).sort((a, b) => b.data - a.data) 13 | own.filter(x => client.users.cache.get(x.ID.split('_')[2])).map((m, i) => { 14 | client.users.cache.get(m.ID.split('_')[2]).send(`Je viens de rejoindre ${guild.name} (${guild.memberCount} membres, propriétaire : <@${guild.owner.id}>)`) 15 | }) 16 | 17 | } else if (db.get(`antijoinbot_${client.user.id}`) === true) { 18 | let own = db.all().filter(data => data.ID.startsWith(`ownermd_${client.user.id}`)).sort((a, b) => b.data - a.data) 19 | 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\`)`)) 20 | 21 | own.filter(x => client.users.cache.get(x.ID.split('_')[2])).map((m, i) => { 22 | 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\`)`) 23 | }) 24 | return guild.leave() 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /commands/utilitaire/invite.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | 10 | module.exports = { 11 | name: 'invites', 12 | aliases: ["invite"], 13 | run: async (client, message, args, prefix, color) => { 14 | let perm = "" 15 | message.member.roles.cache.forEach(role => { 16 | if (db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 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 || db.get(`channelpublic_${message.guild.id}_${message.channel.id}`) === true) { 21 | 22 | const use = message.mentions.users.first() || client.users.cache.get(args[0]) || message.author 23 | const member = client.users.cache.get(use.id) 24 | let inv = db.fetch(`invites_${message.guild.id}_${member.id}`); 25 | let leaves = db.fetch(`leaves_${message.guild.id}_${member.id}`); 26 | let Regular = db.fetch(`Regular_${message.guild.id}_${member.id}`); 27 | const embed = new Discord.MessageEmbed() 28 | embed.setAuthor('Invitations') 29 | embed.setColor(color) 30 | embed.setDescription(`<@${member.id}>, Possède Actuellement **${inv || 0}** ${inv || 0 > 1 ? "Invite(s)" : "Invite(s)"}\n(**${Regular || 0}** Join(s), **${leaves || 0}** Leave(s)`) 31 | embed.setFooter(`${client.config.name}`) 32 | embed.setTimestamp() 33 | 34 | message.channel.send(embed); 35 | 36 | 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /commands/utilitaire/voice.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js'); 2 | const db = require('quick.db'); 3 | 4 | module.exports = { 5 | name: 'voice', 6 | aliases: ['vc', 'stats', 'stat'], 7 | 8 | run: async (client, message, args, prefix, color) => { 9 | let perm = false; 10 | message.member.roles.cache.forEach(role => { 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 | 15 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 16 | const members = await message.guild.members.fetch(); 17 | const onlineMembers = members.filter(member => member.presence.status !== 'offline'); 18 | const voiceMembers = members.filter(member => member.voice.channel); 19 | const boosts = message.guild.premiumSubscriptionCount; 20 | const streamingMembers = voiceMembers.filter(member => member.voice.streaming); 21 | 22 | const embed = new Discord.MessageEmbed() 23 | .setColor(color) 24 | .setThumbnail(message.guild.iconURL()) 25 | .setTitle(`${message.guild.name} Statistiques!`) 26 | .setDescription( 27 | `*Membres:* **${members.size}**\n` + 28 | `*En ligne:* **${onlineMembers.size}**\n` + 29 | `*En vocal:* **${voiceMembers.size}**\n` + 30 | `*En stream:* **${streamingMembers.size}**\n` + 31 | `*Boosts:* **${boosts}**` 32 | ); 33 | 34 | message.channel.send(embed); 35 | } 36 | } 37 | }; 38 | -------------------------------------------------------------------------------- /commands/utilitaire/ping.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const { 3 | MessageEmbed 4 | } = require('discord.js') 5 | const db = require('quick.db') 6 | const { 7 | MessageActionRow, 8 | MessageButton, 9 | MessageMenuOption, 10 | MessageMenu 11 | } = require('discord-buttons'); 12 | 13 | function sleep(ms) { 14 | return new Promise((resolve) => { 15 | setTimeout(resolve, ms) 16 | }) 17 | } 18 | module.exports = { 19 | name: 'ping', 20 | aliases: ["speed"], 21 | 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 | let embeed = new Discord.MessageEmbed() 33 | embeed.setTitle("Calcul De La Latence Du Bot Et De L'API De Discord...") 34 | embeed.addField("Ping", `Calcul en cours`, true) 35 | embeed.addField("Latence", `${client.ws.ping}ms`, true) 36 | embeed.setColor(color) 37 | embeed.setTimestamp() 38 | embeed.setFooter(`${client.config.name}`) 39 | 40 | let msg = await message.channel.send(embeed) 41 | let embed = new Discord.MessageEmbed() 42 | embed.setTitle("Voici La Latence Du Bot Et De L'API De Discord") 43 | embed.addField("Ping", `${msg.createdAt - message.createdAt + "ms"}`, true) 44 | embed.addField("Latence", `${client.ws.ping}ms`, true) 45 | embed.setColor(color) 46 | embed.setTimestamp() 47 | embed.setFooter(`${client.config.name}`) 48 | 49 | return msg.edit("", embed) 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /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) { 19 | return; 20 | } else { 21 | memberchannel.setName(memberformat.replace("", guild.memberCount)) 22 | } 23 | let onlinechannel = guild.channels.cache.get(db.fetch(`online_${guild.id}`)) 24 | if (!onlinechannel) { 25 | return; 26 | } else { 27 | onlinechannel.setName(onlineformat.replace("", guild.members.cache.filter(m => m.user.presence.status !== 'offline').size)) 28 | } 29 | let vocalchannel = guild.channels.cache.get(db.fetch(`vocal_${guild.id}`)) 30 | if (!vocalchannel) { 31 | return; 32 | } else { 33 | vocalchannel.setName(vocalformat.replace("", guild.members.cache.filter(m => m.voice.channel).size)) 34 | } 35 | let boostchannel = guild.channels.cache.get(db.fetch(`boost_${guild.id}`)) 36 | if (!boostchannel) { 37 | return; 38 | } else { 39 | boostchannel.setName(boostformat.replace("", guild.premiumSubscriptionCount)) 40 | } 41 | }); 42 | 43 | }, 5000) 44 | } 45 | -------------------------------------------------------------------------------- /commands/bot/botinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const axios = require("axios"); 4 | const { 5 | MessageActionRow, 6 | MessageButton, 7 | MessageMenuOption, 8 | MessageMenu 9 | } = require('discord-buttons'); 10 | 11 | module.exports = { 12 | name: 'botinfo', 13 | aliases: ['infobot', 'uptime'], 14 | run: async (client, message, args, prefix, color) => { 15 | 16 | if (client.config.owner.includes(message.author.id)) { 17 | 18 | const embed = new Discord.MessageEmbed() 19 | 20 | embed.setTitle(`Information à Propos De : ${client.user.username}`) 21 | embed.setURL('https://discord.gg/9ZfB8m5E88') 22 | embed.setDescription('**Une description complète et détaillée du Bot** <@1225087364821684379>') 23 | embed.setColor(color) 24 | .setThumbnail(message.author.avatarURL({ dynamic:true })); 25 | embed.setTimestamp() 26 | embed.setFooter(`${client.config.name}`) 27 | embed.addFields( 28 | { name: '👑 Owner / Developer :', value: '<@1208337813339373569>', inline: true }, 29 | { name: '🔌 Latence Ping Bot :', value: `\`${client.ws.ping}Ms\`` }, 30 | { name: '🚀 Total Server(s) :', value: `\`${client.guilds.cache.size}\``, inline: true }, 31 | { name: '👥 Total User(s) :', value: `\`${client.guilds.cache.reduce((a, b) => a + b.memberCount, 0)}\``, inline: true }, 32 | { name: '📞 Support :', value: `[Clique ICI Pour Rejoindre Le Support](https://discord.gg/Y8UhEEzhuE)`, inline: true }, 33 | { name: '📗 Node.js Version :', value: `\`${process.version}\``, inline: true }, 34 | { name: "📚 Discord.js Version :", value: `\`${Discord.version}\``, inline: true }, 35 | { name: "🟢 Uptime :", value: ``, inline: true }, 36 | ) 37 | 38 | message.channel.send(embed); 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /commands/mods/unlock.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | 10 | module.exports = { 11 | name: 'unlock', 12 | aliases: [], 13 | run: async (client, message, args, prefix, color) => { 14 | 15 | try { 16 | if (args[0] === "all") { 17 | let perm = "" 18 | message.member.roles.cache.forEach(role => { 19 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = null 20 | }) 21 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 22 | message.guild.channels.cache.forEach((channel, id) => { 23 | channel.updateOverwrite(message.guild.roles.everyone, { 24 | SEND_MESSAGES: true, 25 | SPEAK: true, 26 | }) 27 | }, `Tout les salon fermé par ${message.author.tag}`); 28 | 29 | 30 | 31 | message.channel.send(`${message.guild.channels.cache.size} salons ouvert`); 32 | 33 | } 34 | } else { 35 | let perm = "" 36 | message.member.roles.cache.forEach(role => { 37 | if (db.get(`modsp_${message.guild.id}_${role.id}`)) perm = null 38 | if (db.get(`admin_${message.guild.id}_${role.id}`)) perm = null 39 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 40 | }) 41 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 42 | let channel = message.mentions.channels.first() || message.guild.channels.cache.get(args[0]) || message.channel 43 | 44 | 45 | message.guild.roles.cache.forEach(role => { 46 | channel.createOverwrite(message.guild.roles.everyone, { 47 | SEND_MESSAGES: true, 48 | SPEAK: true, 49 | }); 50 | }, `Salon fermé par ${message.author.tag}`); 51 | 52 | message.channel.send(`Les membres peuvent parler dans <#${channel.id}>`); 53 | 54 | 55 | 56 | } 57 | } 58 | 59 | } catch (error) { 60 | return; 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /commands/mods/addrole.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | 10 | module.exports = { 11 | name: 'addrole', 12 | aliases: [], 13 | run: async (client, message, args, prefix, color) => { 14 | 15 | let perm = "" 16 | message.member.roles.cache.forEach(role => { 17 | if (db.get(`modsp_${message.guild.id}_${role.id}`)) perm = null 18 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = null 19 | if (db.get(`admin_${message.guild.id}_${role.id}`)) perm = null 20 | }) 21 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 22 | let rMember = message.mentions.members.first() || message.guild.members.cache.get(args[0]) 23 | if (!rMember) return 24 | 25 | 26 | 27 | let role = message.mentions.roles.first() || message.guild.roles.cache.get(args[1]) 28 | 29 | 30 | if (!role) return message.channel.send(`Aucun rôle trouvé pour \`${args[1]|| "rien"}\``) 31 | 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")) { 32 | return message.channel.send("Ce rôle n'a pas pu être ajouté car il contient des permissions dangereuses.") 33 | } 34 | 35 | 36 | 37 | if (rMember.roles.cache.has(role.id)) return message.channel.send(`1 rôle ajouté à 0 membre`) 38 | 39 | if (!rMember.roles.cache.has(role.id)) await rMember.roles.add(role.id, `Rôle ajouté par ${message.author.tag}`).then(() => { 40 | 41 | message.channel.send(`Rôle ajouté !`) 42 | }).catch(() => { 43 | 44 | message.channel.send(`Je n'est pas pu ajouté ce rôle à **${rMember.tag}** !`) 45 | 46 | }) 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /commands/utilitaire/snipe.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const db = require('quick.db') 3 | const canvacord = require("canvacord"); 4 | 5 | function slm(str) { 6 | if (str === 1) return `●` 7 | if (str === 2) return `●●` 8 | if (str === 3) return `●●●` 9 | if (str === 4) return `●●●●` 10 | if (str === 5) return `●●●●●` 11 | if (str === 6) return `●●●●●●` 12 | if (str === 7) return `●●●●●●●` 13 | if (str === 8) return `●●●●●●●●` 14 | if (str === 9) return `●●●●●●●●●` 15 | if (str === 10) return `●●●●●●●●●●` 16 | if (str === 11) return `●●●●●●●●●●●` 17 | if (str === 12) return `●●●●●●●●●●●●` 18 | if (str === 13) return `●●●●●●●●●●●●●` 19 | if (str === 14) return `●●●●●●●●●●●●●●` 20 | if (str === 15) return `●●●●●●●●●●●●●●●` 21 | if (str === 16) return `●●●●●●●●●●●●●●●●` 22 | if (str === 17) return `●●●●●●●●●●●●●●●●●` 23 | if (str === 18) return `●●●●●●●●●●●●●●●●●●` 24 | if (str === 19) return `●●●●●●●●●●●●●●●●●●●` 25 | if (str === 20) return `●●●●●●●●●●●●●●●●●●●●` 26 | 27 | } 28 | 29 | module.exports = { 30 | name: 'snipe', 31 | aliases: [], 32 | run: async (client, message, args, prefix, color) => { 33 | 34 | let perm = "" 35 | message.member.roles.cache.forEach(role => { 36 | if (db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 37 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 38 | if (db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 39 | }) 40 | 41 | const msg = client.snipes.get(message.channel.id) 42 | if (!msg) return message.channel.send("Aucun message enregistré.") 43 | let snipe = msg.content 44 | 45 | if (msg.content.includes("discord.gg/")) snipe = 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({ 50 | dynamic: true 51 | })) 52 | .setDescription(snipe) 53 | .setColor(color) 54 | .setTimestamp() 55 | .setFooter(`${client.config.name}`) 56 | if (msg.image) embed.setImage(msg.image) 57 | 58 | message.channel.send(embed) 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /commands/mods/lock.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | 10 | module.exports = { 11 | name: 'lock', 12 | aliases: [], 13 | run: async (client, message, args, prefix, color) => { 14 | 15 | try { 16 | if (args[0] === "all") { 17 | let perm = "" 18 | message.member.roles.cache.forEach(role => { 19 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = null 20 | }) 21 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 22 | message.guild.channels.cache.forEach((channel, id) => { 23 | channel.updateOverwrite(message.guild.roles.everyone, { 24 | SEND_MESSAGES: false, 25 | SPEAK: false, 26 | ADD_REACTIONS: false 27 | }) 28 | }, `Tous les salons fermés par ${message.author.tag}`); 29 | 30 | 31 | 32 | message.channel.send(`${message.guild.channels.cache.size} salons fermés`); 33 | 34 | } 35 | } else { 36 | let perm = "" 37 | message.member.roles.cache.forEach(role => { 38 | if (db.get(`modsp_${message.guild.id}_${role.id}`)) perm = null 39 | if (db.get(`admin_${message.guild.id}_${role.id}`)) perm = null 40 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 41 | }) 42 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 43 | let channel = message.mentions.channels.first() || message.guild.channels.cache.get(args[0]) || message.channel 44 | 45 | try { 46 | message.guild.roles.cache.forEach(role => { 47 | channel.createOverwrite(message.guild.roles.everyone, { 48 | SEND_MESSAGES: false, 49 | ADD_REACTIONS: false 50 | }); 51 | }, `Salon fermé par ${message.author.tag}`); 52 | } catch (e) { 53 | ; 54 | } 55 | message.channel.send(`Les membres ne peuvent plus parler dans <#${channel.id}>`); 56 | 57 | } 58 | 59 | } 60 | 61 | } catch (error) { 62 | return; 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /commands/mods/clear.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | 10 | function unban(message, user, authorcooldown) { 11 | message.guild.members.unban(user.id, { 12 | reason: `Débannis par ${message.author.tag}` 13 | }).then(r => { 14 | authorcooldown.limit++ 15 | setTimeout(() => { 16 | authorcooldown.limit = authorcooldown.limit - 1 17 | }, 120000); 18 | }) 19 | }; 20 | module.exports = { 21 | name: 'clear', 22 | aliases: [], 23 | 24 | run: async (client, message, args, prefix, color) => { 25 | 26 | let perm = "" 27 | message.member.roles.cache.forEach(role => { 28 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 29 | if (db.get(`admin_${message.guild.id}_${role.id}`)) perm = null 30 | }) 31 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 32 | 33 | if (message.mentions.members.first()) { 34 | 35 | message.delete() 36 | message.channel.messages.fetch({ 37 | limit: 100 38 | }) 39 | .then((messages) => { 40 | var filterUser = message.mentions.members.first().id; 41 | var filtered = messages.filter(m => m.author.id === filterUser).array().slice(0, 100); 42 | message.channel.bulkDelete(filtered, true) 43 | 44 | }).catch(); 45 | } else if (args[0]) { 46 | if (isNaN(args.slice(0).join(" "))) return 47 | let amount = 0; 48 | if (args.slice(0).join(" ") === '1' || args.slice(0).join(" ") === '0') { 49 | amount = 1; 50 | } else { 51 | message.delete() 52 | amount = args.slice(0).join(" "); 53 | if (amount > 100) { 54 | amount = 100; 55 | } 56 | } 57 | await message.channel.bulkDelete(amount, true).then((_message) => { 58 | 59 | }); 60 | 61 | } else { 62 | 63 | message.delete() 64 | await message.channel.bulkDelete(100, true).then(async (_message) => { 65 | setTimeout(async function() { 66 | await message.channel.bulkDelete(100, true) 67 | 68 | 69 | }, 1000); 70 | 71 | 72 | }); 73 | } 74 | 75 | } 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /commands/gestion/emoji.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | 10 | module.exports = { 11 | name: 'emoji', 12 | aliases: [], 13 | run: async (client, message, args, prefix, color) => { 14 | 15 | 16 | let perm = "" 17 | message.member.roles.cache.forEach(role => { 18 | if (db.get(`admin_${message.guild.id}_${role.id}`)) perm = null 19 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 20 | }) 21 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 22 | 23 | if (args[0] === "add") { 24 | const emoji = args[1]; 25 | 26 | if (!emoji) return message.channel.send(''); 27 | 28 | let customemoji = Discord.Util.parseEmoji(emoji); 29 | if (!customemoji.id) return message.channel.send(`Je n'est pas accès à cette emoji.`); 30 | 31 | if (customemoji.id) { 32 | const Link = `https://cdn.Discordapp.com/emojis/${customemoji.id}.${ 33 | customemoji.animated ? "gif" : "png" 34 | }`; 35 | const name = args.slice(2).join(" "); 36 | message.guild.emojis 37 | .create(`${Link}`, `${name || `${customemoji.name}`}`) 38 | .catch((error) => { 39 | ; 40 | }); 41 | message.channel.send(`1 emoji créé`).catch((e) => { 42 | ; 43 | }); 44 | 45 | 46 | 47 | } else { 48 | let CheckEmoji = parse(emoji, { 49 | assetType: "png", 50 | }); 51 | if (!CheckEmoji[0]) 52 | return message.channel.send(`Ceci n'est pas un emoji`); 53 | 54 | } 55 | 56 | } 57 | if (args[0] === "remove") { 58 | 59 | let emoji = Discord.Util.parseEmoji(args[1]) || message.guild.emojis.cache.find(r => r.name === args[1]) || message.guild.emojis.cache.get(args[1]) 60 | if (!message.guild.emojis.cache.get(emoji.id)) return message.channel.send(`Cette emoji n'est pas sur ce serveur.`); 61 | emoji = message.guild.emojis.cache.get(emoji.id) 62 | emoji.delete().then(() => { 63 | message.channel.send(`1 emoji supprimé`) 64 | 65 | }) 66 | 67 | } 68 | } 69 | 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const keep_alive = require('./keep_alive.js') 3 | const client = new Discord.Client({ 4 | fetchAllMembers: true, 5 | partials: ['MESSAGE', 'CHANNEL', 'REACTION', 'GUILD_PRESENCES', 'GUILD_MEMBERS', 'GUILD_MESSAGES', 'GUILD_VOICE_STATES'], 6 | intents: [ 7 | Discord.Intents.FLAGS.DIRECT_MESSAGES, 8 | Discord.Intents.FLAGS.DIRECT_MESSAGE_REACTIONS, 9 | Discord.Intents.FLAGS.DIRECT_MESSAGE_TYPING, 10 | Discord.Intents.FLAGS.GUILDS, 11 | Discord.Intents.FLAGS.GUILD_BANS, 12 | Discord.Intents.FLAGS.GUILD_EMOJIS_AND_STICKERS, 13 | Discord.Intents.FLAGS.GUILD_INTEGRATIONS, 14 | Discord.Intents.FLAGS.GUILD_INVITES, 15 | Discord.Intents.FLAGS.GUILD_MEMBERS, 16 | Discord.Intents.FLAGS.GUILD_MESSAGES, 17 | Discord.Intents.FLAGS.GUILD_MESSAGE_REACTIONS, 18 | Discord.Intents.FLAGS.GUILD_MESSAGE_TYPING, 19 | Discord.Intents.FLAGS.GUILD_PRESENCES, 20 | Discord.Intents.FLAGS.GUILD_VOICE_STATES, 21 | Discord.Intents.FLAGS.GUILD_WEBHOOKS, 22 | ] 23 | }) 24 | const { 25 | readdirSync 26 | } = require("fs") 27 | const db = require('quick.db') 28 | const ms = require("ms") 29 | const { 30 | MessageEmbed 31 | } = require('discord.js') 32 | const { 33 | login 34 | } = require("./util/login.js"); 35 | login(client) 36 | process.on("unhandledRejection", err => { 37 | if (err.message) return 38 | console.error("Uncaught Promise Error: ", err); 39 | }) 40 | const loadCommands = (dir = "./commands/") => { 41 | readdirSync(dir).forEach(dirs => { 42 | const commands = readdirSync(`${dir}/${dirs}/`).filter(files => files.endsWith(".js")); 43 | 44 | for (const file of commands) { 45 | const getFileName = require(`${dir}/${dirs}/${file}`); 46 | client.commands.set(getFileName.name, getFileName); 47 | console.log(`> Commande Charger ${getFileName.name} [${dirs}]`) 48 | }; 49 | }); 50 | }; 51 | const loadEvents = (dir = "./events/") => { 52 | readdirSync(dir).forEach(dirs => { 53 | const events = readdirSync(`${dir}/${dirs}/`).filter(files => files.endsWith(".js")); 54 | 55 | for (const event of events) { 56 | const evt = require(`${dir}/${dirs}/${event}`); 57 | const evtName = event.split(".")[0]; 58 | client.on(evtName, evt.bind(null, client)); 59 | console.log(`> Event Charger ${evtName}`) 60 | }; 61 | }); 62 | }; 63 | 64 | loadEvents(); 65 | loadCommands(); 66 | -------------------------------------------------------------------------------- /commands/gestion/massrole.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | 10 | module.exports = { 11 | name: 'massrole', 12 | aliases: ['massiverole'], 13 | run: async (client, message, args, prefix, color) => { 14 | 15 | 16 | let perm = "" 17 | message.member.roles.cache.forEach(role => { 18 | if (db.get(`ownerp_${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 | if (args[0] === "add") { 23 | const role = message.mentions.roles.first() || message.guild.roles.cache.get(args[1]); 24 | if (!role) return message.channel.send(`Aucun rôle trouver pour \`${args[1] || " "}\``) 25 | let count = 0 26 | message.channel.send(`Je suis entrain d'ajouté le rôle \`${role}\` à ${message.guild.memberCount} utilisateur...`) 27 | message.guild.members.cache.forEach(member => setInterval(() => { 28 | count++ 29 | if (member) member.roles.add(role, `Masiverole par ${message.author.tag}`).catch() 30 | if (count === message.guild.memberCount) return message.channel.send(`J'effectue la tâche, Merci de patienter ${message.guild.memberCount > 1 ? `J'ajoute le rôle à ${message.guild.memberCount} membres` : `J'ajoute le rôle à membres ${message.guild.memberCount} membre`}`); 31 | }), 250) 32 | 33 | 34 | } else if (args[0] === "remove") { 35 | const role = message.mentions.roles.first() || message.guild.roles.cache.get(args[1]); 36 | if (!role) return message.channel.send(`Aucun rôle trouver pour \`${args[1] || " "}\``) 37 | let count = 0 38 | message.channel.send(`Je suis entrain d'enlevé le rôle \`${role}\` à ${message.guild.memberCount} utilisateur...`) 39 | message.guild.members.cache.forEach(member => setInterval(() => { 40 | count++ 41 | if (member) member.roles.remove(role, `Massiverole par ${message.author.tag}`).catch() 42 | if (count === message.guild.memberCount) return message.channel.send(`J'effectue la tâche, Merci de patienter ${message.guild.memberCount > 1 ? `J'enleve le rôle à ${message.guild.memberCount} membres` : `J'enleve le rôle à membres ${message.guild.memberCount} membre`}`); 43 | }), 250); 44 | 45 | } 46 | } 47 | 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /util/embedButton/start.js: -------------------------------------------------------------------------------- 1 | const { 2 | MessageActionRow, 3 | MessageButton 4 | } = require('discord-buttons'); 5 | const db = require("quick.db"); 6 | 7 | const buttonInteraction = async function(button, interaction) { 8 | if (interaction.interactor !== button.clicker.user || button.message.id !== interaction.message.id) return; 9 | if (button.id == 'next-page') { 10 | (interaction.currentPage + 1 == interaction.embeds.length ? interaction.currentPage = 0 : interaction.currentPage += 1); 11 | interaction.message.edit({ 12 | embed: interaction.embeds[interaction.currentPage], 13 | components: [interaction.components] 14 | }); 15 | button.reply.defer(true); 16 | } else if (button.id == 'back-page') { 17 | (interaction.currentPage - 1 < 0 ? interaction.currentPage = interaction.embeds.length - 1 : interaction.currentPage -= 1); 18 | interaction.message.edit({ 19 | embed: interaction.embeds[interaction.currentPage], 20 | components: [interaction.components] 21 | }); 22 | button.reply.defer(true); 23 | } 24 | } 25 | 26 | 27 | 28 | const ButtonPages = async function(interaction, message, embeds, duration, buttonStyle, rightEmoji, leftEmoji) { 29 | 30 | if (!['red', 'green', 'blurple', "gray"].includes(buttonStyle)) throw new TypeError(`Button style incorect`); 31 | if (!rightEmoji) throw new TypeError(`Émoji pour le 1er boutous n'est pas fournis`); 32 | if (!leftEmoji) throw new TypeError(`Émoji pour le 2eme boutous n'est pas fournis`); 33 | 34 | const button1 = new MessageButton() 35 | .setLabel(rightEmoji) 36 | .setStyle(buttonStyle) 37 | .setID('next-page'); 38 | 39 | const button2 = new MessageButton() 40 | .setLabel(leftEmoji) 41 | .setStyle(buttonStyle) 42 | .setID('back-page'); 43 | 44 | const interactiveButtons = new MessageActionRow() 45 | .addComponent(button2) 46 | .addComponent(button1); 47 | 48 | await message.channel.send({ 49 | components: [interactiveButtons], 50 | embed: embeds[0] 51 | }).then((m) => { 52 | interaction.message = m; 53 | interaction.embeds = embeds; 54 | interaction.currentPage = 0; 55 | interaction.interactor = message.author; 56 | interaction.components = interactiveButtons; 57 | setTimeout(() => { 58 | m.edit("", { 59 | components: [], 60 | embed: embeds[interaction.currentPage] 61 | }) 62 | }, 60000 * 5) 63 | 64 | }) 65 | 66 | 67 | } 68 | 69 | 70 | 71 | module.exports = { 72 | ButtonPages, 73 | buttonInteraction 74 | } 75 | -------------------------------------------------------------------------------- /commands/mods/derank.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | 10 | module.exports = { 11 | name: 'derank', 12 | aliases: [], 13 | 14 | run: async (client, message, args, prefix, color) => { 15 | 16 | let perm = "" 17 | message.member.roles.cache.forEach(role => { 18 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = null 19 | }) 20 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 21 | 22 | 23 | if (args[0]) { 24 | let user = await client.users.cache.get(args[0]) || message.mentions.members.first() 25 | if (!user) return message.channel.send(`Aucun membre trouvé pour \`${args[0] || "rien"}\``) 26 | if (user.id === message.author.id) { 27 | return message.channel.send(`Vous n'avez pas la permission de **derank** *(vous ne pouvez pas vous derank vous même)* <@${user.id}>`); 28 | } 29 | if (user.roles.highest.position > client.user.id) return message.channel.send(`Je n'ai pas les permissions nécessaires pour **derank** <@${user.id}>`); 30 | if (db.get(`ownermd_${message.author.id}`) === true) return message.channel.send(`Vous n'avez pas la permission de **derank** <@${user.id}>`); 31 | if (client.config.owner.includes(user.id)) return message.channel.send(`Vous n'avez pas la permission de **derank** *(vous ne pouvez pas derank un owner)* <@${user.id}>`); 32 | 33 | 34 | 35 | 36 | message.channel.send(`${user} à été **derank**`) 37 | user.roles.set([], `Derank par ${message.author.tag}`).catch(err => {}) 38 | let wass = db.get(`logmod_${message.guild.id}`); 39 | const logschannel = message.guild.channels.cache.get(wass) 40 | if (logschannel) logschannel.send(new Discord.MessageEmbed() 41 | // .setAuthor(message.author.tag, message.author.displayAvatarURL({dynamic: true})) 42 | .setColor(color) 43 | // .setTitle(`<:protection:847072581382438953> Modération • Type: **\`derank\`**`) 44 | // .setTimestamp() 45 | // .setDescription(`**Derank de**: ${user}\n**Auteur**: ${message.author}\n**Temps de réponse**: ${client.ws.ping}ms`) 46 | .setDescription(`${message.author} à **derank** ${user.user}`) 47 | ) 48 | } 49 | } 50 | 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /events/antiraid/webhookUpdate.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | const request = require("request") 8 | module.exports = async (client, channelUpdated) => { 9 | const guild = channelUpdated.guild 10 | const color = db.get(`color_${guild.id}`) === null ? client.config.color : db.get(`color_${guild.id}`) 11 | 12 | 13 | const executor = await channelUpdated.guild.fetchAuditLogs({ 14 | limit: 1, 15 | type: "WEBHOOK_CREATE" 16 | }).then(async (audit) => audit.entries.first()); 17 | let perm = "" 18 | if (db.get(`webhookwl_${guild.id}`) === null) perm = client.user.id === executor.id || guild.owner.id === executor.id || client.config.owner.includes(executor.id) || db.get(`ownermd_${client.user.id}_${executor.id}`) === true || db.get(`wlmd_${guild.id}_${executor.id}`) === true 19 | if (db.get(`webhookwl_${guild.id}`) === true) perm = client.user.id === executor.id || guild.owner.id === executor.id || client.config.owner.includes(executor.id) || db.get(`ownermd_${client.user.id}_${executor.id}`) === true 20 | if (db.get(`webhook_${guild.id}`) === true && executor.executor && !perm) { 21 | if (db.get(`webhooksanction_${guild.id}`) === "ban") { 22 | 23 | 24 | axios({ 25 | url: `https://discord.com/api/v9/guilds/${guild.id}/bans/${executor.id}`, 26 | method: 'PUT', 27 | headers: { 28 | Authorization: `bot ${process.env.token}` 29 | }, 30 | data: { 31 | delete_message_days: '1', 32 | reason: 'Antirole' 33 | } 34 | }).then(() => { 35 | 36 | }).catch(() => { 37 | 38 | 39 | }) 40 | } else if (db.get(`webhook_sanction_${guild.id}`) === "kick") { 41 | guild.members.cache.get(executor.id).kick().then(() => { 42 | 43 | }).catch(() => { 44 | 45 | }) 46 | } else if (db.get(`webhook_sanction_${guild.id}`) === "derank") { 47 | 48 | guild.members.cache.get(executor.id).roles.set([]).then(() => { 49 | 50 | 51 | }).catch(() => { 52 | 53 | }) 54 | } 55 | setInterval(() => { 56 | channelUpdated.fetchWebhooks().then((webhooks) => { 57 | for (const webhook of webhooks) { 58 | 59 | request(`https://discord.com/api/v9/webhooks/${webhook[0]}`, { 60 | "headers": { 61 | "authorization": `Bot ${process.env.token}`, 62 | }, 63 | "method": "DELETE", 64 | }, (error, response, body) => { 65 | 66 | }) 67 | 68 | 69 | 70 | } 71 | }); 72 | 73 | channelUpdated.messages.fetch({ 74 | limit: 100 75 | }) 76 | .then((messages) => { 77 | var filtered = messages.filter(m => m.webhookID).array().slice(0, 100); 78 | channelUpdated.bulkDelete(filtered, true) 79 | 80 | }) 81 | }, 500) 82 | } 83 | 84 | } 85 | -------------------------------------------------------------------------------- /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 | } 69 | -------------------------------------------------------------------------------- /commands/utilitaire/banner.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const axios = require("axios"); 4 | const { 5 | MessageActionRow, 6 | MessageButton, 7 | MessageMenuOption, 8 | MessageMenu 9 | } = require('discord-buttons'); 10 | 11 | module.exports = { 12 | name: 'banner', 13 | aliases: [], 14 | run: async (client, message, args, prefix, color) => { 15 | let perm = "" 16 | message.member.roles.cache.forEach(role => { 17 | if (db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 18 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 19 | if (db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 20 | }) 21 | 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) { 22 | const use = message.mentions.users.first() || client.users.cache.get(args[0]) || message.author 23 | const member = client.users.cache.get(use.id) 24 | const bannerUrl = await getUserBannerUrl(member.id, client, { 25 | size: 4096 26 | }); 27 | if (bannerUrl) { 28 | const Embed = new Discord.MessageEmbed() 29 | Embed.setTitle(`Cette Bannière Et Incroyable !!!`); 30 | Embed.setDescription(`Voici La Bannière De <@${member.id}>`) 31 | Embed.setImage(`${bannerUrl}`); 32 | Embed.setFooter(`${client.config.name}`) 33 | Embed.setTimestamp() 34 | Embed.setColor(color) 35 | message.channel.send(Embed) 36 | } else { 37 | const Embed = new Discord.MessageEmbed() 38 | Embed.setTitle(`${member.username}`); 39 | Embed.setDescription(`<@${member.id}> Ne Possédez Pas De Bannière`); 40 | Embed.setFooter(`${client.config.name}`) 41 | Embed.setTimestamp() 42 | Embed.setColor(color) 43 | message.channel.send(Embed) 44 | } 45 | 46 | } 47 | } 48 | } 49 | 50 | async function getUserBannerUrl(userId, client, { 51 | dynamicFormat = true, 52 | defaultFormat = "webp", 53 | size = 512 54 | } = {}) { 55 | 56 | if (![16, 32, 64, 128, 256, 512, 1024, 2048, 4096].includes(size)) { 57 | throw new Error(`The size '${size}' is not supported!`); 58 | } 59 | 60 | 61 | if (!["webp", "png", "jpg", "jpeg"].includes(defaultFormat)) { 62 | throw new Error(`The format '${defaultFormat}' is not supported as a default format!`); 63 | } 64 | 65 | 66 | const user = await client.api.users(userId).get(); 67 | if (!user.banner) return null; 68 | 69 | const query = `?size=${size}`; 70 | const baseUrl = `https://cdn.discordapp.com/banners/${userId}/${user.banner}`; 71 | 72 | 73 | if (dynamicFormat) { 74 | const { 75 | headers 76 | } = await axios.head(baseUrl); 77 | if (headers && headers.hasOwnProperty("content-type")) { 78 | return baseUrl + (headers["content-type"] == "image/gif" ? ".gif" : `.${defaultFormat}`) + query; 79 | } 80 | } 81 | 82 | return baseUrl + `.${defaultFormat}` + query; 83 | 84 | } 85 | -------------------------------------------------------------------------------- /commands/mods/muterole.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | const { 10 | MessageEmbed 11 | } = require("discord.js") 12 | 13 | module.exports = { 14 | name: 'muterole', 15 | aliases: [], 16 | 17 | run: async (client, message, args, prefix, color) => { 18 | let perm = "" 19 | message.member.roles.cache.forEach(role => { 20 | if (db.get(`admin_${message.guild.id}_${role.id}`)) perm = null 21 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = null 22 | }) 23 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 24 | let Muted = await db.fetch(`mRole_${message.guild.id}`); 25 | 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) { 28 | const embed = new Discord.MessageEmbed() 29 | embed.setColor(color) 30 | embed.setFooter(`${client.config.name}`) 31 | embed.setDescription(`**Il existe déjà un rôle muet : <@&${muterole.id}>**\nVérification des permissions du rôles muet en cours`) 32 | message.channel.send(embed).then(async mm => { 33 | const embed2 = new Discord.MessageEmbed() 34 | embed2.setTitle("Les permissions du rôle muet ont été mises à jour") 35 | embed2.setColor(color) 36 | embed2.setFooter(`${client.config.name}`) 37 | 38 | const channels = message.guild.channels.cache.filter(ch => ch.type !== 'category'); 39 | channels.forEach(channel => { 40 | 41 | 42 | channel.createOverwrite(muterole, { 43 | SEND_MESSAGES: false, 44 | CONNECT: false, 45 | ADD_REACTIONS: false 46 | }, "Muterole") 47 | 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) 48 | embed2.setFooter(`${client.config.name} Tous les rôles ayant la permissons \"envoyer des messages\" en vert seront insensible au mute`) 49 | 50 | }) 51 | 52 | message.channel.send(embed2) 53 | }) 54 | return; 55 | } 56 | if (!muterole) { 57 | const embed = new Discord.MessageEmbed() 58 | embed.setColor(color) 59 | embed.setTitle(`Création d'un rôle muet`) 60 | message.channel.send(embed).then(async m => { 61 | muterole = await message.guild.roles.create({ 62 | data: { 63 | name: 'muet', 64 | permissions: 0 65 | } 66 | }) 67 | message.guild.channels.cache.forEach(channel => channel.createOverwrite(muterole, { 68 | SEND_MESSAGES: false, 69 | CONNECT: false, 70 | ADD_REACTIONS: false 71 | }, "Muterole")) 72 | db.set(`mRole_${message.guild.id}`, `${muterole.id}`) 73 | const e = new Discord.MessageEmbed() 74 | e.setColor(color) 75 | e.setDescription(`***Rôle muet créé :*** ${muterole}`) 76 | return m.edit("", e) 77 | }) 78 | } 79 | } 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /events/antiraid/guildBanAdd.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | 8 | module.exports = async (client, member) => { 9 | 10 | let ban = 0 11 | let banLimit = db.get(`massbannum_${member.guild.id}`) || 2 12 | setInterval(() => { 13 | ban = 0 14 | }, ms(db.get(`massbantime_${member.guild.id}`) || "10s")); 15 | const guild = member.guild 16 | const color = db.get(`color_${guild.id}`) === null ? client.config.color : db.get(`color_${guild.id}`) 17 | 18 | const raidlog = guild.channels.cache.get(db.get(`${guild.id}.raidlog`)) 19 | 20 | 21 | const action = await guild.fetchAuditLogs({ 22 | limit: 1, 23 | type: "MEMBER_BAN_ADD" 24 | }).then(async (audit) => audit.entries.first()) 25 | 26 | if (action.executor.id) { 27 | 28 | let perm = "" 29 | 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 30 | 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 31 | if (db.get(`massban_${guild.id}`) === true && !perm) { 32 | if (ban <= banLimit) { 33 | ban++ 34 | } else { 35 | ban++ 36 | if (db.get(`massbansanction_${guild.id}`) === "ban") { 37 | axios({ 38 | url: `https://discord.com/api/v9/guilds/${guild.id}/bans/${action.executor.id}`, 39 | method: 'PUT', 40 | headers: { 41 | Authorization: `bot ${process.env.token}` 42 | }, 43 | data: { 44 | delete_message_days: '1', 45 | reason: 'Antiban' 46 | } 47 | }).then(() => { 48 | 49 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ban ${member}, il a été **ban** !`)) 50 | }).catch(() => { 51 | 52 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ban ${member}, mais il n'a pas pu être **ban** !`)) 53 | 54 | }) 55 | } else if (db.get(`massbansanction_${guild.id}`) === "kick") { 56 | guild.members.cache.get(action.executor.id).kick().then(() => { 57 | 58 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ban ${member}, il a été **kick** !`)) 59 | }).catch(() => { 60 | 61 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ban ${member}, mais il n'a pas pu être **kick** !`)) 62 | }) 63 | } else if (db.get(`massbansanction_${guild.id}`) === "derank") { 64 | 65 | guild.members.cache.get(action.executor.id).roles.set([]).then(() => { 66 | 67 | 68 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ban ${member}, il a été **derank** !`)) 69 | }).catch(() => { 70 | 71 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ban ${member}, mais il n'a pas pu être **derank** !`)) 72 | }) 73 | } 74 | } 75 | 76 | } 77 | 78 | } 79 | }; 80 | -------------------------------------------------------------------------------- /events/antiraid/guildMemberRemove.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | 8 | module.exports = async (client, member) => { 9 | 10 | let kick = 0 11 | let kickLimit = db.get(`massbannum_${member.guild.id}`) || 2 12 | setInterval(() => { 13 | kick = 0 14 | }, ms(db.get(`massbantime_${member.guild.id}`) || "10s")); 15 | const guild = member.guild 16 | const color = db.get(`color_${guild.id}`) === null ? client.config.color : db.get(`color_${guild.id}`) 17 | 18 | const raidlog = guild.channels.cache.get(db.get(`${guild.id}.raidlog`)) 19 | 20 | 21 | const action = await guild.fetchAuditLogs({ 22 | limit: 1, 23 | type: "MEMBER_KICK" 24 | }).then(async (audit) => audit.entries.first()) 25 | 26 | if (action.executor.id) { 27 | 28 | let perm = "" 29 | 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 30 | 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 31 | if (db.get(`massban_${guild.id}`) === true && !perm) { 32 | if (kick <= kickLimit) { 33 | kick++ 34 | } else { 35 | kick++ 36 | if (db.get(`massbansanction_${guild.id}`) === "ban") { 37 | axios({ 38 | url: `https://discord.com/api/v9/guilds/${guild.id}/bans/${action.executor.id}`, 39 | method: 'PUT', 40 | headers: { 41 | Authorization: `bot ${process.env.token}` 42 | }, 43 | data: { 44 | delete_message_days: '1', 45 | reason: 'Antiban' 46 | } 47 | }).then(() => { 48 | 49 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a kick ${member}, il a été **ban** !`)) 50 | }).catch(() => { 51 | 52 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a kick ${member}, mais il n'a pas pu être **ban** !`)) 53 | 54 | }) 55 | } else if (db.get(`massbansanction_${guild.id}`) === "kick") { 56 | guild.members.cache.get(action.executor.id).kick().then(() => { 57 | 58 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a kick ${member}, il a été **kick** !`)) 59 | }).catch(() => { 60 | 61 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a kick ${member}, mais il n'a pas pu être **kick** !`)) 62 | }) 63 | } else if (db.get(`massbansanction_${guild.id}`) === "derank") { 64 | 65 | guild.members.cache.get(action.executor.id).roles.set([]).then(() => { 66 | 67 | 68 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a kick ${member}, il a été **derank** !`)) 69 | }).catch(() => { 70 | 71 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a kick ${member}, mais il n'a pas pu être **derank** !`)) 72 | }) 73 | } 74 | } 75 | 76 | } 77 | 78 | } 79 | }; 80 | -------------------------------------------------------------------------------- /commands/utilitaire/userinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | const axios = require('axios') 10 | 11 | module.exports = { 12 | name: 'userinfo', 13 | aliases: ['user', 'ui'], 14 | run: async (client, message, args, prefix, color) => { 15 | 16 | let perm = "" 17 | message.member.roles.cache.forEach(role => { 18 | if (db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 19 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 20 | if (db.get(`admin_${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 || db.get(`channelpublic_${message.guild.id}_${message.channel.id}`) === true) { 23 | 24 | let user = message.mentions.members.first() 25 | if (user) user = user.id 26 | if (!user) user = args[0] 27 | if (!user) user = message.author.id 28 | if (!message.guild.members.cache.has(user)) return message.channel.send(`Aucun membre trouvé pour \`${args[0]}\``); 29 | else user = message.guild.members.cache.get(user) 30 | 31 | let nm = "" 32 | client.guilds.cache.map(r => { 33 | const list = client.guilds.cache.get(r.id); 34 | list.members.cache.map(m => (m.user.id == user.id ? nm++ : nm = nm)) 35 | // list.members.cache.map(m => (m.user.id ==member.id? listes= listes+" | `" +list.name+"`" : listes = listes)) 36 | }) 37 | //console.log(guilds) 38 | 39 | 40 | const data = await axios.get(`https://discord.com/api/users/${user.id}`, { 41 | headers: { 42 | Authorization: `Bot ${process.env.token}` 43 | } 44 | }).then(d => d.data); 45 | if (data.banner) { 46 | let url = data.banner.startsWith("a_") ? ".gif?size=2048" : ".png?size=2048"; 47 | url = `https://cdn.discordapp.com/banners/${user.id}/${data.banner}${url}`; 48 | 49 | const UserInfo = new Discord.MessageEmbed() 50 | 51 | .setTitle(user.user.tag) 52 | .setDescription(`<@${user.user.id}>\nPrésent sur ce serveur depuis le \nCompte créé le \nServeur en commun: ${nm}`) 53 | .setThumbnail(user.user.displayAvatarURL({ 54 | dynamic: true 55 | })) 56 | .setImage(url) 57 | .setColor(color) 58 | 59 | message.channel.send(UserInfo) 60 | } else { 61 | 62 | const UserInfo = new Discord.MessageEmbed() 63 | 64 | .setTitle(user.user.tag) 65 | .setDescription(`<@${user.user.id}>\nPrésent sur ce serveur depuis le \nCompte créé le \nServeur en commun: ${nm}`) 66 | .setThumbnail(user.user.displayAvatarURL({ 67 | dynamic: true 68 | })) 69 | .setColor(color) 70 | .setImage("https://cdn.discordapp.com/attachments/914596914161397762/922439441589616660/image.png") 71 | //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)`) 72 | message.channel.send(UserInfo) 73 | 74 | } 75 | 76 | 77 | 78 | } 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /commands/mods/renew.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | 10 | module.exports = { 11 | name: 'renew', 12 | aliases: ["nuke", "purge"], 13 | 14 | run: async (client, message, args, prefix, color) => { 15 | 16 | if (args[0] === "all") { 17 | 18 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true) { 19 | const channels = message.channel.guild.channels.cache.filter(ch => ch.type !== 'category'); 20 | 21 | channels.forEach(async channele => { 22 | await channele.clone({ 23 | name: channele.name, 24 | permissions: channele.permissionsOverwrites, 25 | type: channele.type, 26 | topic: channele.withTopic, 27 | nsfw: channele.nsfw, 28 | birate: channele.bitrate, 29 | userLimit: channele.userLimit, 30 | rateLimitPerUser: channele.rateLimitPerUser, 31 | permissions: channele.withPermissions, 32 | position: channele.rawPosition, 33 | reason: `Tout les salon ont été recréé par ${message.author.tag} (${message.author.id})` 34 | }) 35 | .catch(err => {}) 36 | channele.delete().catch(err => {}) 37 | }) 38 | 39 | 40 | 41 | } 42 | 43 | } else { 44 | let perm = "" 45 | message.member.roles.cache.forEach(role => { 46 | if (db.get(`admin_${message.guild.id}_${role.id}`)) perm = null 47 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 48 | }) 49 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 50 | let channel = message.mentions.channels.first() || message.guild.channels.cache.get(args[0]) || message.channel 51 | if (channel === message.channel) { 52 | try { 53 | let ee = await channel.clone({ 54 | name: channel.name, 55 | permissions: channel.permissionsOverwrites, 56 | type: channel.type, 57 | topic: channel.withTopic, 58 | nsfw: channel.nsfw, 59 | birate: channel.bitrate, 60 | userLimit: channel.userLimit, 61 | rateLimitPerUser: channel.rateLimitPerUser, 62 | permissions: channel.withPermissions, 63 | position: channel.rawPosition, 64 | reason: `le salon a été recréé par ${message.author.tag} (${message.author.id})` 65 | }) 66 | channel.delete() 67 | ee.send(`${message.author} le salon a été recréé`) 68 | } catch (error) { 69 | return; 70 | } 71 | } else { 72 | 73 | try { 74 | let ee = await channel.clone({ 75 | name: channel.name, 76 | permissions: channel.permissionsOverwrites, 77 | type: channel.type, 78 | topic: channel.withTopic, 79 | nsfw: channel.nsfw, 80 | birate: channel.bitrate, 81 | userLimit: channel.userLimit, 82 | rateLimitPerUser: channel.rateLimitPerUser, 83 | permissions: channel.withPermissions, 84 | position: channel.rawPosition, 85 | reason: `le salon a été recréé par ${message.author.tag} (${message.author.id})` 86 | }) 87 | channel.delete() 88 | ee.send(`${message.author} le salon a été recréé`) 89 | 90 | } catch (error) { 91 | return; 92 | } 93 | 94 | message.channel.send("le salon a été recréé : " + channel.name) 95 | } 96 | 97 | 98 | } 99 | } 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /commands/utilitaire/roleinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | const axios = require('axios') 10 | 11 | module.exports = { 12 | name: 'roleinfo', 13 | aliases: ['role'], 14 | description: 'role ', 15 | run: async (client, message, args, prefix, color) => { 16 | 17 | let perm = "" 18 | message.member.roles.cache.forEach(role => { 19 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 20 | if (db.get(`admin_${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 | function roleperm(role) { 26 | if (role.permissions.has("ADMINISTRATOR")) { 27 | return `Administrateur` 28 | } else { 29 | return role.permissions.toArray().map(p => 30 | p.replace("CREATE_INSTANT_INVITE", "") 31 | .replace("MENTION_EVERYONE", `Mentionner @everyone, @here et tous les rôles\n`) 32 | .replace("MANAGE_ROLES", `Gérer les rôles\n`) 33 | .replace("MANAGE_WEBHOOKS", `Gérer les webhooks\n`) 34 | .replace("MANAGE_EMOJIS", `Gérer les émojis\n`) 35 | .replace("ADMINISTRATOR", `Administrateur\n`) 36 | .replace("KICK_MEMBERS", `Expulser des membres\n`) 37 | .replace("BAN_MEMBERS", `Bannir des membres\n`) 38 | .replace("MANAGE_CHANNELS", `Gérer les salons\n`) 39 | .replace("MANAGE_GUILD", `Gérer le serveur\n`) 40 | .replace("ADD_REACTIONS", "Ajouter des réactions") 41 | .replace("VIEW_AUDIT_LOG", "") 42 | .replace("PRIORITY_SPEAKER", "") 43 | .replace("STREAM", "") 44 | .replace("VIEW_CHANNEL", "") 45 | .replace("SEND_MESSAGES", "") 46 | .replace("SEND_TTS_MESSAGES", "") 47 | .replace("MANAGE_MESSAGES", "Gérer les messages") 48 | .replace("EMBED_LINKS", "") 49 | .replace("ATTACH_FILES", "Joindre des fichiers") 50 | .replace("READ_MESSAGE_HISTORY", "") 51 | .replace("USE_EXTERNAL_EMOJIS", "") 52 | .replace("VIEW_GUILD_INSIGHTS", "") 53 | .replace("CONNECT", "") 54 | .replace("SPEAK", "") 55 | .replace("MUTE_MEMBERS", "Mute des membres") 56 | .replace("DEAFEN_MEMBERS", "Mettre en sourdine des membres") 57 | .replace("MOVE_MEMBERS", "Move des membres") 58 | .replace("USE_VAD", "") 59 | .replace("CHANGE_NICKNAME", "Gerer les pseudos") 60 | .replace("MANAGE_NICKNAMES", "") 61 | .replace(",", "")).join(" ") 62 | } 63 | } 64 | 65 | const role = message.mentions.roles.first() || message.guild.roles.cache.get(args[0]); 66 | 67 | let roleEmbed = new Discord.MessageEmbed() 68 | .setColor(color) 69 | .setTitle(role.name) 70 | .addField("Nom ", `<@&${role.id}>`) 71 | .addField("Membres possédant le rôle", `${role.members.size}`) 72 | .addField("Couleur", `${role.hexColor === "#000000" ? "Classique" : role.hexColor}`) 73 | .addField("ID", `${role.id}`, true) 74 | .addField("Affiché séparément", `${role.hoist ? "Oui" : "Non"}`, true) 75 | .addField("Mentionable", `${role.mentionable ? "Oui" : "Non"}`, true) 76 | .addField("Géré par une intégration", `${role.managed ? "Oui" : "Non"}`, true) 77 | .addField("Permissions principales", `${roleperm(role)}`, true) 78 | .addField(`Création du rôle`, ` ()`, true) 79 | .setFooter(`Création du rôle`) 80 | .setTimestamp(role.createdAt); 81 | 82 | message.channel.send(roleEmbed) 83 | 84 | 85 | } 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /commands/utilitaire/serverinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | const axios = require('axios') 10 | 11 | module.exports = { 12 | name: 'serverinfo', 13 | aliases: ['si'], 14 | run: async (client, message, args, prefix, color) => { 15 | 16 | let perm = "" 17 | message.member.roles.cache.forEach(role => { 18 | if (db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 19 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 20 | if (db.get(`admin_${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 || db.get(`channelpublic_${message.guild.id}_${message.channel.id}`) === true) { 23 | 24 | const guild = client.guilds.cache.get(args[0]) || message.guild 25 | 26 | let boosters = message.guild.members.cache.filter(m => m.premiumSince)?.map(function(m) {return `<@${m.id}> Boost Depuis : `}).join("\n"); 27 | if(!boosters || boosters.length < 1) boosters = "__Personne n'est en train de booster le serveur__"; 28 | 29 | const verificationLevels = { 30 | NONE: '0', 31 | LOW: 'Faible', 32 | MEDIUM: 'Moyen', 33 | HIGH: 'Élevé', 34 | VERY_HIGH: 'Très élevé', 35 | }; 36 | 37 | let NoRoles = 0; 38 | guild.members.cache.forEach((m) => { 39 | if (m.roles.cache.size == 0) i++; 40 | }) 41 | //console.log(NoRoles) 42 | const ServerInfo = new Discord.MessageEmbed() 43 | .setTitle(`${guild.name} `) 44 | .setURL("https://discord.gg/PuqkTuxtFA") 45 | .addField(`Identifiant Serveur :`, `__${guild.id}__`, true) 46 | .addField(`Niveau De Vérification :`, `__${verificationLevels[message.guild.verificationLevel]}__`, true) 47 | .addField(`Nombre De Membre(s) <:4_membre:1217042139037438032> :`, `__${guild.memberCount}__`, true) 48 | .addField(`Nombre De Membre(s) Actif(s) :`, `__${guild.members.cache.filter(m => m.presence?.status === 'online' || m.presence?.status === 'dnd' || m.presence?.status === 'streaming' || m.presence?.status === 'idle').size}__`, true) 49 | .addField(`Nombre D'humain(s) <:4_membre:1220474644004339713> :`, `__${guild.members.cache.filter((m) => !m.user.bot).size}__`, true) 50 | .addField(`Nombre De Bot(s) :robot: :`, `__${guild.members.cache.filter((m) => m.user.bot).size}__`, true) 51 | .addField(`Nombre D'utilisateur(s) En Vocal <:4_vocal:1217007411068669963> :`, `__${guild.members.cache.filter(m => m.voice.channel).size}__`, true) 52 | .addField(`Nombre D'utilisateur(s) Sans Rôle :x: :`, `__${NoRoles}__`, true) 53 | .addField(`Nombre De Boost(s) :`, `__${guild.premiumSubscriptionCount}__`, true) 54 | //.addField(`Nombre De Booster(s) :`, `${boosters}`, true) 55 | .addField(`Nombre De Rôle(s) :scroll: :`, `__${guild.roles.cache.size}__`, true) 56 | .addField(`Nombre De Salon(s) :`, `__${guild.channels.cache.size}__`, true) 57 | .addField(`Nombre D'émoji(s) Total :package: :`, `__${guild.emojis.cache.size}__`, true) 58 | .setImage(message.guild.bannerURL({size: 1024})) 59 | .setFooter("La Création Du Serveur Remonte au :") 60 | .setTimestamp(guild.createdAt) 61 | 62 | .setThumbnail(guild.iconURL({ 63 | dynamic: true 64 | })) 65 | .setColor(color) 66 | 67 | if (guild.icon) ServerInfo.setURL(guild.iconURL({ 68 | dynamic: true 69 | })) 70 | 71 | message.channel.send(ServerInfo) 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /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 { 10 | 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) 11 | } 12 | if (!embedj.title) {} else { 13 | 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) 14 | } 15 | if (!embedj.footer) {} else { 16 | 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) 17 | } 18 | 19 | message.channel.send({ 20 | embed: embedj 21 | }) 22 | 23 | 24 | } 25 | if (db.get(`customcmd_${message.content.toLowerCase()}`) !== null) { 26 | 27 | 28 | message.channel.send(db.get(`customcmd_${message.content.toLowerCase()}`)) 29 | 30 | 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /commands/utilitaire/channelinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | const axios = require('axios') 10 | 11 | module.exports = { 12 | name: 'channelinfo', 13 | aliases: ['channel', 'ci'], 14 | description: 'channel ', 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 || db.get(`channelpublic_${message.guild.id}_${message.channel.id}`) === true) { 24 | 25 | if (!args[0]) { 26 | var channel = message.channel; 27 | } else { 28 | var channel = message.mentions.channels.first() || message.guild.channels.cache.get(args[0]) 29 | } 30 | 31 | if (!channel) { 32 | return; 33 | }; 34 | 35 | if (channel.type === 'text' || channel.type === 'news' || channel.type === 'store') { 36 | 37 | const ChannelInfo = new Discord.MessageEmbed() 38 | 39 | .setTitle(`Voici Les Informations Du Channel : ${channel.name}`) 40 | .addField(`Nom`, `${channel.name}`, true) 41 | .addField(`Description`, `${channel.topic !== null ? channel.topic : 'Aucune Description'}`, true) 42 | .addField(`ID`, `${channel.id}`, true) 43 | .addField(`NSFW`, `${channel.nsfw ? `Oui` : `Non`}`, true) 44 | .addField(`Catégorie`, `${channel.parent !== null ? channel.parent : 'Non Catégorisé'}\n${channel.parentID !== null ? `(${channel.parentID})` : ''}`, true) 45 | .addField(`Position dans la catégorie`, `${channel.position + 1}`, true) 46 | .addField(`Date de création`, ` ()`, true) 47 | .setColor(color) 48 | .setTimestamp() 49 | .setFooter(`${client.config.name}`) 50 | 51 | message.channel.send(ChannelInfo) 52 | 53 | } 54 | if (channel.type === 'category') { 55 | 56 | 57 | const CategoryInfo = new Discord.MessageEmbed() 58 | 59 | .setTitle(`Voici Les Informations De La Catégorie : ${channel.name}`) 60 | .addField(`Nom`, `${channel.name}`, true) 61 | .addField(`ID`, `${channel.id}`, true) 62 | .addField(`Salons`, `${channel.children.size}`, true) 63 | .addField(`Position`, `${channel.rawPosition}`, true) 64 | .addField(`Date de création`, ` ()`, true) 65 | .setColor(color) 66 | .setTimestamp() 67 | .setFooter(`${client.config.name}`) 68 | 69 | message.channel.send(CategoryInfo) 70 | 71 | } 72 | 73 | if (channel.type === 'voice') { 74 | 75 | const VoiceInfo = new Discord.MessageEmbed() 76 | 77 | .setTitle(`Voici Les Informations Du Vocal : ${channel.name}`) 78 | .addField(`Nom`, `${channel.name}`, true) 79 | .addField(`ID`, `${channel.id}`, true) 80 | .addField(`Débit binaire (bitrate)`, `${channel.bitrate / 1000 + 'kbps'}`, true) 81 | .addField(`Membres connectés`, `${channel.members.size}`, true) 82 | .addField(`Limite d'utilisateur`, `${channel.userLimit === 0 ? 'Aucune Limite' : channel.userLimit}`, true) 83 | .addField(`Date de création`, ` ()`, true) 84 | .setColor(color) 85 | .setTimestamp() 86 | .setFooter(`${client.config.name}`) 87 | 88 | 89 | message.channel.send(VoiceInfo) 90 | 91 | } 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /events/automod/messageUpdate.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | const Discord = require("discord.js") 8 | module.exports = async (client, oldMessage, newMessage) => { 9 | 10 | const guild = oldMessage.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_${guild.id}`); 14 | 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`) 15 | if (!muterole) { 16 | muterole = await guild.roles.create({ 17 | data: { 18 | name: 'muet', 19 | permissions: 0 20 | } 21 | }, "muterole") 22 | 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_${guild.id}`, `${muterole.id}`) 28 | 29 | 30 | } 31 | 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 32 | 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 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 => oldMessage.content.includes(word))) { 66 | 67 | oldMessage.delete().then(() => { 68 | db.add(`warn_${oldMessage.id}`, 1) 69 | return channel.send(`${oldMessage} vous n'avez pas l'autorisation d'envoyer des liens ici`).then(msg => { 70 | msg.delete({ 71 | timeout: 3000 72 | }) 73 | }).catch(err => {}); 74 | }) 75 | 76 | if (db.get(`warn_${oldMessage.id}`) <= 3) { 77 | oldMessage.roles.add(muterole.id).catch(err => []) 78 | const embed = new Discord.MessageEmbed() 79 | .setColor(color) 80 | .setDescription(`${oldMessage} a été **mute 15minutes** pour avoir \`spam des invitations\``) 81 | if (raidlog) raidlog.send(embed) 82 | } else 83 | if (db.get(`warn_${oldMessage.id}`) <= 5) { 84 | 85 | oldMessage.kick().catch(err => []) 86 | const embed = new Discord.MessageEmbed() 87 | .setColor(color) 88 | .setDescription(`${oldMessage} a été **kick** pour avoir \`spam des invitations\``) 89 | if (raidlog) raidlog.send(embed) 90 | } else if (db.get(`warn_${oldMessage.id}`) <= 9) { 91 | oldMessage.ban().catch(err => []) 92 | const embed = new Discord.MessageEmbed() 93 | .setColor(color) 94 | .setDescription(`${oldMessage} a été **ban** pour avoir \`spam des invitations\``) 95 | if (raidlog) raidlog.send(embed) 96 | 97 | } 98 | 99 | 100 | setInterval(async () => { 101 | db.delete(`warn_${oldMessage.id}`) 102 | 103 | }, 60 * 60000); 104 | } 105 | 106 | 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /commands/mods/unmute.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | 10 | function unban(message, user, authorcooldown) { 11 | message.guild.members.unban(user.id, { 12 | reason: `Debannis par ${message.author.tag}` 13 | }).then(r => { 14 | authorcooldown.limit++ 15 | setTimeout(() => { 16 | authorcooldown.limit = authorcooldown.limit - 1 17 | }, 120000); 18 | }) 19 | }; 20 | module.exports = { 21 | name: 'unmute', 22 | aliases: [], 23 | run: async (client, message, args, prefix, color) => { 24 | let chx = db.get(`logmod_${message.guild.id}`); 25 | const logschannel = message.guild.channels.cache.get(chx) 26 | if (args[0] == "all") { 27 | let perm = "" 28 | message.member.roles.cache.forEach(role => { 29 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = null 30 | if (db.get(`admin_${message.guild.id}_${role.id}`)) perm = null 31 | }) 32 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 33 | let Muted = await db.fetch(`mRole_${message.guild.id}`); 34 | 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`) 35 | if (!muteRole) return message.channel.send(`Je ne trouve pas le rôle **muet**`) 36 | if (muteRole.members.size === 0 || undefined || false || null) return message.channel.send(`Tous les membres ont été unmute`) 37 | message.channel.send(`Tous les membres ont été unmute`) 38 | muteRole.members 39 | .forEach((m, i) => { 40 | m.send(`Vous avez été **unmute** de ${message.guild.name}`) 41 | m.roles.remove(muteRole.id) 42 | db.set(`mute_${message.guild.id}_${m.user.id}`, false) 43 | 44 | 45 | }) 46 | } 47 | } else if (args[0]) { 48 | let perm = "" 49 | message.member.roles.cache.forEach(role => { 50 | if (db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 51 | if (db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 52 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 53 | }) 54 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 55 | const user = message.mentions.members.first() || message.guild.members.cache.get(args[0]) 56 | 57 | if (!user) { 58 | return message.channel.send(`Aucun membre trouvé pour \`${args[0]}\``); 59 | } 60 | let Muted = await db.fetch(`mRole_${message.guild.id}`); 61 | 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`) 62 | 63 | if (!muterole) return message.channel.send(`Erreur : aucun rôle muet enregistré`) 64 | if (user.roles.cache.has(muterole)) { 65 | return message.channel.send(`${user} n'était pas mute`); 66 | } 67 | 68 | user.roles.remove(muterole, `Unmute par ${message.author.tag}`) 69 | 70 | message.channel.send(`${user} a été **unmute** (*le message s'envoie même si le membre n'est pas mute*)`); 71 | db.set(`mute_${message.guild.id}_${user.id}`, null) 72 | 73 | user.send(`Vous avez été **unmute** sur **${message.guild.name}**`); 74 | 75 | 76 | logschannel.send(new Discord.MessageEmbed() 77 | .setColor(color) 78 | 79 | .setDescription(`${message.author} a **unmute** ${user}`) 80 | ) 81 | } 82 | } 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /events/antiraid/channelUpdate.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | 8 | module.exports = async (client, oldChannel, newChannel) => { 9 | const guild = oldChannel.guild 10 | const color = db.get(`color_${guild.id}`) === null ? client.config.color : db.get(`color_${guild.id}`) 11 | const raidlog = guild.channels.cache.get(db.get(`${guild.id}.raidlog`)) 12 | 13 | axios.get(`https://discord.com/api/v9/guilds/${oldChannel.guild.id}/audit-logs?ilimit=1&action_type=11`, { 14 | headers: { 15 | Authorization: `Bot ${process.env.token}` 16 | } 17 | }).then(response => { 18 | if (response.data && response.data.audit_log_entries[0].user_id) { 19 | let perm = "" 20 | 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 21 | 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 22 | if (db.get(`channelsmod_${guild.id}`) === true && !perm) { 23 | if (db.get(`channelsmodsanction_${guild.id}`) === "ban") { 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 ${process.env.token}` 29 | }, 30 | data: { 31 | delete_message_days: '1', 32 | reason: 'Antichannel' 33 | } 34 | }).then(() => { 35 | 36 | 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** !`)) 37 | }).catch(() => { 38 | 39 | 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** !`)) 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 | -------------------------------------------------------------------------------- /events/antiraid/guildMemberRoleAdd.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | 8 | module.exports = async (client, member, role) => { 9 | const guild = member.guild 10 | const color = db.get(`color_${guild.id}`) === null ? client.config.color : db.get(`color_${guild.id}`) 11 | const raidlog = guild.channels.cache.get(db.get(`${guild.id}.raidlog`)) 12 | 13 | if (db.get(`blrankmd_${client.user.id}_${member.id}`) !== null) { 14 | 15 | member.roles.remove(role.id).then(() => { 16 | 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 !`)) 17 | 18 | }).catch(() => { 19 | 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 !`)) 20 | 21 | }) 22 | } 23 | 24 | const action = await guild.fetchAuditLogs({ 25 | limit: 1, 26 | type: "MEMBER_ROLE_UPDATE" 27 | }).then(async (audit) => audit.entries.first()) 28 | let perm = "" 29 | 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 30 | 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 31 | if (db.get(`rolesadd_${guild.id}`) === true && !perm) { 32 | 33 | 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")) { 34 | 35 | if (db.get(`rolesaddsanction_${guild.id}`) === "ban") { 36 | axios({ 37 | url: `https://discord.com/api/v9/guilds/${guild.id}/bans/${action.executor.id}`, 38 | method: 'PUT', 39 | headers: { 40 | Authorization: `bot ${process.env.token}` 41 | }, 42 | data: { 43 | delete_message_days: '1', 44 | reason: 'Antirole' 45 | } 46 | }).then(() => { 47 | member.roles.remove(role.id) 48 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ajouter des permissions à \`${member.user.tag}\`, il a été **ban** !`)) 49 | }).catch(() => { 50 | member.roles.remove(role.id) 51 | 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** !`)) 52 | 53 | }) 54 | } else if (db.get(`rolesaddsanction_${guild.id}`) === "kick") { 55 | guild.members.cache.get(action.executor.id).kick().then(() => { 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}\`, il a été **kick** !`)) 58 | }).catch(() => { 59 | member.roles.remove(role.id) 60 | 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** !`)) 61 | }) 62 | } else if (db.get(`rolesaddsanction_${guild.id}`) === "derank") { 63 | 64 | guild.members.cache.get(action.executor.id).roles.set([]).then(() => { 65 | 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}\`, il a été **derank** !`)) 68 | }).catch(() => { 69 | member.roles.remove(role.id) 70 | 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** !`)) 71 | }) 72 | } 73 | } 74 | 75 | 76 | } 77 | 78 | 79 | 80 | }; 81 | -------------------------------------------------------------------------------- /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 | }); 25 | } catch {} 26 | }, 10000) 27 | }) 28 | 29 | 30 | 31 | client.on("voiceStateUpdate", (oldState, newState) => { 32 | let salon = db.get(`jc_${oldState.guild.id}`) 33 | if (salon == null) return; 34 | 35 | 36 | let oldparentname = "unknown" 37 | let oldchannelname = "unknown" 38 | let oldchanelid = "unknown" 39 | if (oldState && oldState.channel && oldState.channel.parent && oldState.channel.parent.name) oldparentname = oldState.channel.parent.name 40 | if (oldState && oldState.channel && oldState.channel.name) oldchannelname = oldState.channel.name 41 | if (oldState && oldState.channelID) oldchanelid = oldState.channelID 42 | let newparentname = "unknown" 43 | let newchannelname = "unknown" 44 | let newchanelid = "unknown" 45 | if (newState && newState.channel && newState.channel.parent && newState.channel.parent.name) newparentname = newState.channel.parent.name 46 | if (newState && newState.channel && newState.channel.name) newchannelname = newState.channel.name 47 | if (newState && newState.channelID) newchanelid = newState.channelID 48 | if (oldState.channelID) { 49 | if (typeof oldState.channel.parent !== "undefined") oldChannelName = `${oldparentname}\n\t**${oldchannelname}**\n*${oldchanelid}*` 50 | else oldChannelName = `-\n\t**${oldparentname}**\n*${oldchanelid}*` 51 | } 52 | if (newState.channelID) { 53 | if (typeof newState.channel.parent !== "undefined") newChannelName = `${newparentname}\n\t**${newchannelname}**\n*${newchanelid}*` 54 | else newChannelName = `-\n\t**${newchannelname}**\n*${newchanelid}*` 55 | } 56 | if (!oldState.channelID && newState.channelID) { 57 | if (newState.channelID !== salon) return; 58 | tempochannel(newState); 59 | } 60 | if (oldState.channelID && !newState.channelID) { 61 | if (tempomap.get(`tempvoicechannel_${oldState.guild.id}_${oldState.channelID}`)) { 62 | var vc = oldState.guild.channels.cache.get(tempomap.get(`tempvoicechannel_${oldState.guild.id}_${oldState.channelID}`)); 63 | if (vc.members.size < 1) { 64 | tempomap.delete(`tempvoicechannel_${oldState.guild.id}_${oldState.channelID}`); 65 | return vc.delete(); 66 | } else {} 67 | } 68 | } 69 | if (oldState.channelID && newState.channelID) { 70 | 71 | if (oldState.channelID !== newState.channelID) { 72 | if (newState.channelID === salon) 73 | tempochannel(oldState); 74 | if (tempomap.get(`tempvoicechannel_${oldState.guild.id}_${oldState.channelID}`)) { 75 | var vc = oldState.guild.channels.cache.get(tempomap.get(`tempvoicechannel_${oldState.guild.id}_${oldState.channelID}`)); 76 | if (vc.members.size < 1) { 77 | tempomap.delete(`tempvoicechannel_${oldState.guild.id}_${oldState.channelID}`); 78 | return vc.delete(); 79 | } else {} 80 | } 81 | } 82 | } 83 | 84 | }) 85 | async function tempochannel(user) { 86 | let emoji = db.get(`emote_${user.guild.id}`) 87 | if (emoji == null) emoji = "Salon de " 88 | 89 | let categoy = db.get(`catggg_${user.guild.id}`) 90 | if (categoy == null) return; 91 | 92 | 93 | //user.member.user.send("") 94 | await user.guild.channels.create(`${emoji}${user.member.user.username}`, { 95 | type: 'voice', 96 | parent: categoy, 97 | }).then(async vc => { 98 | user.setChannel(vc); 99 | 100 | tempomap.set(`tempvoicechannel_${vc.guild.id}_${vc.id}`, vc.id); 101 | await vc.overwritePermissions([{ 102 | id: user.id, 103 | allow: ['MANAGE_CHANNELS'], 104 | }, 105 | { 106 | id: user.guild.id, 107 | allow: ['VIEW_CHANNEL'], 108 | }, 109 | ]); 110 | }) 111 | } 112 | } 113 | 114 | 115 | 116 | module.exports = tempo 117 | -------------------------------------------------------------------------------- /events/automod/message.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | const Discord = require("discord.js") 8 | let random_string = require("randomstring"); 9 | 10 | module.exports = async (client, message) => { 11 | 12 | const guild = message.guild 13 | const color = db.get(`color_${guild.id}`) === null ? client.config.color : db.get(`color_${guild.id}`) 14 | const raidlog = guild.channels.cache.get(db.get(`${guild.id}.raidlog`)) 15 | let Muted = await db.fetch(`mRole_${message.guild.id}`); 16 | 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`) 17 | if (!muterole) { 18 | muterole = await message.guild.roles.create({ 19 | data: { 20 | name: 'muet', 21 | permissions: 0 22 | } 23 | }, "muterole") 24 | message.guild.channels.cache.forEach(channel => channel.createOverwrite(muterole, { 25 | SEND_MESSAGES: false, 26 | CONNECT: false, 27 | ADD_REACTIONS: false 28 | }, "muterole")) 29 | db.set(`mRole_${message.guild.id}`, `${muterole.id}`) 30 | 31 | 32 | } 33 | 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 34 | 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 35 | if (db.get(`link_${guild.id}`) === true && !perm) { 36 | let pub; 37 | if (db.get(`linktype_${guild.id}`) === null || db.get(`linktype_${guild.id}`).toLowerCase() === "Invite") { 38 | pub = [ 39 | "discord.me", 40 | "discord.io", 41 | "discord.gg", 42 | "invite.me", 43 | "discordapp.com/invite", 44 | ".gg" 45 | ]; 46 | 47 | 48 | } 49 | if (db.get(`typelink_${guild.id}`) === " all") { 50 | pub = [ 51 | "discord.me", 52 | "discord.com", 53 | "discord.io", 54 | "discord.gg", 55 | "invite.me", 56 | "discord.gg/", 57 | "discord.", 58 | "discordapp.com/invite", 59 | ".gg", 60 | "https", 61 | "http", 62 | "https:" 63 | 64 | ]; 65 | } 66 | 67 | if (pub.some(word => message.content.includes(word))) { 68 | 69 | message.delete().then(() => { 70 | db.add(`warn_${message.author.id}`, 1) 71 | let warnID = random_string.generate({ 72 | charset: 'numeric', 73 | length: 8 74 | }); 75 | 76 | 77 | 78 | db.push(`info.${message.guild.id}.${message.author.id}`, { 79 | moderator: `Moi`, 80 | reason: "Message Contenant un lien", 81 | date: Date.parse(new Date) / 1000, 82 | id: warnID 83 | }) 84 | db.add(`number.${message.guild.id}.${message.author.id}`, 1) 85 | return message.channel.send(`${message.author} vous n'avez pas l'autorisation d'envoyer des liens ici`).then(msg => { 86 | msg.delete({ 87 | timeout: 3000 88 | }) 89 | }).catch(err => message.delete()); 90 | }) 91 | 92 | if (db.get(`warn_${message.author.id}`) <= 3) { 93 | message.member.roles.add(muterole.id).catch(err => []) 94 | const embed = new Discord.MessageEmbed() 95 | .setColor(color) 96 | .setDescription(`${message.author} a été **mute** pour avoir \`spam des invitations\``) 97 | if (raidlog) raidlog.send(embed) 98 | } else 99 | if (db.get(`warn_${message.author.id}`) <= 5) { 100 | 101 | message.member.kick().catch(err => []) 102 | const embed = new Discord.MessageEmbed() 103 | .setColor(color) 104 | .setDescription(`${message.author} a été **kick** pour avoir \`spam des invitations\``) 105 | if (raidlog) raidlog.send(embed) 106 | } else if (db.get(`warn_${message.author.id}`) <= 9) { 107 | message.member.ban().catch(err => []) 108 | const embed = new Discord.MessageEmbed() 109 | .setColor(color) 110 | .setDescription(`${message.author} a été **ban** pour avoir \`spam des invitations\``) 111 | if (raidlog) raidlog.send(embed) 112 | 113 | } 114 | 115 | 116 | setInterval(async () => { 117 | db.delete(`warn_${message.author.id}`) 118 | 119 | }, 60 * 60000); 120 | } 121 | 122 | 123 | } 124 | } 125 | -------------------------------------------------------------------------------- /commands/utilitaire/allbot.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const { 3 | MessageEmbed 4 | } = require('discord.js') 5 | const db = require('quick.db') 6 | const { 7 | MessageActionRow, 8 | MessageButton, 9 | MessageMenuOption, 10 | MessageMenu 11 | } = require('discord-buttons'); 12 | 13 | function sleep(ms) { 14 | return new Promise((resolve) => { 15 | setTimeout(resolve, ms) 16 | }) 17 | } 18 | module.exports = { 19 | name: 'allbot', 20 | aliases: [], 21 | 22 | run: async (client, message, args, prefix, color) => { 23 | 24 | let perm = "" 25 | message.member.roles.cache.forEach(role => { 26 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 27 | if (db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 28 | }) 29 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 30 | 31 | var str_filtrer = message.guild.members.cache.filter(member => member.user.bot) 32 | if (str_filtrer.size === 0 || undefined || false || null) return message.channel.send(new Discord.MessageEmbed().setColor(color).setFooter(`${client.config.name}`).setTimestamp().setTitle("Aucun bot présents")) 33 | 34 | 35 | let p0 = 0; 36 | let p1 = 5; 37 | let page = 1; 38 | 39 | const embed = new Discord.MessageEmbed() 40 | .setTitle('Liste des bot présents') 41 | .setDescription(str_filtrer 42 | .map(r => r) 43 | .filter(x => message.guild.members.cache.get(x.user.id)) 44 | .map((m, i) => `${i+1}) ${m.user} (${m.user.id})`) 45 | .slice(p0, p1) 46 | ) 47 | 48 | .setTimestamp() 49 | .setColor(color) 50 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 51 | 52 | 53 | message.channel.send(embed).then(async tdata => { 54 | if (str_filtrer.size > 5) { 55 | const B1 = new MessageButton() 56 | .setLabel("◀") 57 | .setStyle("gray") 58 | .setID('allbot1'); 59 | 60 | const B2 = new MessageButton() 61 | .setLabel("▶") 62 | .setStyle("gray") 63 | .setID('allbot2'); 64 | 65 | const bts = new MessageActionRow() 66 | .addComponent(B1) 67 | .addComponent(B2) 68 | tdata.edit("", { 69 | embed: embed, 70 | components: [bts] 71 | }) 72 | setTimeout(() => { 73 | tdata.edit("", { 74 | components: [], 75 | embed: new Discord.MessageEmbed() 76 | .setTitle('Liste des bot présents') 77 | .setDescription(str_filtrer 78 | .map(r => r) 79 | .filter(x => message.guild.members.cache.get(x.user.id)) 80 | .map((m, i) => `${i+1}) ${m.user} (${m.user.id})`) 81 | .slice(p0, p1) 82 | ) 83 | 84 | .setTimestamp() 85 | .setColor(color) 86 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 87 | 88 | 89 | }) 90 | // message.channel.send(embeds) 91 | }, 60000 * 5) 92 | client.on("clickButton", (button) => { 93 | if (button.id === "allbot1") { 94 | if (button.clicker.user.id !== message.author.id) return; 95 | button.reply.defer(true) 96 | 97 | p0 = p0 - 5; 98 | p1 = p1 - 5; 99 | page = page - 1 100 | 101 | if (p0 < 0) { 102 | return 103 | } 104 | if (p0 === undefined || p1 === undefined) { 105 | return 106 | } 107 | 108 | 109 | embed.setDescription(str_filtrer 110 | .map(r => r) 111 | .filter(x => message.guild.members.cache.get(x.user.id)) 112 | .map((m, i) => `${i+1}) ${m.user} (${m.user.id})`) 113 | .slice(p0, p1) 114 | ) 115 | 116 | .setTimestamp() 117 | .setColor(color) 118 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 119 | tdata.edit(embed); 120 | 121 | } 122 | if (button.id === "allbot2") { 123 | if (button.clicker.user.id !== message.author.id) return; 124 | button.reply.defer(true) 125 | 126 | p0 = p0 + 5; 127 | p1 = p1 + 5; 128 | 129 | page++; 130 | 131 | if (p1 > str_filtrer.size + 5) { 132 | return 133 | } 134 | if (p0 === undefined || p1 === undefined) { 135 | return 136 | } 137 | 138 | 139 | embed.setDescription(str_filtrer 140 | .map(r => r) 141 | .filter(x => message.guild.members.cache.get(x.user.id)) 142 | .map((m, i) => `${i+1}) ${m.user} (${m.user.id})`) 143 | .slice(p0, p1) 144 | ) 145 | 146 | .setTimestamp() 147 | .setColor(color) 148 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 149 | tdata.edit(embed); 150 | 151 | } 152 | }) 153 | } 154 | 155 | }) 156 | 157 | } 158 | } 159 | } 160 | -------------------------------------------------------------------------------- /commands/utilitaire/top.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | 10 | module.exports = { 11 | name: 'top', 12 | aliases: ['leaderboard'], 13 | run: async (client, message, args, prefix, color) => { 14 | 15 | let perm = "" 16 | message.member.roles.cache.forEach(role => { 17 | if (db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 18 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 19 | if (db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 20 | }) 21 | 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) { 22 | if (args[0] === "rank" || args[0] === "level") { 23 | 24 | let money = db.all().filter(data => data.ID.startsWith(`guild_${message.guild.id}_xp`)).sort((a, b) => b.data - a.data) 25 | let p0 = 0; 26 | let p1 = 5; 27 | let page = 1; 28 | 29 | const embed = new Discord.MessageEmbed() 30 | 31 | .setTitle('Classement Rank') 32 | .setDescription(money.filter(x => message.guild.members.cache.get(x.ID.split('_')[3])).map((m, i) => `${i + 1}) **${client.users.cache.get(m.ID.split('_')[3]).tag}** : Niveau **${db.get(`guild_${message.guild.id}_level_${m.ID.split('_')[3]}`) || 0}** (*XP total : ${m.data || 0}*)`).slice(0, 5)) 33 | .setFooter(`${page}/${Math.ceil(money.length === 0?1:money.length / 5)} • ${client.config.name}`) 34 | .setTimestamp() 35 | .setColor(color) 36 | 37 | message.channel.send(embed).then(async tdata => { 38 | if (money.length > 5) { 39 | const B1 = new MessageButton() 40 | .setLabel("◀") 41 | .setStyle("gray") 42 | .setID('toprank1'); 43 | 44 | const B2 = new MessageButton() 45 | .setLabel("▶") 46 | .setStyle("gray") 47 | .setID('toprank2'); 48 | 49 | const bts = new MessageActionRow() 50 | .addComponent(B1) 51 | .addComponent(B2) 52 | 53 | tdata.edit("", { 54 | embed: embed, 55 | components: [bts] 56 | }) 57 | setTimeout(() => { 58 | tdata.edit("", { 59 | components: [], 60 | embed: new Discord.MessageEmbed() 61 | 62 | .setTitle('Classement Rank') 63 | .setDescription(money.filter(x => message.guild.members.cache.get(x.ID.split('_')[3])).map((m, i) => `${i + 1}) **${client.users.cache.get(m.ID.split('_')[3]).tag}** : Niveau **${db.get(`guild_${message.guild.id}_level_${m.ID.split('_')[3]}`) || 0}** (*XP total : ${m.data || 0}*)`).slice(0, 5)) 64 | .setFooter(`1/${Math.ceil(money.length === 0?1:money.length / 5)} • ${client.config.name}`) 65 | .setTimestamp() 66 | .setColor(color) 67 | 68 | 69 | }) 70 | }, 60000 * 5) 71 | 72 | client.on("clickButton", (button) => { 73 | if (button.clicker.user.id !== message.author.id) return; 74 | if (button.id === "toprank1") { 75 | button.reply.defer(true) 76 | 77 | p0 = p0 - 5; 78 | p1 = p1 - 5; 79 | page = page - 1 80 | 81 | if (p0 < 0) { 82 | return 83 | } 84 | if (p0 === undefined || p1 === undefined) { 85 | return 86 | } 87 | 88 | embed.setDescription(money.filter(x => message.guild.members.cache.get(x.ID.split('_')[3])).map((m, i) => `${i + 1}) **${client.users.cache.get(m.ID.split('_')[3]).tag}** : Niveau **${db.get(`guild_${message.guild.id}_level_${m.ID.split('_')[3]}`) || 0}** (*XP total : ${m.data || 0}*)`).slice(p0, p1)) 89 | embed.setFooter(`${page}/${Math.ceil(money.length === 0?1:money.length / 5)} • ${client.config.name}`) 90 | embed.setTimestamp() 91 | tdata.edit(embed); 92 | 93 | } 94 | 95 | if (button.id === "toprank2") { 96 | button.reply.defer(true) 97 | 98 | p0 = p0 + 5; 99 | p1 = p1 + 5; 100 | 101 | page++; 102 | 103 | if (p1 > money.length + 5) { 104 | return 105 | } 106 | if (p0 === undefined || p1 === undefined) { 107 | return 108 | } 109 | 110 | 111 | embed.setDescription(money.filter(x => message.guild.members.cache.get(x.ID.split('_')[3])).map((m, i) => `${i + 1}) **${client.users.cache.get(m.ID.split('_')[3]).tag}** : Niveau **${db.get(`guild_${message.guild.id}_level_${m.ID.split('_')[3]}`) || 0}** (*XP total : ${m.data || 0}*)`).slice(p0, p1)) 112 | embed.setFooter(`${page}/${Math.ceil(money.length === 0?1:money.length / 5)} • ${client.config.name}`) 113 | embed.setTimestamp() 114 | tdata.edit(embed); 115 | } 116 | }) 117 | } 118 | }) 119 | } 120 | } 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /commands/utilitaire/alladmin.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const { 3 | MessageEmbed 4 | } = require('discord.js') 5 | const db = require('quick.db') 6 | const { 7 | MessageActionRow, 8 | MessageButton, 9 | MessageMenuOption, 10 | MessageMenu 11 | } = require('discord-buttons'); 12 | 13 | function sleep(ms) { 14 | return new Promise((resolve) => { 15 | setTimeout(resolve, ms) 16 | }) 17 | } 18 | module.exports = { 19 | name: 'alladmin', 20 | aliases: [], 21 | 22 | run: async (client, message, args, prefix, color) => { 23 | 24 | let perm = "" 25 | message.member.roles.cache.forEach(role => { 26 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 27 | if (db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 28 | }) 29 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 30 | var str_filtrer = message.guild.members.cache.filter(member => member.hasPermission("ADMINISTRATOR") && !member.user.bot) 31 | if (str_filtrer.size === 0 || undefined || false || null) return message.channel.send(new Discord.MessageEmbed().setColor(color).setFooter(`${client.config.name}`).setTimestamp().setTitle("Aucun admin présents")) 32 | 33 | let p0 = 0; 34 | let p1 = 5; 35 | let page = 1; 36 | 37 | const embed = new Discord.MessageEmbed() 38 | .setTitle('Liste des admins présents') 39 | .setDescription(str_filtrer 40 | .map(r => r) 41 | .filter(x => message.guild.members.cache.get(x.user.id)) 42 | .map((m, i) => `${i+1}) ${m.user} (${m.user.id})`) 43 | .slice(p0, p1) 44 | ) 45 | 46 | .setTimestamp() 47 | .setColor(color) 48 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 49 | 50 | 51 | message.channel.send(embed).then(async tdata => { 52 | if (5 < str_filtrer.size) { 53 | const B1 = new MessageButton() 54 | .setLabel("◀") 55 | .setStyle("gray") 56 | .setID('alladm1'); 57 | 58 | const B2 = new MessageButton() 59 | .setLabel("▶") 60 | .setStyle("gray") 61 | .setID('alladm2'); 62 | 63 | const bts = new MessageActionRow() 64 | .addComponent(B1) 65 | .addComponent(B2) 66 | tdata.edit("", { 67 | embed: embed, 68 | components: [bts] 69 | }) 70 | setTimeout(() => { 71 | tdata.edit("", { 72 | components: [], 73 | embed: new Discord.MessageEmbed() 74 | .setTitle('Liste des admins présents') 75 | .setDescription(str_filtrer 76 | .map(r => r) 77 | .filter(x => message.guild.members.cache.get(x.user.id)) 78 | .map((m, i) => `${i+1}) ${m.user} (${m.user.id})`) 79 | .slice(p0, p1) 80 | ) 81 | 82 | .setTimestamp() 83 | .setColor(color) 84 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 85 | 86 | 87 | }) 88 | // message.channel.send(embeds) 89 | }, 60000 * 5) 90 | client.on("clickButton", (button) => { 91 | if (button.id === "alladm1") { 92 | if (button.clicker.user.id !== message.author.id) return; 93 | 94 | button.reply.defer(true) 95 | 96 | p0 = p0 - 5; 97 | p1 = p1 - 5; 98 | page = page - 1 99 | 100 | if (p0 < 0) { 101 | return 102 | } 103 | if (p0 === undefined || p1 === undefined) { 104 | return 105 | } 106 | 107 | 108 | embed.setDescription(str_filtrer 109 | .map(r => r) 110 | .filter(x => message.guild.members.cache.get(x.user.id)) 111 | .map((m, i) => `${i+1}) ${m.user} (${m.user.id})`) 112 | .slice(p0, p1) 113 | ) 114 | 115 | .setTimestamp() 116 | .setColor(color) 117 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 118 | tdata.edit(embed); 119 | 120 | } 121 | if (button.id === "alladm2") { 122 | if (button.clicker.user.id !== message.author.id) return; 123 | 124 | button.reply.defer(true) 125 | 126 | p0 = p0 + 5; 127 | p1 = p1 + 5; 128 | 129 | page++; 130 | 131 | if (p1 > str_filtrer.size + 5) { 132 | return 133 | } 134 | if (p0 === undefined || p1 === undefined) { 135 | return 136 | } 137 | 138 | 139 | embed.setDescription(str_filtrer 140 | .map(r => r) 141 | .filter(x => message.guild.members.cache.get(x.user.id)) 142 | .map((m, i) => `${i+1}) ${m.user} (${m.user.id})`) 143 | .slice(p0, p1) 144 | ) 145 | 146 | .setTimestamp() 147 | .setColor(color) 148 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 149 | tdata.edit(embed); 150 | 151 | } 152 | }) 153 | } 154 | 155 | }) 156 | 157 | } 158 | } 159 | } 160 | -------------------------------------------------------------------------------- /commands/utilitaire/allbotadmin.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const { 3 | MessageEmbed 4 | } = require('discord.js') 5 | const db = require('quick.db') 6 | const { 7 | MessageActionRow, 8 | MessageButton, 9 | MessageMenuOption, 10 | MessageMenu 11 | } = require('discord-buttons'); 12 | 13 | function sleep(ms) { 14 | return new Promise((resolve) => { 15 | setTimeout(resolve, ms) 16 | }) 17 | } 18 | module.exports = { 19 | name: 'allbotadmin', 20 | aliases: [], 21 | 22 | run: async (client, message, args, prefix, color) => { 23 | 24 | let perm = "" 25 | message.member.roles.cache.forEach(role => { 26 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 27 | if (db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 28 | }) 29 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 30 | 31 | var str_filtrer = message.guild.members.cache.filter(member => member.hasPermission("ADMINISTRATOR") && member.user.bot) 32 | if (str_filtrer.size === 0 || undefined || false || null) return message.channel.send(new Discord.MessageEmbed().setColor(color).setFooter(`${client.config.name}`).setTitle("Aucun bot admins présents")) 33 | 34 | 35 | let p0 = 0; 36 | let p1 = 5; 37 | let page = 1; 38 | 39 | const embed = new Discord.MessageEmbed() 40 | .setTitle('Liste des bots admins présents') 41 | .setDescription(str_filtrer 42 | .map(r => r) 43 | .filter(x => message.guild.members.cache.get(x.user.id)) 44 | .map((m, i) => `${i+1}) ${m.user} (${m.user.id})`) 45 | .slice(p0, p1) 46 | ) 47 | 48 | .setTimestamp() 49 | .setColor(color) 50 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 51 | 52 | 53 | message.channel.send(embed).then(async tdata => { 54 | if (str_filtrer.size > 5) { 55 | const B1 = new MessageButton() 56 | .setLabel("◀") 57 | .setStyle("gray") 58 | .setID('allbotadm1'); 59 | 60 | const B2 = new MessageButton() 61 | .setLabel("▶") 62 | .setStyle("gray") 63 | .setID('allbotadm2'); 64 | 65 | const bts = new MessageActionRow() 66 | .addComponent(B1) 67 | .addComponent(B2) 68 | tdata.edit("", { 69 | embed: embed, 70 | components: [bts] 71 | }) 72 | setTimeout(() => { 73 | tdata.edit("", { 74 | components: [], 75 | embed: new Discord.MessageEmbed() 76 | .setTitle('Liste des bots admins présents') 77 | .setDescription(str_filtrer 78 | .map(r => r) 79 | .filter(x => message.guild.members.cache.get(x.user.id)) 80 | .map((m, i) => `${i+1}) ${m.user} (${m.user.id})`) 81 | .slice(p0, p1) 82 | ) 83 | 84 | .setTimestamp() 85 | .setColor(color) 86 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 87 | 88 | 89 | }) 90 | // message.channel.send(embeds) 91 | }, 60000 * 5) 92 | client.on("clickButton", (button) => { 93 | if (button.id === "allbotadm1") { 94 | if (button.clicker.user.id !== message.author.id) return; 95 | button.reply.defer(true) 96 | 97 | p0 = p0 - 5; 98 | p1 = p1 - 5; 99 | page = page - 1 100 | 101 | if (p0 < 0) { 102 | return 103 | } 104 | if (p0 === undefined || p1 === undefined) { 105 | return 106 | } 107 | 108 | 109 | embed.setDescription(str_filtrer 110 | .map(r => r) 111 | .filter(x => message.guild.members.cache.get(x.user.id)) 112 | .map((m, i) => `${i+1}) ${m.user} (${m.user.id})`) 113 | .slice(p0, p1) 114 | ) 115 | 116 | .setTimestamp() 117 | .setColor(color) 118 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 119 | tdata.edit(embed); 120 | 121 | } 122 | if (button.id === "allbotadm2") { 123 | if (button.clicker.user.id !== message.author.id) return; 124 | button.reply.defer(true) 125 | 126 | p0 = p0 + 5; 127 | p1 = p1 + 5; 128 | 129 | page++; 130 | 131 | if (p1 > str_filtrer.size + 5) { 132 | return 133 | } 134 | if (p0 === undefined || p1 === undefined) { 135 | return 136 | } 137 | 138 | 139 | embed.setDescription(str_filtrer 140 | .map(r => r) 141 | .filter(x => message.guild.members.cache.get(x.user.id)) 142 | .map((m, i) => `${i+1}) ${m.user} (${m.user.id})`) 143 | .slice(p0, p1) 144 | ) 145 | 146 | .setTimestamp() 147 | .setColor(color) 148 | .setFooter(`Total: ${str_filtrer.size} • ${client.config.name}`) 149 | tdata.edit(embed); 150 | 151 | } 152 | }) 153 | } 154 | 155 | }) 156 | 157 | } 158 | } 159 | } 160 | -------------------------------------------------------------------------------- /commands/mods/unban.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const ms = require("ms") 4 | const { 5 | MessageActionRow, 6 | MessageButton, 7 | MessageMenuOption, 8 | MessageMenu 9 | } = require('discord-buttons'); 10 | const cooldown = {} 11 | 12 | module.exports = { 13 | name: 'unban', 14 | aliases: [], 15 | run: async (client, message, args, prefix, color) => { 16 | 17 | /*#############################################################UNBAN ALL#####################################################################################*/ 18 | 19 | if (args[0] == 'all') { 20 | let perm = "" 21 | message.member.roles.cache.forEach(role => { 22 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = null 23 | }) 24 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 25 | try { 26 | message.guild.fetchBans().then(bans => { 27 | if (bans.size == 0) { 28 | message.channel.send("Aucune personne n'est ban.") 29 | } else { 30 | bans.forEach(ban => { 31 | setInterval(() => { 32 | if (ban.user) message.guild.members.unban(ban.user.id, `Unbanall par ${message.author.tag}`).catch(err => {}); 33 | }, 250) 34 | 35 | }) 36 | 37 | let wass = db.get(`logmod_${message.guild.id}`); 38 | 39 | const logsmod = message.guild.channels.cache.get(wass) 40 | 41 | message.channel.send(`${bans.size} ${bans.size > 1 ? "utilisateurs ont": "utilisateur a"} été unban`); 42 | if (logsmod) logsmod.send( 43 | 44 | new Discord.MessageEmbed() 45 | //.setAuthor(message.author.tag, message.author.displayAvatarURL({dynamic: true})) 46 | .setColor(color) 47 | //.setTitle(`<:protection:847072581382438953> Modération • Type: **\`bannissement\`**`) 48 | //.setTimestamp() 49 | //.setDescription(` **Bannissement de**: ${user}\n**Auteur**: ${message.author} \n**Salon**: ${message.channel}\n**Temps de réponse**: ${client.ws.ping}ms`) 50 | .setDescription(`${message.author} a **unban** tout les membres bannis`)) 51 | 52 | } 53 | }) 54 | 55 | } catch (error) { 56 | return; 57 | } 58 | } 59 | 60 | } else if (args[0]) { 61 | 62 | /*#############################################################UNBAN#####################################################################################*/ 63 | 64 | let perm = "" 65 | message.member.roles.cache.forEach(role => { 66 | if (db.get(`modsp_${message.guild.id}_${role.id}`)) perm = null 67 | if (db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 68 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 69 | }) 70 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 71 | let wass = db.get(`logmod_${message.guild.id}`); 72 | const logsmod = message.guild.channels.cache.get(wass) 73 | 74 | const user = client.users.cache.get(args[0]) 75 | if (!user) return message.channel.send(`Aucun membre trouvée pour \`${args[0]}\``) 76 | 77 | try { 78 | await message.guild.fetchBan(args[0]) 79 | } catch (e) { 80 | message.channel.send(`<@${args[0]}> n'est pas ban`); 81 | return; 82 | } 83 | 84 | message.guild.members.unban(user.id, `Unban par ${message.author.tag}`) 85 | message.channel.send(`<@${user.id}> n'est plus **banni**`); 86 | if (logsmod) logsmod.send( 87 | new Discord.MessageEmbed() 88 | // .setAuthor(message.author.tag, message.author.displayAvatarURL({dynamic: true})) 89 | .setColor(color) 90 | // .setTitle(`<:protection:847072581382438953> Modération • Type: **\`bannissement\`**`) 91 | // .setTimestamp() 92 | // .setDescription(` **Bannissement de**: ${user}\n**Auteur**: ${message.author} \n**Salon**: ${message.channel}\n**Temps de réponse**: ${client.ws.ping}ms`) 93 | .setDescription(`${message.author} a **unban** ${user}`)) 94 | 95 | 96 | } 97 | } 98 | 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /commands/mods/mutelist.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | const { 10 | MessageEmbed 11 | } = require("discord.js") 12 | 13 | function sleep(ms) { 14 | return new Promise((resolve) => { 15 | setTimeout(resolve, ms) 16 | }) 17 | } 18 | 19 | module.exports = { 20 | name: 'mutelist', 21 | aliases: [], 22 | run: async (client, message, args, prefix, color) => { 23 | 24 | let perm = "" 25 | message.member.roles.cache.forEach(role => { 26 | 27 | if (db.get(`modsp_${message.guild.id}_${role.id}`)) perm = true 28 | if (db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 29 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 30 | }) 31 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 32 | let Muted = await db.fetch(`mRole_${message.guild.id}`); 33 | 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`) 34 | 35 | if (!muteRole) return message.channel.send(new Discord.MessageEmbed().setColor(color).setTitle("Aucun mute en cours")) 36 | if (muteRole.members.size === 0 || undefined || false || null) return message.channel.send(new Discord.MessageEmbed().setColor(color).setFooter(`${client.config.name}`).setTitle("Aucun mute en cours")) 37 | 38 | let p0 = 0; 39 | let p1 = 5; 40 | let page = 1; 41 | 42 | const embed = new Discord.MessageEmbed() 43 | .setTitle('Mute en cours') 44 | .setDescription(muteRole.members 45 | .map(r => r) 46 | .filter(x => message.guild.members.cache.get(x.user.id)) 47 | .map((m, i) => `${i+1}) ${m.user} (${m.user.id})`) 48 | .slice(0, 5) 49 | ) 50 | 51 | .setColor(color) 52 | .setFooter(`Total: ${muteRole.members.size} • ${client.config.name}`) 53 | 54 | 55 | message.channel.send(embed).then(async tdata => { 56 | if (muteRole.members.size > 5) { 57 | const B1 = new MessageButton() 58 | .setLabel("◀") 59 | .setStyle("gray") 60 | .setID('mutelist1'); 61 | 62 | const B2 = new MessageButton() 63 | .setLabel("▶") 64 | .setStyle("gray") 65 | .setID('mutelist2'); 66 | 67 | const bts = new MessageActionRow() 68 | .addComponent(B1) 69 | .addComponent(B2) 70 | tdata.edit("", { 71 | embed: embed, 72 | components: [bts] 73 | }) 74 | setTimeout(() => { 75 | tdata.edit("", { 76 | components: [], 77 | embed: new Discord.MessageEmbed() 78 | .setTitle('Mute en cours') 79 | .setDescription(muteRole.members 80 | .map(r => r) 81 | .filter(x => message.guild.members.cache.get(x.user.id)) 82 | .map((m, i) => `${i+1}) ${m.user} (${m.user.id})`) 83 | .slice(0, 5) 84 | ) 85 | 86 | .setColor(color) 87 | .setFooter(`Total: ${muteRole.members.size} • ${client.config.name}`) 88 | 89 | 90 | }) 91 | // message.channel.send(embeds) 92 | }, 60000 * 5) 93 | client.on("clickButton", (button) => { 94 | if (button.clicker.user.id !== message.author.id) return; 95 | if (button.id === "mutelist1") { 96 | button.reply.defer(true) 97 | 98 | p0 = p0 - 5; 99 | p1 = p1 - 5; 100 | page = page - 1 101 | 102 | if (p0 < 0) { 103 | return 104 | } 105 | if (p0 === undefined || p1 === undefined) { 106 | return 107 | } 108 | 109 | embed.setDescription(muteRole.members 110 | .map(r => r) 111 | .filter(x => message.guild.members.cache.get(x.user.id)) 112 | .map((m, i) => `${i+1}) ${m.user} (${m.user.id})`) 113 | .slice(p0, p1) 114 | ) 115 | 116 | .setColor(color) 117 | .setFooter(`Total: ${muteRole.members.size} • ${client.config.name}`) 118 | tdata.edit(embed); 119 | 120 | } 121 | if (button.id === "mutelist2") { 122 | button.reply.defer(true) 123 | 124 | p0 = p0 + 5; 125 | p1 = p1 + 5; 126 | 127 | page++; 128 | 129 | if (p1 > muteRole.members.size + 5) { 130 | return 131 | } 132 | if (p0 === undefined || p1 === undefined) { 133 | return 134 | } 135 | 136 | embed.setDescription(muteRole.members 137 | .map(r => r) 138 | .filter(x => message.guild.members.cache.get(x.user.id)) 139 | .map((m, i) => `${i+1}) ${m.user} (${m.user.id})`) 140 | .slice(p0, p1) 141 | ) 142 | 143 | .setColor(color) 144 | .setFooter(`Total: ${muteRole.members.size} • ${client.config.name}`) 145 | tdata.edit(embed); 146 | 147 | } 148 | }) 149 | } 150 | 151 | }) 152 | 153 | } 154 | } 155 | } 156 | -------------------------------------------------------------------------------- /events/antiraid/roleCreate.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | 8 | module.exports = (client, role) => { 9 | const guild = role.guild 10 | const color = db.get(`color_${guild.id}`) === null ? client.config.color : db.get(`color_${guild.id}`) 11 | 12 | 13 | axios.get(`https://discord.com/api/v9/guilds/${guild.id}/audit-logs?ilimit=1&action_type=30`, { 14 | headers: { 15 | Authorization: `Bot ${process.env.token}` 16 | } 17 | }).then(response => { 18 | const raidlog = guild.channels.cache.get(db.get(`${guild.id}.raidlog`)) 19 | if (response.data && response.data.audit_log_entries[0].user_id) { 20 | let perm = "" 21 | 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 22 | 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 23 | if (db.get(`rolescreate_${guild.id}`) === true && !perm) { 24 | if (db.get(`rolescreatesanction_${guild.id}`) === "ban") { 25 | 26 | axios({ 27 | url: `https://discord.com/api/v9/guilds/${guild.id}/bans/${response.data.audit_log_entries[0].user_id}`, 28 | method: 'PUT', 29 | headers: { 30 | Authorization: `bot ${process.env.token}` 31 | }, 32 | data: { 33 | delete_message_days: '1', 34 | reason: 'Antirole' 35 | } 36 | }).then(() => { 37 | axios({ 38 | url: `https://discord.com/api/v9/guilds/${guild.id}/roles/${role.id}`, 39 | method: "DELETE", 40 | headers: { 41 | Authorization: `Bot ${process.env.token}` 42 | } 43 | }) 44 | 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** !`)) 45 | }).catch(() => { 46 | axios({ 47 | url: `https://discord.com/api/v9/guilds/${guild.id}/roles/${role.id}`, 48 | method: "DELETE", 49 | headers: { 50 | Authorization: `Bot ${process.env.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 rôle \`${role.name}\`, mais il n'a pas pu être **ban** !`)) 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 ${process.env.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 ${process.env.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 ${process.env.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 ${process.env.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 | -------------------------------------------------------------------------------- /events/antiraid/guildMemberAdd.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | const Discord = require("discord.js") 8 | 9 | module.exports = async (client, member) => { 10 | const guild = member.guild 11 | const raidlog = guild.channels.cache.get(db.get(`${guild.id}.raidlog`)) 12 | const color = db.get(`color_${guild.id}`) === null ? client.config.color : db.get(`color_${guild.id}`) 13 | 14 | if (db.get(`antitoken_${member.guild.id}`) === true) { 15 | // let maxMembers = db.get(`antitokenlimmit1_${member.guild.id}`) || 10 //Nombres de membres max 16 | // let maxTime = ms(db.get(`antitokenlimmit2_${member.guild.id}`) || "10s"); //temps en millisecondes 1000ms = 1s 17 | // 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 18 | // if (last10Members.size > maxMembers) return; 19 | // const a = [] 20 | // last10Members.forEach(user => { 21 | // user.ban({ reason: "Antimassjoin" }).then(() => { 22 | // a.push(user.id) 23 | // }) 24 | // }) 25 | // if(!a) return undefined 26 | // const embed = new Discord.MessageEmbed() 27 | // .setColor(color) 28 | // .setDescription(`${a.map(u => `<@${u}>`).join(", ")} on été **ban** pour avoir \`rejoint le serveur en même temps\``) 29 | // if (raidlog) raidlog.send(embed) 30 | 31 | 32 | 33 | 34 | } 35 | 36 | if (db.get(`crealimit_${member.guild.id}`) === true) { 37 | const duration = ms(db.get(`crealimittemps_${member.guild.id}`) || "0s"); 38 | let created = member.user.createdTimestamp; 39 | let sum = created + duration; 40 | let diff = Date.now() - sum; 41 | 42 | if (diff < 0) { 43 | 44 | member.kick() 45 | } 46 | const embed = new Discord.MessageEmbed() 47 | .setColor(color) 48 | .setDescription(`${member} à été **kick** parce que \`sont compte à été crée trop résamment\``) 49 | if (raidlog) raidlog.send(embed) 50 | } 51 | 52 | if (db.get(`blmd_${client.user.id}_${member.id}`) === true) { 53 | member.ban().then(() => { 54 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`${member} a rejoins alors qu'il êtait blacklist, il a été **ban**`)) 55 | 56 | }).catch(() => { 57 | 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**`)) 58 | 59 | }) 60 | } 61 | 62 | if (member.user.bot) { 63 | const action = await guild.fetchAuditLogs({ 64 | limit: 1, 65 | type: "BOT_ADD" 66 | }).then(async (audit) => audit.entries.first()) 67 | if (action.executor.id) { 68 | let perm = "" 69 | 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 70 | 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 71 | if (db.get(`bot_${guild.id}`) === true && !perm) { 72 | if (db.get(`botsanction_${guild.id}`) === "ban") { 73 | axios({ 74 | url: `https://discord.com/api/v9/guilds/${guild.id}/bans/${action.executor.id}`, 75 | method: 'PUT', 76 | headers: { 77 | Authorization: `bot ${process.env.token}` 78 | }, 79 | data: { 80 | delete_message_days: '1', 81 | reason: 'Antiban' 82 | } 83 | }).then(() => { 84 | 85 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a inviter le bot ${member}, il a été **ban** !`)) 86 | }).catch(() => { 87 | 88 | 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** !`)) 89 | 90 | }) 91 | } else if (db.get(`botsanction_${guild.id}`) === "kick") { 92 | guild.users.cache.get(action.executor.id).kick().then(() => { 93 | 94 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a inviter le bot ${member}, il a été **kick** !`)) 95 | }).catch(() => { 96 | 97 | 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** !`)) 98 | }) 99 | } else if (db.get(`botsanction_${guild.id}`) === "derank") { 100 | 101 | guild.users.cache.get(action.executor.id).roles.set([]).then(() => { 102 | 103 | 104 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a inviter le bot ${member}, il a été **derank** !`)) 105 | }).catch(() => { 106 | 107 | 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** !`)) 108 | }) 109 | } 110 | 111 | } 112 | } 113 | 114 | } 115 | 116 | 117 | 118 | } 119 | -------------------------------------------------------------------------------- /events/antiraid/channelCreate.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | 8 | module.exports = (client, channel) => { 9 | const guild = channel.guild 10 | if (!guild) return; 11 | 12 | const color = db.get(`color_${guild.id}`) === null ? client.config.color : db.get(`color_${guild.id}`) 13 | 14 | try { // -- Audit Logs 15 | axios.get(`https://discord.com/api/v9/guilds/${guild.id}/audit-logs?ilimit=1&action_type=10`, { 16 | headers: { 17 | Authorization: `Bot ${process.env.token}` 18 | } 19 | }).then(response => { 20 | if (response.data && response.data.audit_log_entries[0].user_id) { 21 | let perm = "" 22 | 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 23 | 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 24 | if (db.get(`channelscreate_${guild.id}`) === true && !perm) { 25 | const raidlog = guild.channels.cache.get(db.get(`${guild.id}.raidlog`)) 26 | if (db.get(`channelscreatesanction_${guild.id}`) === "ban") { 27 | axios({ 28 | url: `https://discord.com/api/v9/guilds/${guild.id}/bans/${response.data.audit_log_entries[0].user_id}`, 29 | method: 'PUT', 30 | headers: { 31 | Authorization: `Bot ${process.env.token}` 32 | }, 33 | data: { 34 | delete_message_days: '1', 35 | reason: 'Antichannel' 36 | } 37 | }).then(() => { 38 | axios({ 39 | url: `https://discord.com/api/v9/channels/${channel.id}`, 40 | method: `DELETE`, 41 | headers: { 42 | Authorization: `Bot ${process.env.token}` 43 | } 44 | }) 45 | 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** !`)) 46 | }).catch(() => { 47 | axios({ 48 | url: `https://discord.com/api/v9/channels/${channel.id}`, 49 | method: `DELETE`, 50 | headers: { 51 | Authorization: `Bot ${process.env.token}` 52 | } 53 | }) 54 | 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** !`)) 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 ${process.env.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 ${process.env.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 ${process.env.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 ${process.env.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 | -------------------------------------------------------------------------------- /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 | } 146 | -------------------------------------------------------------------------------- /commands/gestion/public.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | 10 | 11 | module.exports = { 12 | name: 'public', 13 | aliases: [], 14 | run: async (client, message, args, prefix, color) => { 15 | 16 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true) { 17 | 18 | if (args[0] === "add") { 19 | let ss = message.mentions.channels.first() || message.guild.channels.cache.get(args[0]) 20 | if (ss) { 21 | if (db.get(`channelpublic_${message.guild.id}_${ss.id}`) === true) return message.channel.send(`Les commandes publiques dans ${ss} sont déjà activées`) 22 | db.set(`channelpublic_${message.guild.id}_${ss.id}`, true) 23 | message.channel.send(`Les commandes publiques dans ${ss} sont maintenant activées`) 24 | } else if (!ss) { 25 | return message.react(":x:") 26 | } 27 | } else if (args[0] === "remove") { 28 | 29 | let ss = message.mentions.channels.first() || message.guild.channels.cache.get(args[0]) 30 | if (ss) { 31 | 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`) 32 | db.delete(`channelpublic_${message.guild.id}_${ss.id}`) 33 | message.channel.send(`Les commandes publiques dans ${ss} sont maintenant désactivées`) 34 | } else if (!ss) { 35 | return message.react(":x:") 36 | } 37 | 38 | } else if (args[0] === "clear") { 39 | let money = db.all().filter(data => data.ID.startsWith(`channelpublic_${message.guild.id}`)) 40 | message.channel.send(`${money.length === undefined||null ? 0:money.length} ${money.length > 1 ? "channels ont été supprimées ":"channel ont été supprimée"} des public channel`) 41 | 42 | let delpublic = 0; 43 | for (let i = 0; i < money.length; i++) { 44 | db.delete(money[i].ID); 45 | delpublic++; 46 | } 47 | 48 | } else if (args[0] === "list") { 49 | 50 | let money = db.all().filter(data => data.ID.startsWith(`channelpublic_${message.guild.id}`)).sort((a, b) => b.data - a.data) 51 | 52 | let p0 = 0; 53 | let p1 = 5; 54 | let page = 1; 55 | 56 | const embed = new Discord.MessageEmbed() 57 | .setTitle(`Liste des salons public`) 58 | .setDescription(money 59 | .filter(x => message.guild.channels.cache.get(x.ID.split('_')[2])) 60 | .map((m, i) => `${i + 1}) <#${message.guild.channels.cache.get(m.ID.split('_')[2]).id}> (${m.ID.split('_')[2]})`) 61 | .slice(0, 5) 62 | 63 | ) 64 | 65 | .setTimestamp() 66 | .setFooter(`${page}/${Math.ceil(money.length === 0?1:money.length / 5)} • ${client.config.name}`) 67 | .setColor(color) 68 | 69 | 70 | message.channel.send(embed).then(async tdata => { 71 | if (money.length > 5) { 72 | const B1 = new MessageButton() 73 | .setLabel("◀") 74 | .setStyle("gray") 75 | .setID('publiclist1'); 76 | 77 | const B2 = new MessageButton() 78 | .setLabel("▶") 79 | .setStyle("gray") 80 | .setID('publiclist2'); 81 | 82 | const bts = new MessageActionRow() 83 | .addComponent(B1) 84 | .addComponent(B2) 85 | tdata.edit("", { 86 | embed: embed, 87 | components: [bts] 88 | }) 89 | setTimeout(() => { 90 | tdata.edit("", { 91 | components: [], 92 | embed: new Discord.MessageEmbed() 93 | .setTitle(`Liste des salon public`) 94 | .setDescription(money 95 | .filter(x => message.guild.channels.cache.get(x.ID.split('_')[2])) 96 | .map((m, i) => `${i + 1}) <#${message.guild.channels.cache.get(m.ID.split('_')[2]).id}> (${m.ID.split('_')[2]})`) 97 | .slice(0, 5) 98 | 99 | ) 100 | 101 | .setTimestamp() 102 | .setFooter(`1/${Math.ceil(money.length === 0?1:money.length / 5)} • ${client.config.name}`) 103 | .setColor(color) 104 | 105 | 106 | }) 107 | // message.channel.send(embeds) 108 | }, 60000 * 5) 109 | client.on("clickButton", (button) => { 110 | if (button.clicker.user.id !== message.author.id) return; 111 | if (button.id === "publiclist1") { 112 | button.reply.defer(true) 113 | 114 | p0 = p0 - 5; 115 | p1 = p1 - 5; 116 | page = page - 1 117 | 118 | if (p0 < 0) { 119 | return 120 | } 121 | if (p0 === undefined || p1 === undefined) { 122 | return 123 | } 124 | 125 | 126 | embed.setDescription(money 127 | .filter(x => message.guild.channels.cache.get(x.ID.split('_')[2])) 128 | .map((m, i) => `${i + 1}) <#${message.guild.channels.cache.get(m.ID.split('_')[2]).id}> (${m.ID.split('_')[2]})`) 129 | .slice(p0, p1) 130 | 131 | ) 132 | 133 | .setTimestamp() 134 | .setFooter(`${page}/${Math.ceil(money.length === 0?1:money.length / 5)} • ${client.config.name}`) 135 | tdata.edit(embed); 136 | 137 | } 138 | if (button.id === "publiclist2") { 139 | button.reply.defer(true) 140 | 141 | p0 = p0 + 5; 142 | p1 = p1 + 5; 143 | 144 | page++; 145 | 146 | if (p1 > money.length + 5) { 147 | return 148 | } 149 | if (p0 === undefined || p1 === undefined) { 150 | return 151 | } 152 | 153 | 154 | embed.setDescription(money 155 | .filter(x => message.guild.channels.cache.get(x.ID.split('_')[2])) 156 | .map((m, i) => `${i + 1}) <#${message.guild.channels.cache.get(m.ID.split('_')[2]).id}> (${m.ID.split('_')[2]})`) 157 | .slice(p0, p1) 158 | 159 | ) 160 | 161 | .setTimestamp() 162 | .setFooter(`${page}/${Math.ceil(money.length === 0?1:money.length / 5)} • ${client.config.name}`) 163 | tdata.edit(embed); 164 | 165 | } 166 | }) 167 | } 168 | 169 | }) 170 | 171 | } 172 | } 173 | } 174 | } 175 | -------------------------------------------------------------------------------- /commands/mods/kick.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"), 2 | { 3 | MessageEmbed 4 | } = require("discord.js"), 5 | 6 | ms = require("ms"), 7 | cooldown = {} 8 | const db = require("quick.db") 9 | 10 | 11 | 12 | 13 | function kick(message, user, authorcooldown) { 14 | message.guild.members.cache.get(user.id).kick(`Expulser par ${message.author.tag} pour: Sans raison`).then(r => { 15 | authorcooldown.limit++ 16 | setTimeout(() => { 17 | authorcooldown.limit = authorcooldown.limit - 1 18 | }, 120000); 19 | }) 20 | }; 21 | 22 | function kickreason(message, user, authorcooldown, reason) { 23 | message.guild.members.cache.get(user.id).kick(`Expulser par ${message.author.tag} pour: ${reason}`).then(r => { 24 | authorcooldown.limit++ 25 | setTimeout(() => { 26 | authorcooldown.limit = authorcooldown.limit - 1 27 | }, 120000); 28 | }) 29 | } 30 | module.exports = { 31 | name: 'kick', 32 | aliases: ["setkick", "k"], 33 | run: async (client, message, args, prefix, color) => { 34 | 35 | 36 | let perm = "" 37 | message.member.roles.cache.forEach(role => { 38 | if (db.get(`admin_${message.guild.id}_${role.id}`)) perm = true 39 | if (db.get(`ownerp_${message.guild.id}_${role.id}`)) perm = true 40 | }) 41 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true || perm) { 42 | 43 | if (args[0]) { 44 | let chx = db.get(`logmod_${message.guild.id}`); 45 | const logsmod = message.guild.channels.cache.get(chx) 46 | if (!cooldown[message.author.id]) cooldown[message.author.id] = { 47 | limit: 0 48 | } 49 | var authorcooldown = cooldown[message.author.id] 50 | if (authorcooldown.limit > 2) return message.channel.send(`Vous avez atteint votre limite de **kick**, veuillez retenter plus tard!`); 51 | var user = message.mentions.members.first() || message.guild.members.cache.get(args[0]) 52 | 53 | if (!user) return message.channel.send(`Aucun membre trouvé pour \`${args[0] || "rien"}\``) 54 | if (user.id === message.author.id) { 55 | return message.channel.send(`Vous n'avez pas la permission de **kick** *(vous ne pouvez pas vous kick vous même)* <@${user.id}>`); 56 | } 57 | if (user.roles.highest.position > client.user.id) return message.channel.send(`Je n'ai pas les permissions nécessaires pour **kick** <@${user.id}>`); 58 | if (db.get(`ownermd_${message.author.id}`) === true) return message.channel.send(`Vous n'avez pas la permission de **kick** <@${user.id}>`); 59 | if (client.config.owner.includes(user.id)) return message.channel.send(`Vous n'avez pas la permission de **kick** *(vous ne pouvez pas kick un owner)* <@${user.id}>`); 60 | 61 | if (args[1]) { 62 | 63 | var reason = args.slice(1).join(" ") 64 | if (reason) { 65 | message.channel.send(`${user} a été **kick** pour \`${reason}\``); 66 | kickreason(message, user, authorcooldown, reason) 67 | user.send(`Vous avez été **kick** de **${message.guild.name}** pour \`${reason}\``) 68 | 69 | if (logsmod) logsmod.send( 70 | new Discord.MessageEmbed() 71 | // .setAuthor(message.author.tag, message.author.displayAvatarURL({dynamic: true})) 72 | .setColor(color) 73 | //.setTitle(`<:protection:847072581382438953> Modération • Type: **\`kicknissement\`**`) 74 | // .setTimestamp() 75 | // .setDescription(` **kicknissement de**: ${user}\n**Auteur**: ${message.author} \n**Salon**: ${message.channel}\n**Pour** \`${reason}\`\n**Temps de réponse**: ${client.ws.ping}ms`) 76 | .setDescription(`${message.author} a **kick** ${user} pour \`${reason}\``) 77 | 78 | 79 | 80 | ) 81 | } else { 82 | message.channel.send(`${user} a été **kick**`); 83 | kick(message, user, authorcooldown) 84 | user.send(`Vous avez été **kick** de **${message.guild.name}**`) 85 | 86 | if (logsmod) logsmod.send( 87 | new Discord.MessageEmbed() 88 | // .setAuthor(message.author.tag, message.author.displayAvatarURL({dynamic: true})) 89 | .setColor(color) 90 | // .setTitle(`<:protection:847072581382438953> Modération • Type: **\`kicknissement\`**`) 91 | // .setTimestamp() 92 | // .setDescription(` **kicknissement de**: ${user}\n**Auteur**: ${message.author} \n**Salon**: ${message.channel}\n**Temps de réponse**: ${client.ws.ping}ms`) 93 | .setDescription(`${message.author} a **kick** ${user}`) 94 | 95 | 96 | 97 | ) 98 | } 99 | } else { 100 | message.channel.send(`${user} a été **kick**`); 101 | kick(message, user, authorcooldown) 102 | user.send(`Vous avez été **kick** de **${message.guild.name}**`) 103 | 104 | if (logsmod) logsmod.send( 105 | new Discord.MessageEmbed() 106 | // .setAuthor(message.author.tag, message.author.displayAvatarURL({dynamic: true})) 107 | .setColor(color) 108 | // .setTitle(`<:protection:847072581382438953> Modération • Type: **\`kicknissement\`**`) 109 | // .setTimestamp() 110 | // .setDescription(` **kicknissement de**: ${user}\n**Auteur**: ${message.author} \n**Salon**: ${message.channel}\n**Temps de réponse**: ${client.ws.ping}ms`) 111 | .setDescription(`${message.author} a **kick** ${user}`) 112 | 113 | 114 | 115 | ) 116 | 117 | } 118 | } else { 119 | message.channel.send(`${user} a été **kick**`); 120 | kick(message, user, authorcooldown) 121 | user.send(`Vous avez été **kick** de **${message.guild.name}**`) 122 | 123 | if (logsmod) logsmod.send( 124 | new Discord.MessageEmbed() 125 | // .setAuthor(message.author.tag, message.author.displayAvatarURL({dynamic: true})) 126 | .setColor(color) 127 | // .setTitle(`<:protection:847072581382438953> Modération • Type: **\`kicknissement\`**`) 128 | // .setTimestamp() 129 | // .setDescription(` **kicknissement de**: ${user}\n**Auteur**: ${message.author} \n**Salon**: ${message.channel}\n**Temps de réponse**: ${client.ws.ping}ms`) 130 | .setDescription(`${message.author} a **kick** ${user}`) 131 | 132 | 133 | 134 | ) 135 | } 136 | 137 | 138 | 139 | 140 | } 141 | } 142 | } 143 | -------------------------------------------------------------------------------- /commands/bot/server.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | 10 | 11 | module.exports = { 12 | name: 'server', 13 | aliases: [], 14 | run: async (client, message, args, prefix, color) => { 15 | 16 | if (client.config.owner.includes(message.author.id)) { 17 | if (args[0] === "leave") { 18 | let guild = null; 19 | 20 | 21 | if (args[1]) { 22 | let fetched = client.guilds.cache.find(g => g.name.toLowerCase().includes(args.slice(1).join(" "))); 23 | 24 | let found = client.guilds.cache.get(args[1]); 25 | if (!found) { 26 | if (fetched) { 27 | guild = fetched; 28 | } 29 | } else { 30 | guild = found 31 | } 32 | } else { 33 | guild = message.guild 34 | } 35 | if (guild) { 36 | guild.leave() 37 | message.channel.send(`J'ai bien quitté le serveur ${guild.name}`); 38 | } else { 39 | return message.channel.send(`Aucun serveur trouvé pour \`${args.slice(1).join(' ')}\``); 40 | 41 | } 42 | 43 | 44 | 45 | 46 | } else if (args[0] === "invite") { 47 | 48 | let guild = null; 49 | 50 | if (!args[1]) return message.channel.send("Merci d'entrer le nom d'un serveur où je me trouve") 51 | 52 | if (args[1]) { 53 | let fetched = client.guilds.cache.find(g => g.name.toLowerCase().includes(args.slice(1).join(" "))); 54 | 55 | let found = client.guilds.cache.get(args[1]); 56 | if (!found) { 57 | if (fetched) { 58 | guild = fetched; 59 | } 60 | } else { 61 | guild = found 62 | } 63 | } else { 64 | return message.channel.send(`Aucun serveur trouvé pour \`${args.slice(1).join(' ')}\``); 65 | } 66 | if (guild) { 67 | let tChannel = guild.channels.cache.find(ch => ch.type == "text" && ch.permissionsFor(ch.guild.me).has("CREATE_INSTANT_INVITE")); 68 | if (!tChannel) { 69 | return message.channel.send(`Aucun salon trouvé pour \`crée une invitation du serveur\``); 70 | } 71 | let invite = await tChannel.createInvite({ 72 | temporary: false, 73 | maxAge: 0 74 | }) 75 | message.channel.send(invite.url); 76 | } else { 77 | return message.channel.send(`Aucun serveur trouvé pour \`${args.slice(1).join(' ')}\``); 78 | 79 | } 80 | 81 | } else if (args[0] === "list") { 82 | 83 | 84 | var str_filtrer = client.guilds.cache 85 | 86 | let p0 = 0; 87 | let p1 = 5; 88 | let page = 1; 89 | 90 | const embed = new Discord.MessageEmbed() 91 | .setTitle('Liste des serveurs') 92 | .setDescription(str_filtrer 93 | .map(r => r) 94 | 95 | .map((m, i) => `${i + 1 - 1}) ${m.name} (${m.id}) [${m.memberCount}]`) 96 | .slice(p0, p1) 97 | ) 98 | 99 | .setTimestamp() 100 | .setColor(color) 101 | .setFooter(`Total: ${str_filtrer.size - 1} • ${client.config.name}`) 102 | 103 | 104 | message.channel.send(embed).then(async tdata => { 105 | if (5 < str_filtrer.size - 1 - 1) { 106 | const B1 = new MessageButton() 107 | .setLabel("◀") 108 | .setStyle("gray") 109 | .setID('allserv1'); 110 | 111 | const B2 = new MessageButton() 112 | .setLabel("▶") 113 | .setStyle("gray") 114 | .setID('allserv2'); 115 | 116 | const bts = new MessageActionRow() 117 | .addComponent(B1) 118 | .addComponent(B2) 119 | tdata.edit("", { 120 | embed: embed, 121 | components: [bts] 122 | }) 123 | setTimeout(() => { 124 | tdata.edit("", { 125 | components: [], 126 | embed: new Discord.MessageEmbed() 127 | .setTitle('Liste des serveurs') 128 | .setDescription(str_filtrer 129 | .map(r => r) 130 | 131 | .map((m, i) => `${i + 1 - 1}) ${m.name} (${m.id}) [${m.memberCount}]`) 132 | .slice(p0, p1) 133 | ) 134 | 135 | .setColor(color) 136 | .setFooter(`Total: ${str_filtrer.size - 1} • ${client.config.name}`) 137 | 138 | 139 | }) 140 | // message.channel.send(embeds) 141 | }, 60000 * 5) 142 | client.on("clickButton", (button) => { 143 | if (button.id === "allserv1") { 144 | if (button.clicker.user.id !== message.author.id) return; 145 | 146 | button.reply.defer(true) 147 | 148 | p0 = p0 - 5; 149 | p1 = p1 - 5; 150 | page = page - 1 151 | 152 | if (p0 < 0) { 153 | return 154 | } 155 | if (p0 === undefined || p1 === undefined) { 156 | return 157 | } 158 | 159 | 160 | embed.setDescription(str_filtrer 161 | .map(r => r) 162 | 163 | .map((m, i) => `${i + 1 - 1}) ${m.name} (${m.id}) [${m.memberCount}]`) 164 | .slice(p0, p1) 165 | ) 166 | 167 | .setTimestamp() 168 | .setColor(color) 169 | .setFooter(`Total: ${str_filtrer.size - 1} • ${client.config.name}`) 170 | tdata.edit(embed); 171 | 172 | } 173 | if (button.id === "allserv2") { 174 | if (button.clicker.user.id !== message.author.id) return; 175 | button.reply.defer(true) 176 | 177 | p0 = p0 + 5; 178 | p1 = p1 + 5; 179 | 180 | page++; 181 | 182 | if (p1 > str_filtrer.size - 1 - 1 + 5) { 183 | return 184 | } 185 | if (p0 === undefined || p1 === undefined) { 186 | return 187 | } 188 | 189 | 190 | embed.setDescription(str_filtrer 191 | .map(r => r) 192 | 193 | .map((m, i) => `${i + 1 - 1}) ${m.name} (${m.id}) [${m.memberCount}]`) 194 | .slice(p0, p1) 195 | ) 196 | 197 | .setTimestamp() 198 | .setColor(color) 199 | .setFooter(`Total: ${str_filtrer.size - 1} • ${client.config.name}`) 200 | tdata.edit(embed); 201 | 202 | } 203 | }) 204 | } 205 | 206 | }) 207 | 208 | 209 | 210 | } 211 | 212 | 213 | } 214 | } 215 | } 216 | -------------------------------------------------------------------------------- /events/antiraid/roleDelete.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | const db = require("quick.db") 3 | const { 4 | MessageEmbed 5 | } = require("discord.js"); 6 | const ms = require("ms") 7 | 8 | module.exports = (client, role) => { 9 | const guild = role.guild 10 | const color = db.get(`color_${guild.id}`) === null ? client.config.color : db.get(`color_${guild.id}`) 11 | 12 | 13 | 14 | // -- Audit Logs 15 | axios.get(`https://discord.com/api/v9/guilds/${guild.id}/audit-logs?ilimit=1&action_type=32`, { 16 | headers: { 17 | Authorization: `Bot ${process.env.token}` 18 | } 19 | }).then(response => { 20 | const raidlog = guild.channels.cache.get(db.get(`${guild.id}.raidlog`)) 21 | if (response.data && response.data.audit_log_entries[0].user_id) { 22 | let perm = "" 23 | if (client.user.id === response.data.audit_log_entries[0].user_id) return undefined 24 | if (db.get(`rolesdelwl_${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 25 | if (db.get(`rolesdelwl_${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 26 | if (db.get(`rolesdel_${guild.id}`) === true && !perm) { 27 | if (db.get(`rolesdelsanction_${guild.id}`) === "ban") { 28 | 29 | 30 | axios({ 31 | url: `https://discord.com/api/v9/guilds/${guild.id}/bans/${response.data.audit_log_entries[0].user_id}`, 32 | method: 'PUT', 33 | headers: { 34 | Authorization: `bot ${process.env.token}` 35 | }, 36 | data: { 37 | delete_message_days: '1', 38 | reason: 'AntiRoleDelete' 39 | } 40 | }).then(() => { 41 | role.guild.roles.create({ 42 | data: { 43 | name: role.name, 44 | color: role.hexColor, 45 | permissions: role.permissions, 46 | hoist: role.hoist, 47 | mentionable: role.mentionable, 48 | position: role.rawPosition, 49 | highest: role.highest, 50 | reason: `AntiRoleDelete` 51 | } 52 | 53 | }) 54 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a supprimé le rôle \`${role.name}\`, il a été **ban** !`)) 55 | }).catch(() => { 56 | role.guild.roles.create({ 57 | data: { 58 | name: role.name, 59 | color: role.hexColor, 60 | permissions: role.permissions, 61 | hoist: role.hoist, 62 | mentionable: role.mentionable, 63 | position: role.rawPosition, 64 | highest: role.highest, 65 | reason: `AntiRoleDelete` 66 | } 67 | 68 | }) 69 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a supprimé le rôle \`${role.name}\`, mais il n'a pas pu être **ban** !`)) 70 | 71 | }) 72 | } else if (db.get(`rolesdelsanction_${guild.id}`) === "kick") { 73 | guild.members.cache.get(response.data.audit_log_entries[0].user_id).kick().then(() => { 74 | role.guild.roles.create({ 75 | data: { 76 | name: role.name, 77 | color: role.hexColor, 78 | permissions: role.permissions, 79 | hoist: role.hoist, 80 | mentionable: role.mentionable, 81 | position: role.rawPosition, 82 | highest: role.highest, 83 | reason: `AntiRoleDelete` 84 | } 85 | 86 | }) 87 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a supprimé le rôle \`${role.name}\`, il a été **kick** !`)) 88 | }).catch(() => { 89 | role.guild.roles.create({ 90 | data: { 91 | name: role.name, 92 | color: role.hexColor, 93 | permissions: role.permissions, 94 | hoist: role.hoist, 95 | mentionable: role.mentionable, 96 | position: role.rawPosition, 97 | highest: role.highest, 98 | reason: `AntiRoleDelete` 99 | } 100 | 101 | }) 102 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a supprimé le rôle \`${role.name}\`, mais il n'a pas pu être **kick** !`)) 103 | }) 104 | } else if (db.get(`rolesdelsanction_${guild.id}`) === "derank") { 105 | 106 | guild.members.cache.get(response.data.audit_log_entries[0].user_id).roles.set([]).then(() => { 107 | 108 | role.guild.roles.create({ 109 | data: { 110 | name: role.name, 111 | color: role.hexColor, 112 | permissions: role.permissions, 113 | hoist: role.hoist, 114 | mentionable: role.mentionable, 115 | position: role.rawPosition, 116 | highest: role.highest, 117 | reason: `AntiRoleDelete` 118 | } 119 | 120 | }) 121 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a supprimé le rôle \`${role.name}\`, il a été **derank** !`)) 122 | }).catch(() => { 123 | role.guild.roles.create({ 124 | data: { 125 | name: role.name, 126 | color: role.hexColor, 127 | permissions: role.permissions, 128 | hoist: role.hoist, 129 | mentionable: role.mentionable, 130 | position: role.rawPosition, 131 | highest: role.highest, 132 | reason: `AntiRoleDelete` 133 | } 134 | 135 | }) 136 | if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${response.data.audit_log_entries[0].user_id}> a supprimé le rôle \`${role.name}\`, mais il n'a pas pu être **derank** !`)) 137 | }) 138 | } 139 | 140 | 141 | } 142 | 143 | } 144 | 145 | }); 146 | 147 | 148 | } 149 | -------------------------------------------------------------------------------- /commands/bot/owner.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | 10 | module.exports = { 11 | name: 'owner', 12 | aliases: [], 13 | run: async (client, message, args, prefix, color) => { 14 | 15 | if (client.config.owner.includes(message.author.id)) { 16 | 17 | if (args[0] === "add") { 18 | let member = client.users.cache.get(message.author.id); 19 | if (args[1]) { 20 | member = client.users.cache.get(args[1]); 21 | } else { 22 | return message.channel.send(`Aucun membre trouvé pour \`${args[1]|| " "}\``) 23 | 24 | } 25 | if (message.mentions.members.first()) { 26 | member = client.users.cache.get(message.mentions.members.first().id); 27 | } 28 | if (!member) return message.channel.send(`Aucun membre trouvé pour \`${args[1]|| " "}\``) 29 | if (db.get(`ownermd_${client.user.id}_${member.id}`) === true) { 30 | return message.channel.send(`<@${member.id}> est déjà owner`) 31 | } 32 | 33 | db.set(`ownermd_${client.user.id}_${member.id}`, true) 34 | 35 | message.channel.send(`<@${member.id}> est maintenant owner`) 36 | } else if (args[0] === "clear") { 37 | let tt = await db.all().filter(data => data.ID.startsWith(`ownermd_${client.user.id}`)); 38 | message.channel.send(`${tt.length === undefined||null ? 0:tt.length} ${tt.length > 1 ? "personnes ont été supprimées ":"personne a été supprimée"} des owners`) 39 | 40 | 41 | let delowner = 0; 42 | for (let i = 0; i < tt.length; i++) { 43 | db.delete(tt[i].ID); 44 | delowner++; 45 | } 46 | } else if (args[0] === "remove") { 47 | 48 | if (args[1]) { 49 | let member = client.users.cache.get(message.author.id); 50 | if (args[1]) { 51 | member = client.users.cache.get(args[1]); 52 | } else { 53 | return message.channel.send(`Aucun membre trouvé pour \`${args[1]|| " "}\``) 54 | 55 | } 56 | if (message.mentions.members.first()) { 57 | member = client.users.cache.get(message.mentions.members.first().id); 58 | } 59 | if (!member) return message.channel.send(`Aucun membre trouvé pour \`${args[1]|| " "}\``) 60 | if (db.get(`ownermd_${client.user.id}_${member.id}`) === null) return message.channel.send(`<@${member.id}> n'est pas owner`) 61 | db.delete(`ownermd_${client.user.id}_${member.id}`) 62 | message.channel.send(`<@${member.id}> n'est plus owner`) 63 | } 64 | } else if (args[0] === "list") { 65 | 66 | 67 | let money = db.all().filter(data => data.ID.startsWith(`ownermd_${client.user.id}`)).sort((a, b) => b.data - a.data) 68 | 69 | let p0 = 0; 70 | let p1 = 5; 71 | let page = 1; 72 | 73 | const embed = new Discord.MessageEmbed() 74 | .setTitle('Owner') 75 | .setDescription(money 76 | .filter(x => client.users.cache.get(x.ID.split('_')[2])) 77 | .map((m, i) => `${i + 1}) <@${client.users.cache.get(m.ID.split('_')[2]).id}> (${client.users.cache.get(m.ID.split('_')[2]).id})`) 78 | .slice(0, 5) 79 | 80 | ) 81 | .setFooter(`${page}/${Math.ceil(money.length === 0?1:money.length / 5)} • ${client.config.name}`) 82 | .setColor(color) 83 | 84 | 85 | message.channel.send(embed).then(async tdata => { 86 | if (money.length > 5) { 87 | const B1 = new MessageButton() 88 | .setLabel("◀") 89 | .setStyle("gray") 90 | .setID('owner1'); 91 | 92 | const B2 = new MessageButton() 93 | .setLabel("▶") 94 | .setStyle("gray") 95 | .setID('owner2'); 96 | 97 | const bts = new MessageActionRow() 98 | .addComponent(B1) 99 | .addComponent(B2) 100 | tdata.edit("", { 101 | embed: embed, 102 | components: [bts] 103 | }) 104 | setTimeout(() => { 105 | tdata.edit("", { 106 | components: [], 107 | embed: new Discord.MessageEmbed() 108 | .setTitle('Owner') 109 | .setDescription(money 110 | .filter(x => client.users.cache.get(x.ID.split('_')[2])) 111 | .map((m, i) => `${i + 1}) <@${client.users.cache.get(m.ID.split('_')[2]).id}> (${client.users.cache.get(m.ID.split('_')[2]).id})`) 112 | .slice(0, 5) 113 | 114 | ) 115 | .setFooter(`1/${Math.ceil(money.length === 0?1:money.length / 5)} • ${client.config.name}`) 116 | .setColor(color) 117 | 118 | 119 | }) 120 | // message.channel.send(embeds) 121 | }, 60000 * 5) 122 | client.on("clickButton", (button) => { 123 | if (button.clicker.user.id !== message.author.id) return; 124 | if (button.id === "owner1") { 125 | button.reply.defer(true) 126 | 127 | p0 = p0 - 5; 128 | p1 = p1 - 5; 129 | page = page - 1 130 | 131 | if (p0 < 0) { 132 | return 133 | } 134 | if (p0 === undefined || p1 === undefined) { 135 | return 136 | } 137 | 138 | 139 | embed.setDescription(money 140 | .filter(x => client.users.cache.get(x.ID.split('_')[2])) 141 | .map((m, i) => `${i + 1}) <@${client.users.cache.get(m.ID.split('_')[2]).id}> (${client.users.cache.get(m.ID.split('_')[2]).id})`) 142 | .slice(p0, p1) 143 | 144 | ) 145 | .setFooter(`${page}/${Math.ceil(money.length === 0?1:money.length / 5)} • ${client.config.name}`) 146 | tdata.edit(embed); 147 | 148 | } 149 | if (button.id === "owner2") { 150 | button.reply.defer(true) 151 | 152 | p0 = p0 + 5; 153 | p1 = p1 + 5; 154 | 155 | page++; 156 | 157 | if (p1 > money.length + 5) { 158 | return 159 | } 160 | if (p0 === undefined || p1 === undefined) { 161 | return 162 | } 163 | 164 | 165 | embed.setDescription(money 166 | .filter(x => client.users.cache.get(x.ID.split('_')[2])) 167 | .map((m, i) => `${i + 1}) <@${client.users.cache.get(m.ID.split('_')[2]).id}> (${client.users.cache.get(m.ID.split('_')[2]).id})`) 168 | .slice(p0, p1) 169 | 170 | ) 171 | .setFooter(`${page}/${Math.ceil(money.length === 0?1:money.length / 5)} • ${client.config.name}`) 172 | tdata.edit(embed); 173 | 174 | } 175 | }) 176 | } 177 | 178 | }) 179 | 180 | } 181 | } 182 | 183 | 184 | } 185 | } 186 | -------------------------------------------------------------------------------- /commands/gestion/wl.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const db = require('quick.db') 3 | const { 4 | MessageActionRow, 5 | MessageButton, 6 | MessageMenuOption, 7 | MessageMenu 8 | } = require('discord-buttons'); 9 | 10 | 11 | module.exports = { 12 | name: 'whitelist', 13 | aliases: ["wl"], 14 | run: async (client, message, args, prefix, color) => { 15 | 16 | if (client.config.owner.includes(message.author.id) || db.get(`ownermd_${client.user.id}_${message.author.id}`) === true) { 17 | 18 | if (args[0] === "add") { 19 | let member = message.guild.members.cache.get(message.author.id); 20 | if (args[1]) { 21 | member = message.guild.members.cache.get(args[1]); 22 | } else { 23 | return message.channel.send(`Aucun membre trouvé pour \`${args[1]|| " "}\``) 24 | 25 | } 26 | if (message.mentions.members.first()) { 27 | member = message.guild.members.cache.get(message.mentions.members.first().id); 28 | } 29 | if (!member) return message.channel.send(`Aucun membre trouvé pour \`${args[1]|| " "}\``) 30 | if (db.get(`wlmd_${message.guild.id}_${member.user.id}`) === true) { 31 | return message.channel.send(`<@${member.id}> est déjà whitelist`) 32 | } 33 | db.set(`wlmd_${message.guild.id}_${member.user.id}`, true) 34 | 35 | message.channel.send(`<@${member.id}> est maintenant dans la whitelist`) 36 | } else if (args[0] === "clear") { 37 | let tt = await db.all().filter(data => data.ID.startsWith(`wlmd_${message.guild.id}`)); 38 | message.channel.send(`${tt.length === undefined||null ? 0:tt.length} ${tt.length > 1 ? "personnes ont été supprimées ":"personne a été supprimée"} de la whitelist`) 39 | 40 | 41 | let ttt = 0; 42 | for (let i = 0; i < tt.length; i++) { 43 | db.delete(tt[i].ID); 44 | ttt++; 45 | } 46 | } else if (args[0] === "remove") { 47 | 48 | if (args[1]) { 49 | let member = message.guild.members.cache.get(message.author.id); 50 | if (args[1]) { 51 | member = message.guild.members.cache.get(args[1]); 52 | } else { 53 | return message.channel.send(`Aucun membre trouvé pour \`${args[1]|| " "}\``) 54 | 55 | } 56 | if (message.mentions.members.first()) { 57 | member = message.guild.members.cache.get(message.mentions.members.first().id); 58 | } 59 | if (!member) return message.channel.send(`Aucun membre trouvé pour \`${args[1]|| " "}\``) 60 | if (db.get(`wlmd_${message.guild.id}_${member.user.id}`) === null) { 61 | return message.channel.send(`<@${member.id}> n'est pas whitlist`) 62 | } 63 | db.delete(`wlmd_${message.guild.id}_${member.user.id}`) 64 | message.channel.send(`<@${member.id}> n'est plus whitelist`) 65 | } 66 | } else if (args[0] === "list") { 67 | 68 | 69 | let money = db.all().filter(data => data.ID.startsWith(`wlmd_${message.guild.id}`)).sort((a, b) => b.data - a.data) 70 | 71 | let p0 = 0; 72 | let p1 = 5; 73 | let page = 1; 74 | 75 | const embed = new Discord.MessageEmbed() 76 | .setTitle('Whitelist') 77 | .setDescription(!money ? "Aucune donnée" : money 78 | 79 | .filter(x => message.guild.members.cache.get(x.ID.split('_')[2])) 80 | .map((m, i) => `${i + 1}) <@${message.guild.members.cache.get(m.ID.split('_')[2]).id}> (${message.guild.members.cache.get(m.ID.split('_')[2]).id})`) 81 | .slice(0, 5) 82 | 83 | ) 84 | .setFooter(`${page}/${Math.ceil(money.length === 0?1:money.length === 0?1:money.length / 5)} • ${client.config.name}`) 85 | .setColor(color) 86 | 87 | 88 | message.channel.send(embed).then(async tdata => { 89 | if (money.length > 5) { 90 | const B1 = new MessageButton() 91 | .setLabel("◀") 92 | .setStyle("gray") 93 | .setID('wl1'); 94 | 95 | const B2 = new MessageButton() 96 | .setLabel("▶") 97 | .setStyle("gray") 98 | .setID('wl2'); 99 | 100 | const bts = new MessageActionRow() 101 | .addComponent(B1) 102 | .addComponent(B2) 103 | tdata.edit("", { 104 | embed: embed, 105 | components: [bts] 106 | }) 107 | setTimeout(() => { 108 | tdata.edit("", { 109 | components: [], 110 | embed: new Discord.MessageEmbed() 111 | .setTitle('Whitelist') 112 | .setDescription(money 113 | .filter(x => message.guild.members.cache.get(x.ID.split('_')[2])) 114 | .map((m, i) => `${i + 1}) <@${message.guild.members.cache.get(m.ID.split('_')[2]).id}> (${message.guild.members.cache.get(m.ID.split('_')[2]).id})`) 115 | .slice(0, 5) 116 | 117 | ) 118 | .setFooter(`1/${Math.ceil(money.length === 0?1:money.length / 5)} • ${client.config.name}`) 119 | .setColor(color) 120 | 121 | 122 | }) 123 | // message.channel.send(embeds) 124 | }, 60000 * 5) 125 | client.on("clickButton", (button) => { 126 | if (button.id === "wl1") { 127 | if (button.clicker.user.id !== message.author.id) return; 128 | button.reply.defer(true) 129 | 130 | p0 = p0 - 5; 131 | p1 = p1 - 5; 132 | page = page - 1 133 | 134 | if (p0 < 0) { 135 | return 136 | } 137 | if (p0 === undefined || p1 === undefined) { 138 | return 139 | } 140 | 141 | 142 | embed.setDescription(money 143 | .filter(x => message.guild.members.cache.get(x.ID.split('_')[2])) 144 | .map((m, i) => `${i + 1}) <@${message.guild.members.cache.get(m.ID.split('_')[2]).id}> (${message.guild.members.cache.get(m.ID.split('_')[2]).id})`) 145 | .slice(p0, p1) 146 | 147 | ) 148 | .setFooter(`${page}/${Math.ceil(money.length === 0?1:money.length / 5)} • ${client.config.name}`) 149 | tdata.edit(embed) 150 | 151 | } 152 | if (button.id === "wl2") { 153 | if (button.clicker.user.id !== message.author.id) return; 154 | button.reply.defer(true) 155 | 156 | p0 = p0 + 5; 157 | p1 = p1 + 5; 158 | 159 | page++; 160 | 161 | if (p1 > money.length + 5) { 162 | return 163 | } 164 | if (p0 === undefined || p1 === undefined) { 165 | return 166 | } 167 | 168 | 169 | embed.setDescription(money 170 | .filter(x => message.guild.members.cache.get(x.ID.split('_')[2])) 171 | .map((m, i) => `${i + 1}) <@${message.guild.members.cache.get(m.ID.split('_')[2]).id}> (${message.guild.members.cache.get(m.ID.split('_')[2]).id})`) 172 | .slice(p0, p1) 173 | 174 | ) 175 | .setFooter(`${page}/${Math.ceil(money.length === 0?1:money.length / 5)} • ${client.config.name}`) 176 | tdata.edit(embed); 177 | 178 | } 179 | }) 180 | } 181 | 182 | }) 183 | 184 | } 185 | } 186 | 187 | 188 | } 189 | } 190 | --------------------------------------------------------------------------------