mirror of
https://github.com/arthur-pbty/gestion.git
synced 2026-06-03 23:36:35 +02:00
best configuration for embed , blrank and alias et ajout du system des blword ( badword)
This commit is contained in:
@@ -28,6 +28,11 @@ module.exports = {
|
||||
if (!command) {
|
||||
return message.reply(`La commande ${commandName} n'existe pas.`);
|
||||
}
|
||||
const aliasCheck = isAliasUnique(client, newAlias);
|
||||
if (!aliasCheck.isUnique) {
|
||||
return message.reply(`Cet alias est déjà utilisé par la commande \`${aliasCheck.conflictCommand}\`.`);
|
||||
}
|
||||
|
||||
|
||||
let data = await new Promise((resolve, reject) => {
|
||||
db.get('SELECT value FROM gestion WHERE id = ?', [botId], (err, row) => {
|
||||
@@ -45,7 +50,7 @@ module.exports = {
|
||||
|
||||
for (const cmd in data.alias) {
|
||||
if (data.alias[cmd][newAlias]) {
|
||||
return message.reply('Cet alias est déjà utilisé pour une autre commande.');
|
||||
return message.reply(`Cet alias est déjà utilisé par la commande \`${cmd}\`.`);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -118,4 +123,15 @@ module.exports = {
|
||||
return message.reply('Sous-commande invalide. Veuillez utiliser add, remove, ou list.');
|
||||
}
|
||||
},
|
||||
};
|
||||
};
|
||||
function isAliasUnique(client, newAlias) {
|
||||
for (const command of client.commands.values()) {
|
||||
if (command.name === newAlias) {
|
||||
return { isUnique: false, conflictCommand: command.name };
|
||||
}
|
||||
if (command.aliases && command.aliases.includes(newAlias)) {
|
||||
return { isUnique: false, conflictCommand: command.name };
|
||||
}
|
||||
}
|
||||
return { isUnique: true };
|
||||
}
|
||||
+10
-10
@@ -1,6 +1,6 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
module.exports = {
|
||||
name: 'blrank',
|
||||
description: 'Affiché ou gérés la blrankn',
|
||||
@@ -9,11 +9,10 @@ module.exports = {
|
||||
category: 'gestion',
|
||||
|
||||
async execute(message, args, client) {
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
const botId = message.client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
|
||||
if (args.length > 0) {
|
||||
if (args.length > 0) {
|
||||
const userId = args[0].replace(/<@!?(\d+)>/, '$1');
|
||||
let data = await new Promise((resolve, reject) => {
|
||||
db.get('SELECT value FROM gestion WHERE id = ?', [botId], (err, row) => {
|
||||
@@ -25,12 +24,13 @@ module.exports = {
|
||||
});
|
||||
});
|
||||
|
||||
if (!data.blrank) {
|
||||
data.blrank = {};
|
||||
// Initialiser la structure de données si elle n'existe pas
|
||||
if (!data[guildId]) {
|
||||
data[guildId] = { blrank: {} };
|
||||
}
|
||||
|
||||
if (data.blrank[userId]) {
|
||||
delete data.blrank[userId];
|
||||
if (data[guildId].blrank[userId]) {
|
||||
delete data[guildId].blrank[userId];
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
@@ -38,7 +38,7 @@ module.exports = {
|
||||
});
|
||||
message.reply('Utilisateur retiré de la blrank.');
|
||||
} else {
|
||||
data.blrank[userId] = true;
|
||||
data[guildId].blrank[userId] = true;
|
||||
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify(data)], (err) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
@@ -57,13 +57,13 @@ module.exports = {
|
||||
});
|
||||
});
|
||||
|
||||
const blrank = data.blrank || {};
|
||||
// Récupérer la liste spécifique au serveur
|
||||
const blrank = data[guildId] && data[guildId].blrank ? data[guildId].blrank : {};
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Blrank')
|
||||
.setDescription(Object.keys(blrank).map(id => `<@${id}>`).join('\n') || 'Aucun utilisateur sur la liste blanche')
|
||||
.setFooter({ text: message.client.user.username, iconURL: client.user.displayAvatarURL({dynamic: true})});
|
||||
|
||||
|
||||
message.channel.send({ embeds: [embed] });
|
||||
}
|
||||
},
|
||||
|
||||
@@ -2,7 +2,7 @@ const { PermissionsBitField } = require("discord.js");
|
||||
|
||||
module.exports = {
|
||||
name: 'clear',
|
||||
aliases: ['purge', 'delete', 'suppr', 'efface', 'nettoie', 'vide', 'clean', 'effacer'],
|
||||
aliases: ['purge'],
|
||||
description: 'Clear des messages',
|
||||
emote: '🗑️',
|
||||
utilisation: 'clear <nombre de messages>',
|
||||
|
||||
+61
-19
@@ -2,7 +2,7 @@ const { EmbedBuilder, ActionRowBuilder, StringSelectMenuBuilder, ButtonBuilder,
|
||||
|
||||
module.exports = {
|
||||
name: 'embed',
|
||||
aliases: ['embedcreate', 'createembed'],
|
||||
aliases: ['embedcreate'],
|
||||
description: 'Crée un embed customisable',
|
||||
emote: '📝',
|
||||
utilisation: 'embed',
|
||||
@@ -52,6 +52,8 @@ module.exports = {
|
||||
let msgg = collected.first()
|
||||
embed.setTitle(msgg.content)
|
||||
msg.edit({ embeds: [embed]})
|
||||
question.delete().catch(() => false);
|
||||
msgg.delete().catch(() => false);
|
||||
})
|
||||
}
|
||||
if(i.values[0] == "embeddescription") {
|
||||
@@ -60,25 +62,61 @@ module.exports = {
|
||||
let msgg = collected.first()
|
||||
embed.setDescription(msgg.content)
|
||||
msg.edit({ embeds: [embed]})
|
||||
question.delete().catch(() => false);
|
||||
msgg.delete().catch(() => false);
|
||||
|
||||
})
|
||||
}
|
||||
if(i.values[0] == "embedauthor") {
|
||||
let question = await message.channel.send({ content: "Veuillez saisir l'auteur de l'embed" })
|
||||
let collected = await question.channel.awaitMessages({ filter: m => m.author.id === message.author.id, max: 1 }).then(collected => {
|
||||
let msgg = collected.first()
|
||||
embed.setAuthor({name: msgg.content})
|
||||
msg.edit({ embeds: [embed]})
|
||||
})
|
||||
}
|
||||
if(i.values[0] == "embedfooter") {
|
||||
let question = await message.channel.send({ content: "Veuillez saisir le footer de l'embed" })
|
||||
let collected = await question.channel.awaitMessages({ filter: m => m.author.id === message.author.id, max: 1 }).then(collected => {
|
||||
let msgg = collected.first()
|
||||
embed.setFooter({text: msgg.content})
|
||||
msg.edit({ embeds: [embed]})
|
||||
})
|
||||
}
|
||||
if(i.values[0] == "embedauthor") {
|
||||
let question = await message.channel.send({ content: "Veuillez saisir l'auteur de l'embed" });
|
||||
let collected = await question.channel.awaitMessages({ filter: m => m.author.id === message.author.id, max: 1 });
|
||||
let msgg = collected.first();
|
||||
let authorName = msgg.content;
|
||||
|
||||
let question2 = await message.channel.send({ content: "Veuillez fournir une URL d'image ou télécharger une image pour l'auteur." });
|
||||
collected = await question.channel.awaitMessages({ filter: m => m.author.id === message.author.id, max: 1, time: 60000, errors: ["time"] });
|
||||
let msgg2 = collected.first();
|
||||
let content = msgg2.content;
|
||||
let imageUrl = msgg2.attachments.first() ? msgg2.attachments.first().url : content;
|
||||
|
||||
const imageUrlRegex = /^https?:\/\/.*\/.*\.(png|gif|webp|jpeg|jpg|svg)\??.*$/gmi;
|
||||
if (imageUrlRegex.test(imageUrl)) {
|
||||
embed.setAuthor({name: authorName, iconURL: imageUrl});
|
||||
} else {
|
||||
embed.setAuthor({name: authorName});
|
||||
}
|
||||
msg.edit({ embeds: [embed]});
|
||||
question.delete().catch(() => false);
|
||||
msgg.delete().catch(() => false);
|
||||
question2.delete().catch(() => false);
|
||||
msgg2.delete().catch(() => false);
|
||||
}
|
||||
if(i.values[0] == "embedfooter") {
|
||||
let question = await message.channel.send({ content: "Veuillez saisir le texte du footer de l'embed" });
|
||||
let collected = await question.channel.awaitMessages({ filter: m => m.author.id === message.author.id, max: 1 });
|
||||
let msgg = collected.first();
|
||||
let footerText = msgg.content;
|
||||
|
||||
let question2 = await message.channel.send({ content: "Veuillez fournir une URL d'image ou télécharger une image pour le footer." });
|
||||
collected = await question2.channel.awaitMessages({ filter: m => m.author.id === message.author.id, max: 1, time: 60000, errors: ["time"] });
|
||||
let msgg2 = collected.first();
|
||||
let content = msgg2.content;
|
||||
let imageUrl = msgg2.attachments.first() ? msgg2.attachments.first().url : content;
|
||||
|
||||
|
||||
const imageUrlRegex = /^https?:\/\/.*\/.*\.(png|gif|webp|jpeg|jpg|svg)\??.*$/gmi;
|
||||
if (imageUrlRegex.test(imageUrl)) {
|
||||
embed.setFooter({text: footerText, iconURL: imageUrl});
|
||||
msg.edit({ embeds: [embed]});
|
||||
} else {
|
||||
embed.setFooter({text: footerText});
|
||||
}
|
||||
msg.edit({ embeds: [embed]});
|
||||
question.delete().catch(() => false);
|
||||
msgg.delete().catch(() => false);
|
||||
question2.delete().catch(() => false);
|
||||
msgg2.delete().catch(() => false);
|
||||
}
|
||||
if(i.values[0] == "embedthumbnail") {
|
||||
var yx = await message.channel.send({ content: "Quel sera le **Thumnail** de l'embed ?" })
|
||||
let collected = await message.channel.awaitMessages({ filter: m => m.author.id === message.author.id, max: 1, time: 60000, errors: ["time"] })
|
||||
@@ -140,21 +178,25 @@ module.exports = {
|
||||
|
||||
})
|
||||
}
|
||||
if(i.customId == "embedurl") {
|
||||
if(i.values[0] === "embedurl") {
|
||||
let question = await message.channel.send({ content: "Veuillez saisir l'URL de l'embed" })
|
||||
let collected = await question.channel.awaitMessages({ filter: m => m.author.id === message.author.id, max: 1 }).then(collected => {
|
||||
let msgg = collected.first()
|
||||
embed.setURL(msgg.content)
|
||||
msg.edit({ embeds: [embed]})
|
||||
question.delete().catch(() => false);
|
||||
msgg.delete().catch(() => false);
|
||||
|
||||
})
|
||||
}
|
||||
if(i.customId == "embedcolor") {
|
||||
if(i.values[0] === "embedcolor") {
|
||||
let question = await message.channel.send({ content: "Veuillez saisir la couleur de l'embed" })
|
||||
let collected = await question.channel.awaitMessages({ filter: m => m.author.id === message.author.id, max: 1 }).then(collected => {
|
||||
let msgg = collected.first()
|
||||
embed.setColor(msgg.content)
|
||||
msg.edit({ embeds: [embed]})
|
||||
question.delete().catch(() => false);
|
||||
msgg.delete().catch(() => false);
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
|
||||
module.exports = {
|
||||
name: 'blword',
|
||||
aliases: ['badword'],
|
||||
description: 'Affiché ou gérés les blword',
|
||||
emote: '🔧',
|
||||
utilisation: 'blword <add/del/list> [mot]',
|
||||
category: 'moderation',
|
||||
async execute(message, args, client) {
|
||||
const botId = message.client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
const add = args[0] === "add";
|
||||
const del = args[0] === "del";
|
||||
const list = args[0] === "list";
|
||||
|
||||
let data = await new Promise((resolve, reject) => {
|
||||
db.get('SELECT value FROM gestion WHERE id = ?', [botId], (err, row) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
reject(err);
|
||||
}
|
||||
resolve(row ? JSON.parse(row.value) : {});
|
||||
});
|
||||
});
|
||||
|
||||
data[guildId] = data[guildId] || {};
|
||||
data[guildId].badwords = data[guildId].badwords || [];
|
||||
|
||||
if (add) {
|
||||
const word = args[1];
|
||||
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(`Le mot "${word}" a été ajouté à la liste des mots interdits.`);
|
||||
} else {
|
||||
message.reply(`Le mot "${word}" est déjà dans la liste des mots interdits.`);
|
||||
}
|
||||
} else if (del) {
|
||||
const word = args[1];
|
||||
const index = data[guildId].badwords.indexOf(word);
|
||||
if (index !== -1) {
|
||||
data[guildId].badwords.splice(index, 1);
|
||||
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(`Le mot "${word}" a été retiré de la liste des mots interdits.`);
|
||||
} else {
|
||||
message.reply(`Le mot "${word}" n'est pas dans la liste des mots interdits.`);
|
||||
}
|
||||
} else if (list) {
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle('Liste des mots interdits')
|
||||
.setDescription(data[guildId].badwords.join('\n') || 'Aucun mot interdit n\'est défini.')
|
||||
.setFooter({text: `Mots interdits | ${client.user.username}`})
|
||||
.setColor('#0099ff');
|
||||
message.channel.send({ embeds: [embed] });
|
||||
} else {
|
||||
message.reply('Commande invalide. Utilisez `badword add [mot]`, `badword del [mot]` ou `badword list`.');
|
||||
}
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,36 @@
|
||||
const { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder, ChannelType } = require('discord.js');
|
||||
const sqlite3 = require('sqlite3').verbose();
|
||||
const { Events } = require("discord.js");
|
||||
const db = new sqlite3.Database('myDatabase.db');
|
||||
const { getPermissionLevel } = require('../../fonction/getPermissionLevel');
|
||||
module.exports = {
|
||||
name: Events.MessageCreate,
|
||||
async execute(message, client) {
|
||||
const botId = message.client.user.id;
|
||||
const guildId = message.guild.id;
|
||||
const user = message.member;
|
||||
if (message.channel.type === ChannelType.DM) return;
|
||||
let data = await new Promise((resolve, reject) => {
|
||||
db.get('SELECT value FROM gestion WHERE id = ?', [botId], (err, row) => {
|
||||
if (err) {
|
||||
console.error(err.message);
|
||||
reject(err);
|
||||
}
|
||||
resolve(row ? JSON.parse(row.value) : {});
|
||||
});
|
||||
});
|
||||
if (!data[guildId]) {
|
||||
data[guildId] = { badwords: [] };
|
||||
}
|
||||
const badwords = data[guildId].badwords || [];
|
||||
const containsBadword = badwords.some(word => message.content.toLowerCase().includes(word.toLowerCase()));
|
||||
|
||||
if (containsBadword) {
|
||||
if (message.author.id === client.user.id || await getPermissionLevel(user, client) >= 10) return;
|
||||
try {
|
||||
await message.delete({ reason: 'Contient un mot interdit' });
|
||||
} catch (error) {
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
@@ -19,9 +19,9 @@ module.exports = {
|
||||
});
|
||||
});
|
||||
|
||||
let blrank = data.blrank || {};
|
||||
let blrank = data[guildId] && data[guildId].blrank ? data[guildId].blrank : {};
|
||||
|
||||
if (blrank[guildId] && blrank[guildId][newMember.id]) {
|
||||
if (blrank[newMember.id]) {
|
||||
const addedRoles = newMember.roles.cache.filter(role => !oldMember.roles.cache.has(role.id));
|
||||
addedRoles.forEach(async role => {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user