├── 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 |
--------------------------------------------------------------------------------