grand commit que tutur attend ( marche pas le raidmode en dev)

sinon il y a pleins de truc comme les anti raid , des coorectif ect
This commit is contained in:
VALOU3336
2024-04-22 18:30:33 +02:00
parent d8912855ff
commit 9bd39c69ca
178 changed files with 9241 additions and 480 deletions
+54
View File
@@ -0,0 +1,54 @@
const { getPermissionLevel } = require('../../fonction/getPermissionLevel');
const { PermissionsBitField } = require('discord.js');
module.exports = {
name: 'addrole',
description: 'Ajoute un rôle à un utilisateur.',
usage: '+addrole @user/id <role>',
category: 'moderation',
async execute(message, args, client) {
const botMember = await message.guild.members.fetch(client.user.id);
const userMember = await message.guild.members.fetch(message.author.id);
if (!botMember.permissions.has(PermissionsBitField.Flags.ManageRoles)) {
return message.reply("Je n'est pas la permission de pouvoir donnée des role");
}
const user = message.mentions.members.first() || message.guild.members.cache.get(args[0]);
if (!user) {
return message.reply('Utilisateur non trouvé.');
}
let role;
if (message.mentions.roles.first()) {
role = message.mentions.roles.first();
} else if (args[1].match(/^<@&(\d+)>$/)) {
const roleId = args[1].match(/^<@&(\d+)>$/)[1];
role = message.guild.roles.cache.get(roleId);
} else {
role = message.guild.roles.cache.find(r => r.name.toLowerCase() === args[1].toLowerCase());
}
if (!role) {
return message.reply('Rôle non trouvé.');
}
if (role.position >= (botMember.roles.highest ? botMember.roles.highest.position : 0)) {
return message.reply('Je ne peux pas gérer ce rôle car il est plus haut ou égal à mon rôle le plus élevé.');
}
const permlevel = await getPermissionLevel(user, client);
if (role.permissions.has(PermissionsBitField.Flags.Administrator)&& permlevel < 10) {
return message.reply('Le rôle que vous demandez est dangereux.');
}
const roleposition = role.position;
const userroleposition = userMember.roles.highest.position;
if (roleposition >= userroleposition && permlevel < 10) return message.reply('Vous ne pouvez pas supprimer un rôle plus élevé ou égal au vôtre.');
try {
await user.roles.add(role, `addrole : ${message.author.username}`);
message.reply(`Le rôle ${role} a été ajouté à ${user.user.tag}.`);
} catch (error) {
return message.reply('Une erreur est survenue lors de l\'ajout du rôle.');
}
},
};
+22
View File
@@ -15,6 +15,7 @@ module.exports = {
const add = args[0] === "add";
const del = args[0] === "del";
const list = args[0] === "list";
const preset = args[0] === "preset";
let data = await new Promise((resolve, reject) => {
db.get('SELECT value FROM gestion WHERE id = ?', [botId], (err, row) => {
@@ -66,7 +67,28 @@ module.exports = {
.setDescription(data[guildId].badwords.join('\n') || 'Aucun mot interdit n\'est défini.')
.setFooter({text: `Mots interdits | ${client.user.username}`})
.setColor('#0099ff');
try {
message.channel.send({ embeds: [embed] });
}catch (e) {
message.reply("Je n'ai pas pu envoyer l'embed, vérifier mes permissions.")
}
} else if (preset) {
const presetBadwords = [
"connard", "salope", "encule", "pute", "pd", "Nique", "batard", "gueule", "enfoire", "creve", "degage", "Trou du cul","raclure", "connasse", "petasse", "pute", "suceur", "ordure", "con", "foutre", "merdeux", "pedale", "chibre"
];
presetBadwords.forEach(word => {
if (!data[guildId].badwords.includes(word)) {
data[guildId].badwords.push(word);
}
});
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
if (err) {
console.error(err.message);
message.reply('Une erreur est survenue lors de la mise à jour de la base de données.');
return;
}
});
message.reply('La liste prédéfinie des mots interdits a été mise à jour.')
} else {
message.reply('Commande invalide. Utilisez `badword add [mot]`, `badword del [mot]` ou `badword list`.');
}
+31 -23
View File
@@ -1,18 +1,21 @@
const { EmbedBuilder, User } = require("discord.js")
const { getPermissionLevel } = require('../../fonction/getPermissionLevel');
const { getPermissionLevel2 } = require('../../fonction/getPermissionLevel');
module.exports = {
name: 'ban',
description: 'Ban a member',
emote: '🚫',
utilisation: 'ban <@member> [reason]',
category: 'moderation',
name: 'ban',
description: 'Bannir un membre',
emote: '🚫',
utilisation: 'ban <@member> [reason]',
category: 'moderation',
async execute(message, args, client) {
const userId = message.mentions.users.first()?.id
|| args[0];
const user = await client.users.fetch(userId);
async execute(message, args, client) {
const userId = message.mentions.users.first()?.id || args[0];
const guildId = message.guild.id;
const user = await message.guild.members.fetch(userId).catch(error => {
return null;
});
const author = await message.guild.members.fetch(message.author.id).catch(error => {
return null;
});
if (!user) {
return message.reply('Veuillez mentionner un utilisateur valide ou fournir un ID valide.');
}
@@ -23,23 +26,28 @@ module.exports = {
if (user.id === client.user.id) {
return message.reply('Vous ne pouvez pas me ban');
}
if (await getPermissionLevel(user, client) === 11) {
const permissionMember = await getPermissionLevel2(user, client,guildId);
if (permissionMember === 11) {
return message.reply('Vous ne pouvez pas ban un membre buyer');
}
if (await getPermissionLevel(user, client) === 10) {
if (permissionMember === 10) {
return message.reply('Vous ne pouvez pas ban un membre owner');
}
if (await getPermissionLevel(message.author, client) !== 11 || await getPermissionLevel(message.author, client) !== 10) {
if (await getPermissionLevel(user, client) >= await getPermissionLevel(message.author, client)) {
const permissionAuthor = await getPermissionLevel2(message.author, client, guildId);
if (permissionAuthor !== 11 && permissionAuthor !== 10) {
if (permissionMember >= permissionAuthor) {
return message.reply('Vous ne pouvez pas ban un membre avec une permission égale ou supérieure à la votre');
}
}
try {
await message.guild.members.ban(user, { reason: args.slice(1).join(' ')+` : ${message.author.tag}` || `Aucune raison spécifiée : ${message.author.tag}` });
message.channel.send(`L'utilisateur ${user.username} a été banni.`);
} catch {
message.reply(`Une erreur s'est produite lors de la tentative de bannissement de ${user.username}.`);
if(user.roles.highest.position >= author.roles.highest.position && permissionAuthor !== 11 && permissionAuthor !== 10) {
return message.reply('Vous ne pouvez pas ban un membre avec un role égale ou supérieure à la votre');
}
},
try {
const reason = args.slice(1).join(' ') || `Aucune raison spécifiée : ${message.author.tag}`;
await message.guild.members.ban(user, { reason: `${reason} : ${message.author.tag}` });
message.channel.send(`L'utilisateur ${user.user.username} a été banni.`);
} catch {
message.reply(`Une erreur s'est produite lors de la tentative de bannissement de ${user.user.username}.`);
}
},
};
+30
View File
@@ -0,0 +1,30 @@
const { EmbedBuilder } = require('discord.js');
module.exports = {
name: 'baninfo',
description: 'Affiche les informations d\'un utilisateur bannie',
emote: '🚫',
utilisation: 'baninfo [id]',
category: 'gestion',
async execute(message, args, client) {
const userIdToCheck = args[0];
const bans = await message.guild.bans.fetch();
const ban = bans.find(ban => ban.user.id === userIdToCheck);
if (!ban) {
return message.reply('Cet utilisateur n\'est pas dans la liste des bannis.');
}
const banner = ban.executor;
const reason = ban.reason || 'Raison non disponible';
const banDate = ban.createdAt;
const embed = new EmbedBuilder()
.setTitle(`Informations sur l'utilisateur ${ban.user.tag}`)
.setDescription(`**Raison: **\`${reason}\`\n**Bannie par: **${banner ? banner.tag : 'Inconnu'}\n**Date: **${banDate}`)
.setColor('#0099ff');
message.channel.send({ embeds: [embed] });
},
};
+45 -23
View File
@@ -9,25 +9,28 @@ module.exports = {
async execute(message) {
try {
const bans = await message.guild.bans.fetch();
const bansArray = Array.from(bans.values());
const embeds = [];
const maxPerPage = 10;
let currentPage = 0;
const maxPerPage = 15;
let index = 0;
for (let i = 0; i < bans.size; i += maxPerPage) {
for (let i = 0; i < bansArray.length; i += maxPerPage) {
const page = bansArray.slice(i, i + maxPerPage).map((ban) => {
const reason = ban.reason || 'Raison non disponible';
const entry = `**${index + 1}.** ${ban.user.tag} - **Raison: **\`${reason}\``;
index++;
return entry;
}).join('\n');
const embed = new EmbedBuilder()
.setTitle('Liste des utilisateurs bannis')
.setDescription(page)
.setColor('#ff0000');
bans.each((ban, index) => {
if (index >= i && index < i + maxPerPage) {
const reason = ban.reason || 'Raison non disponible';
embed.addFields({ name: ban.user.tag, value: `Raison: ${reason}` });
}
});
embeds.push(embed);
}
embeds.push(embed);
}
let currentPage = 0;
const row = new ActionRowBuilder()
.addComponents(
@@ -41,27 +44,46 @@ module.exports = {
.setStyle(ButtonStyle.Primary)
);
await message.channel.send({ embeds: [embeds[currentPage]], components: [row] });
const sentMessage = await message.channel.send({ embeds: [embeds[currentPage]], components: [row] });
const filter = i => i.customId === 'previous' || i.customId === 'next' && i.user.id === message.author.id;
const collector = message.channel.createMessageComponentCollector({ filter, time: 60000 });
const collector = sentMessage.createMessageComponentCollector({ filter, time: 60000 });
collector.on('collect', async i => {
if (i.customId === 'previous') {
currentPage = Math.max(currentPage - 1, 0);
currentPage--;
} else if (i.customId === 'next') {
currentPage = Math.min(currentPage + 1, embeds.length - 1);
currentPage++;
}
await i.update({ embeds: [embeds[currentPage]], components: [row] });
if (currentPage < 0) {
currentPage = 0;
} else if (currentPage >= embeds.length) {
currentPage = embeds.length - 1;
}
const newEmbed = embeds[currentPage];
const backButton = new ButtonBuilder()
.setCustomId('previous')
.setLabel('Précédent')
.setStyle(ButtonStyle.Primary);
const nextButton = new ButtonBuilder()
.setCustomId('next')
.setLabel('Suivant')
.setStyle(ButtonStyle.Primary);
const row = new ActionRowBuilder()
.addComponents(backButton, nextButton);
await i.update({ embeds: [newEmbed], components: [row] });
});
collector.on('end', collected => {
message.channel.send('Navigation terminée.');
sentMessage.edit({ components: [] });
});
} catch (error) {
console.error('Erreur lors de la récupération des utilisateurs bannis:', error);
message.reply('Une erreur est survenue lors de la récupération des utilisateurs bannis.');
}
},
};
};
+21
View File
@@ -0,0 +1,21 @@
const { PermissionsBitField } = require('discord.js');
module.exports = {
name: 'cmute',
description: 'Mute un utilisateur dans un salon',
emote: '🔇',
utilisation: 'cmute <@utilisateur> ou cmute <ID>',
category: 'moderation',
async execute(message, args) {
const user = message.mentions.members.first() || message.guild.members.cache.get(args[0]);
if (!user) {
return message.reply('Veuillez mentionner une utilisateur valide.');
}
if (user.id === message.author.id) {
return message.reply("Vous ne pouvez pas vous mute");
}
await message.channel.permissionOverwrites.edit(user, { "SendMessages": false });
message.reply(`${user} a bien été mute dans le salon : <#${message.channel.id}>`)
},
};
+21
View File
@@ -0,0 +1,21 @@
module.exports = {
name: 'cunmute',
description: 'Déverrouille l\'envoi de messages pour un utilisateur dans un salon',
emote: '🔊',
utilisation: 'cunmute <@utilisateur> ou cunmute <ID>',
category: 'moderation',
async execute(message, args) {
const user = message.mentions.members.first() || message.guild.members.cache.get(args[0]);
if (!user) {
return message.reply('Veuillez mentionner une utilisateur valide.');
}
if (user.id === message.author.id) {
return message.reply("Vous ne pouvez pas vous déverrouiller vous-même");
}
await message.channel.permissionOverwrites.delete(user.id).catch(error => {
});
message.reply(`${user} a bien été déverrouillé dans le salon : <#${message.channel.id}>`)
},
};
+50
View File
@@ -0,0 +1,50 @@
const { getPermissionLevel } = require('../../fonction/getPermissionLevel');
const { PermissionsBitField } = require('discord.js');
module.exports = {
name: 'delrole',
description: 'Supprime un rôle d\'un utilisateur.',
usage: '+delrole <@user ou ID> <@role ou ID ou nom>',
category: 'moderation',
async execute(message, args, client) {
const botMember = await message.guild.members.fetch(client.user.id);
const userMember = await message.guild.members.fetch(message.author.id);
if (!botMember.permissions.has(PermissionsBitField.Flags.ManageRoles)) {
return message.reply("Je n'ai pas la permission de pouvoir supprimer des rôles");
}
const user = message.mentions.members.first() || message.guild.members.cache.get(args[0]);
if (!user) {
return message.reply('Utilisateur non trouvé.');
}
let role;
if (message.mentions.roles.first()) {
role = message.mentions.roles.first();
} else if (args[1].match(/^<@&(\d+)>$/)) {
const roleId = args[1].match(/^<@&(\d+)>$/)[1];
role = message.guild.roles.cache.get(roleId);
} else {
role = message.guild.roles.cache.find(r => r.name.toLowerCase() === args[1].toLowerCase());
}
if (!role) {
return message.reply('Rôle non trouvé.');
}
if (role.position >= (botMember.roles.highest ? botMember.roles.highest.position : 0)) {
return message.reply('Je ne peux pas gérer ce rôle car il est plus haut ou égal à mon rôle le plus élevé.');
}
const permlevel = await getPermissionLevel(user, client);
const roleposition = role.position;
const userroleposition = userMember.roles.highest.position;
if (roleposition >= userroleposition && permlevel < 10) return message.reply('Vous ne pouvez pas supprimer un rôle plus élevé ou égal au vôtre.');
try {
await user.roles.remove(role, `delrole : ${message.author.username}`);
message.reply(`Le rôle ${role} a été supprimé de ${user.user.tag}.`);
} catch (error) {
return message.reply('Une erreur est survenue lors de la suppression du rôle.');
}
},
};
+49 -38
View File
@@ -1,42 +1,53 @@
const { EmbedBuilder, User } = require("discord.js")
const { getPermissionLevel } = require('../../fonction/getPermissionLevel');
const { getPermissionLevel2 } = require('../../fonction/getPermissionLevel');
module.exports = {
name: 'kick',
aliases: ['expulse'],
description: 'Kick a member',
emote: '🚫',
utilisation: 'kick <@member> [reason]',
category: 'moderation',
name: 'kick',
description: 'Expluser un membre',
emote: '🚫',
utilisation: 'kick <@member> [reason]',
category: 'moderation',
async execute(message, args, client) {
const member = message.mentions.members.first();
const reason = args.slice(1).join(' ') || 'Aucune raison spécifiée';
if (!member) {
return message.reply('Veuillez mentionner un membre à kick');
}
if (member.id === message.author.id) {
return message.reply('Vous ne pouvez pas vous kick vous même');
}
if (member.id === client.user.id) {
return message.reply('Vous ne pouvez pas me kick');
}
if (await getPermissionLevel(member, client) === 11) {
return message.reply('Vous ne pouvez pas kick un membre buyer');
}
if (await getPermissionLevel(member, client) === 10) {
return message.reply('Vous ne pouvez pas kick un membre owner');
}
if (await getPermissionLevel(message.member, client) !== 11 || await getPermissionLevel(message.member, client) !== 10) {
if (await getPermissionLevel(member, client) >= await getPermissionLevel(message.member, client)) {
return message.reply('Vous ne pouvez pas kick un membre avec une permission égale ou supérieure à la votre');
}
}
member.kick(`${reason} : ${message.author.tag}`).then(() => {
message.reply(`${member.user.tag} a bien été kick`);
}).catch((err) => {
message.reply(`Une erreur est survenue lors du kick de ${member.user.tag}`);
});
},
async execute(message, args, client) {
const userId = message.mentions.users.first()?.id || args[0];
const guildId = message.guild.id;
const user = await message.guild.members.fetch(userId).catch(error => {
return null;
});
const author = await message.guild.members.fetch(message.author.id).catch(error => {
return null;
});
if (!user) {
return message.reply('Veuillez mentionner un utilisateur valide ou fournir un ID valide.');
}
if (user.id === message.author.id) {
return message.reply('Vous ne pouvez pas vous kick vous même');
}
if (user.id === client.user.id) {
return message.reply('Vous ne pouvez pas me kick');
}
const permissionMember = await getPermissionLevel2(user, client, guildId);
if (permissionMember === 11) {
return message.reply('Vous ne pouvez pas kick un membre buyer');
}
if (permissionMember === 10) {
return message.reply('Vous ne pouvez pas kick un membre owner');
}
const permissionAuthor = await getPermissionLevel2(message.author, client, guildId);
if (permissionAuthor !== 11 && permissionAuthor !== 10) {
if (permissionMember >= permissionAuthor) {
return message.reply('Vous ne pouvez pas kick un membre avec une permission égale ou supérieure à la votre');
}
}
if(user.roles.highest.position >= author.roles.highest.position && permissionAuthor !== 11 && permissionAuthor !== 10) {
return message.reply('Vous ne pouvez pas kick un membre avec un role égale ou supérieure à la votre');
}
try {
const reason = args.slice(1).join(' ') || `Aucune raison spécifiée : ${message.author.tag}`;
await user.kick(reason);
message.channel.send(`L'utilisateur ${user.user.username} a été kick.`);
} catch {
message.reply(`Une erreur s'est produite lors de la tentative de kick de ${user.user.username}.`);
}
},
};
+20
View File
@@ -0,0 +1,20 @@
module.exports = {
name: 'nickreset',
description: 'Réinitialise le pseudo d\'un membre à son nom d\'utilisateur réel.',
utilisation: 'nickreset [@member/memberID]',
category: 'moderation',
emote:'🛠️ ',
async execute(message, args, client) {
const member = message.mentions.members.first() || message.guild.members.cache.get(args[0]);
if (!member) {
return message.reply('Veuillez mentionner un membre ou fournir un ID de membre valide.');
}
try {
await member.setNickname(member.user.username);
message.reply(`Le pseudo de ${member.user.tag} a été réinitialisé à son nom d'utilisateur réel.`);
} catch (error) {
message.reply('Une erreur s\'est produite lors de la tentative de réinitialisation du pseudo.');
}
},
};
+21 -2
View File
@@ -72,6 +72,27 @@ module.exports = {
}
message.reply(reply);
} else {
let data = await new Promise((resolve, reject) => {
db.get('SELECT value FROM gestion WHERE id = ?', [message.client.user.id], (err, row) => {
if (err) {
console.error(err.message);
reject(err);
}
resolve(row ? JSON.parse(row.value) : {});
});
});
data[message.guild.id] = data[message.guild.id] || {};
data[message.guild.id].prisonlist = data[message.guild.id].prisonlist || [];
const userIndex = data[message.guild.id].prisonlist.indexOf(users.id);
if (userIndex !== -1) {
data[message.guild.id].prisonlist.splice(userIndex, 1);
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [message.client.user.id, JSON.stringify(data)], function(err) {
if (err) {
console.error(err.message);
return message.reply('Une erreur est survenue lors de la mise à jour de la liste des utilisateurs en prison.');
}
});
}
message.reply(`👮 <@${users.id}> est libéré de prison`);
}
} else if (args[0] === "list") {
@@ -97,8 +118,6 @@ module.exports = {
embed.addFields({ name: `${index + 1}`, value: `<@${userId}>`});
});
}
// Envoyer l'embed
message.channel.send({ embeds: [embed] });
}else {
const users = message.mentions.users.first() || message.guild.members.cache.get(args[1])
+1 -1
View File
@@ -7,7 +7,7 @@ module.exports = {
description: 'Afficher tous les avertissements d\'un utilisateur',
aliases: ['sanction'],
category: 'moderation',
utilisation: '+sanction @user/id',
utilisation: 'sanction @user/id',
async execute(message, args, client) {
const user = message.mentions.users.first() || client.users.cache.get(args[0]);
+29
View File
@@ -0,0 +1,29 @@
module.exports = {
name: 'unbanall',
aliases: ['debannir-tous'],
description: 'Débannit tous les membres bannis',
emote: '🚫',
utilisation: 'unbanall ',
category: 'moderation',
async execute(message, args, client) {
try {
const sendmessage = await message.reply("Récupération de la liste des personnes bannies");
const reason = args.slice(1).join(' ') || 'Aucune raison spécifiée';
const bannedMembers = await message.guild.bans.fetch();
if (bannedMembers.size === 0) {
return sendmessage.edit('Il n\'y a aucun membre banni sur ce serveur.');
}
sendmessage.edit("Le unbanall est entrain d'etre effectué")
let counter = 0;
for (const user of bannedMembers.values()) {
await message.guild.members.unban(user.user, `unbanall par ${message.author.tag} : ${reason}`);
counter++;
}
sendmessage.edit(`Tous les membres bannis ont été débannis. Nombre de membres débannis : \`${counter}\``);
} catch (err) {
message.reply(`Une erreur est survenue lors du débannissement des membres.`);
}
},
};
+1 -2
View File
@@ -5,7 +5,7 @@ module.exports = {
name: 'unwarn',
description: 'Supprimer un avertissement d\'un utilisateur',
category: 'moderation',
utilisation: '+unwarn @user <warnid>',
utilisation: 'unwarn @user <warnid>',
async execute(message, args, client) {
const user = message.mentions.users.first() || client.users.cache.get(args[0]);
@@ -23,7 +23,6 @@ module.exports = {
const warningId = parseInt(args[1]);
if (!warningId) return message.reply("Veuillez mettre l'id du warn.");
// Supprimer l'avertissement de la base de données
db.run('DELETE FROM warnings WHERE guildId = ? AND userId = ? AND warningId = ?', [message.guild.id, user.id, warningId], (err) => {
if (err) {
console.error(err.message);
+1 -4
View File
@@ -5,14 +5,13 @@ module.exports = {
name: 'warn',
description: 'Ajouter un avertissement à un utilisateur',
category: 'moderation',
utilisation: '+warn @user <raison>',
utilisation: 'warn @user <raison>',
async execute(message, args, client) {
const user = message.mentions.users.first() || client.users.cache.get(args[0]);
if (!user) return message.reply('Utilisateur non trouvé.');
const reason = args.slice(1).join(' ') || 'pas de raison fournie';
// Récupérer le dernier warningId pour cette guilde et utilisateur
let lastWarningId = await new Promise((resolve, reject) => {
db.get('SELECT MAX(warningId) as lastWarningId FROM warnings WHERE guildId = ? AND userId = ?', [message.guild.id, user.id], (err, row) => {
if (err) {
@@ -23,10 +22,8 @@ module.exports = {
});
});
// Incrémenter le warningId pour le nouvel avertissement
const newWarningId = lastWarningId + 1;
// Insérer l'avertissement dans la base de données
db.run('INSERT INTO warnings (guildId, userId, warningId, reason, timestamp) VALUES (?, ?, ?, ?, ?)', [message.guild.id, user.id, newWarningId, reason, Date.now()], (err) => {
if (err) {
console.error(err.message);