finish soutien module and reworked help commande

This commit is contained in:
VALOU3336
2024-04-24 12:01:56 +02:00
parent a9c8732f1f
commit eead6b1c4b
3 changed files with 326 additions and 177 deletions
+243 -117
View File
@@ -25,14 +25,15 @@ module.exports = {
}); });
const role = message.guild.roles.cache.get(soutienData.roleID); const role = message.guild.roles.cache.get(soutienData.roleID);
const roleValue = role ? `<@&${role.id}>` : "Rôle non trouvé"; const roleValue = role ? `<@&${role.id}>` : "Rôle non trouvé";
const messagesSoutien = Array.isArray(soutienData.messageSoutien) ? soutienData.messageSoutien.join(', ') : soutienData.messageSoutien; const messagesArray = JSON.parse(soutienData.message);
const messagesSoutien = messagesArray.join(', ');
const embed = new EmbedBuilder() const embed = new EmbedBuilder()
.setTitle('Soutien mis à jour') .setTitle('Configuration Soutien')
.addFields( .addFields(
{ name: '✅ Status', value: soutienData.status === "on" ? "✅" : "❌", inline: true }, { name: '✅ Status', value: soutienData.status === "on" ? "✅" : "❌", inline: true },
{ name: '📍 Rôle', value: roleValue, inline: true }, { name: '📍 Rôle', value: roleValue, inline: true },
{ name: '📝 Message', value: messagesSoutien || 'Non défini', inline: true }, { name: '📝 Messsage Autorisé', value: messagesSoutien || 'Non défini', inline: true },
{ name: '🔧 Paramètre', value: soutienData.parametre === 'inclus' || !soutienData.parametre ?'Inclus dans la status': "Ne contien que le status", inline: true } { name: '🔧 Paramètre', value: soutienData.parametre === 'inclus' || !soutienData.parametre ?'Inclus dans la status': "Ne contien que le status", inline: true }
) )
.setColor('#0099ff'); .setColor('#0099ff');
@@ -58,9 +59,9 @@ module.exports = {
.setLabel("Il n'y a que le message dans le status") .setLabel("Il n'y a que le message dans le status")
.setValue('fixstatus'), .setValue('fixstatus'),
); );
const row = new ActionRowBuilder().addComponents(select1); const rowactionrow = new ActionRowBuilder().addComponents(select1);
const sendmessage = await message.reply({ embeds: [embed], components: [row] }); const sendmessage = await message.reply({ embeds: [embed], components: [rowactionrow] });
const filter = i => i.customId === 'soutieninteraction' && i.user.id === message.author.id; const filter = i => i.customId === 'soutieninteraction' && i.user.id === message.author.id;
const collector = sendmessage.createMessageComponentCollector({ filter: filter, time: 120000 }); const collector = sendmessage.createMessageComponentCollector({ filter: filter, time: 120000 });
collector.on('collect', async i => { collector.on('collect', async i => {
@@ -75,96 +76,103 @@ const row = new ActionRowBuilder().addComponents(select1);
}); });
}); });
if (i.values[0] === 'onoroff') { if (i.values[0] === 'onoroff') {
let newStatus = currentSoutienData.status === "on" ? "off" : "on"; let newStatus = currentSoutienData.status === "on" ? "off" : "on";
await new Promise((resolve, reject) => { db.run(`INSERT OR IGNORE INTO soutiens (guildID) VALUES (?)`, [guildID], function(err) {
db.run(`INSERT OR REPLACE INTO soutiens (status, guildID) VALUES (?, ?)`, [newStatus, guildID], function(err) { if (err) {
console.error(err.message);
} else {
// Mise à jour
db.run(`UPDATE soutiens SET status = ? WHERE guildID = ?`, [newStatus, guildID], function(err) {
if (err) { if (err) {
console.log(err.message); console.error(err.message);
reject(err);
} else { } else {
resolve(); db.get(`SELECT * FROM soutiens WHERE guildID = ?`, [guildID], (err, row) => {
} if (err) {
}); console.error(err.message);
}); } else {
let soutienData = await new Promise((resolve, reject) => { let soutienData = row ? row : {};
db.get(`SELECT * FROM soutiens WHERE guildID = ?`, [guildID], (err, row) => { const role = message.guild.roles.cache.get(soutienData.roleID);
if (err) { const roleValue = role ? `<@&${role.id}>` : "Rôle non trouvé";
console.log(err.message); const messagesArray = JSON.parse(soutienData.message);
reject(err); const messagesSoutien = messagesArray.join(', ');
} else {
resolve(row ? row : {}); const updatedEmbed = new EmbedBuilder()
.setTitle('Configuration Soutien')
.addFields(
{ name: '✅ Status', value: newStatus === "on" ? "✅" : "❌", inline: true },
{ name: '📍 Rôle', value: roleValue, inline: true },
{ name: '📝 Message', value: messagesSoutien || 'Non défini', inline: true },
{ name: '🔧 Paramètre', value: soutienData.parametre === 'inclus' || !soutienData.parametre ?'Inclus dans la status': "Ne contien que le status", inline: true }
)
.setColor('#0099ff');
i.update({ embeds: [updatedEmbed], components: [rowactionrow] }).catch(console.error);
}
});
} }
}); });
}); }
const role = message.guild.roles.cache.get(soutienData.roleID); });
const roleValue = role ? role : "Rôle non trouvé"; } else if (i.values[0] === 'role') {
const messagesSoutien = Array.isArray(soutienData.messageSoutien) ? soutienData.messageSoutien.join(', ') : soutienData.messageSoutien;
const updatedEmbed = new EmbedBuilder()
.setTitle('Soutien mis à jour')
.addFields(
{ name: '✅ Status', value: newStatus === "on" ? "✅" : "❌", inline: true },
{ name: '📍 Rôle', value: roleValue, inline: true },
{ name: '📝 Message', value: messagesSoutien || 'Non défini', inline: true },
{ name: '🔧 Paramètre', value: currentSoutienData.parametre === 'inclus' || !currentSoutienData.parametre ?'Inclus dans la status': "Ne contien que le status", inline: true }
)
.setColor('#0099ff');
await i.update({ embeds: [updatedEmbed], components: [row] });
} else if (i.values[0] === 'role') {
console.log("dddd")
await message.reply('Veuillez fournir une mention de rôle ou un ID pour la mise à jour.'); await message.reply('Veuillez fournir une mention de rôle ou un ID pour la mise à jour.');
const filter = m => m.author.id === message.author.id; const filter = m => m.author.id === message.author.id;
const collector2 = message.channel.createMessageCollector({ filter: filter, max: 1, time: 60000 }); const collector2 = message.channel.createMessageCollector({ filter: filter, max: 1, time: 60000 });
collector2.on('collect', async collected => { collector2.on('collect', async collected => {
const roleMention = collected.mentions.roles.first(); const roleMention = collected.mentions.roles.first();
const roleID = roleMention ? roleMention.id : collected.content; const roleID = roleMention ? roleMention.id : collected.content;
const role = message.guild.roles.cache.get(roleID); const role = message.guild.roles.cache.get(roleID);
if (!role) { if (!role) {
await i.followUp('L\'ID du rôle fourni n\'est pas valide. Veuillez réessayer.'); await i.followUp('L\'ID du rôle fourni n\'est pas valide. Veuillez réessayer.');
} else { } else {
db.run(`INSERT OR REPLACE INTO soutiens (roleID, guildID) VALUES (?, ?)`, [roleID, guildID], async function(err) { // Utilisation de INSERT OR IGNORE pour éviter de supprimer les données existantes
if (err) { db.run(`INSERT OR IGNORE INTO soutiens (guildID) VALUES (?)`, [guildID], function(err) {
console.log(err.message); if (err) {
} else { console.log(err.message);
} else {
let soutienData = await new Promise((resolve, reject) => { db.run(`UPDATE soutiens SET roleID = ? WHERE guildID = ?`, [roleID, guildID], async function(err) {
db.get(`SELECT * FROM soutiens WHERE guildID = ?`, [guildID], (err, row) => { if (err) {
if (err) { console.log(err.message);
console.log(err.message); } else {
reject(err); let soutienData = await new Promise((resolve, reject) => {
} else { db.get(`SELECT * FROM soutiens WHERE guildID = ?`, [guildID], (err, row) => {
resolve(row ? row : {}); if (err) {
} console.log(err.message);
}); reject(err);
} else {
resolve(row ? row : {});
}
}); });
const role = message.guild.roles.cache.get(soutienData.roleID); });
const roleValue = role ? role : "Rôle non trouvé"; const role = message.guild.roles.cache.get(soutienData.roleID);
const messagesSoutien = Array.isArray(soutienData.messageSoutien) ? soutienData.messageSoutien.join(', ') : soutienData.messageSoutien; const roleValue = role ? `<@&${role.id}>` : "Rôle non trouvé";
const messagesArray = JSON.parse(soutienData.message);
const messagesSoutien = messagesArray.join(', ');
const updatedEmbed = new EmbedBuilder() const updatedEmbed = new EmbedBuilder()
.setTitle('Soutien mis à jour') .setTitle('Configuration Soutien')
.addFields( .addFields(
{ name: '✅ Status', value: soutienData.status === "on" ? "✅" : "❌", inline: true }, { name: '✅ Status', value: soutienData.status === "on" ? "✅" : "❌", inline: true },
{ name: '📍 Rôle', value: roleValue, inline: true }, { name: '📍 Rôle', value: roleValue, inline: true },
{ name: '📝 Message', value: messagesSoutien || 'Non défini', inline: true }, { name: '📝 Message', value: messagesSoutien || 'Non défini', inline: true },
{ name: '🔧 Paramètre', value: soutienData.parametre === 'inclus' || !soutienData.parametre ?'Inclus dans la status': "Ne contien que le status", inline: true } { name: '🔧 Paramètre', value: soutienData.parametre === 'inclus' || !soutienData.parametre ?'Inclus dans la status': "Ne contien que le status", inline: true }
) )
.setColor('#0099ff'); .setColor('#0099ff');
await i.update({ embeds: [updatedEmbed], components: [row] }); await i.update({ embeds: [updatedEmbed], components: [rowactionrow] });
} }
}); });
} }
});
}
}); });
collector2.on('end', collected => { collector2.on('end', collected => {
if (collected.size === 0) { if (collected.size === 0) {
message.reply('Vous n\'avez pas fourni de mention de rôle ou d\'ID.'); message.reply('Vous n\'avez pas fourni de mention de rôle ou d\'ID.');
} }
}); });
} else if (i.values[0] === 'addstatus') { } else if (i.values[0] === 'addstatus') {
@@ -174,42 +182,151 @@ const row = new ActionRowBuilder().addComponents(select1);
const collector = message.channel.createMessageCollector({ filter: filter, max: 1, time: 60000 }); const collector = message.channel.createMessageCollector({ filter: filter, max: 1, time: 60000 });
collector.on('collect', async collected => { collector.on('collect', async collected => {
const newStatus = collected.content; const newStatus = collected.content;
let currentSoutienData = await new Promise((resolve, reject) => { let currentSoutienData = await new Promise((resolve, reject) => {
db.get(`SELECT * FROM soutiens WHERE guildID = ?`, [guildID], (err, row) => { db.get(`SELECT * FROM soutiens WHERE guildID = ?`, [guildID], (err, row) => {
if (err) { if (err) {
console.error(err.message); console.error(err.message);
reject(err); reject(err);
} else { } else {
resolve(row ? row : {}); resolve(row ? row : {});
} }
}); });
});
let messagesSoutien = currentSoutienData.message ? JSON.parse(currentSoutienData.message) : [];
// Ajouter le nouveau statut au tableau
messagesSoutien.push(newStatus);
await new Promise((resolve, reject) => {
db.run(`INSERT OR IGNORE INTO soutiens (guildID) VALUES (?)`, [guildID], function(err) {
if (err) {
console.log(err.message);
reject(err);
} else {
// Mettre à jour la base de données avec le nouveau tableau
db.run(`UPDATE soutiens SET message = ? WHERE guildID = ?`, [JSON.stringify(messagesSoutien), guildID], function(err) {
if (err) {
console.log(err.message);
reject(err);
} else {
resolve();
}
});
}
});
});
let soutienData = await new Promise((resolve, reject) => {
db.get(`SELECT * FROM soutiens WHERE guildID = ?`, [guildID], (err, row) => {
if (err) {
console.log(err.message);
reject(err);
} else {
resolve(row ? row : {});
}
}); });
});
const role = message.guild.roles.cache.get(soutienData.roleID);
const roleValue = role ? `<@&${role.id}>` : "Rôle non trouvé";
const messagesArray = JSON.parse(soutienData.message);
const messagesSoutien2 = messagesArray.join(', ');
let messagesSoutien = Array.isArray(currentSoutienData.message) ? currentSoutienData.message : []; const updatedEmbed = new EmbedBuilder()
messagesSoutien.push(newStatus); .setTitle('Configuration Soutien')
.addFields(
await new Promise((resolve, reject) => { { name: '✅ Status', value: soutienData.status === "on" ? "✅" : "❌", inline: true },
db.run(`INSERT OR REPLACE INTO soutiens (message, guildID) VALUES (?, ?)`, [JSON.stringify(messagesSoutien), guildID], function(err) { { name: '📍 Rôle', value: roleValue, inline: true },
if (err) { { name: '📝 Message', value: messagesSoutien2 || 'Non défini', inline: true },
console.log(err.message); { name: '🔧 Paramètre', value: soutienData.parametre === 'inclus' || !soutienData.parametre ?'Inclus dans la status': "Ne contien que le status", inline: true }
reject(err); )
} else { .setColor('#0099ff');
resolve(); await i.update({ embeds: [updatedEmbed], components: [rowactionrow] });
}
});
});
}); });
collector.on('end', collected => { collector.on('end', collected => {
if (collected.size === 0) { if (collected.size === 0) {
message.reply('Vous n\'avez pas fourni de nouveau statut.'); message.reply('Vous n\'avez pas fourni de nouveau statut.');
} }
}); });
} } else if (i.values[0] === 'delstatus') {
else if (i.values[0] === 'delstatus') { await message.reply('Veuillez fournir le statut à supprimer.');
} else if (i.values[0] === 'inclusstatus') {
const filter = m => m.author.id === message.author.id;
const collector = message.channel.createMessageCollector({ filter: filter, max: 1, time: 60000 });
collector.on('collect', async collected => {
const statusToDelete = collected.content;
let currentSoutienData = await new Promise((resolve, reject) => {
db.get(`SELECT * FROM soutiens WHERE guildID = ?`, [guildID], (err, row) => {
if (err) {
console.error(err.message);
reject(err);
} else {
resolve(row ? row : {});
}
});
});
let messagesSoutien = currentSoutienData.message ? JSON.parse(currentSoutienData.message) : [];
// Vérifier si le statut existe dans le tableau
const index = messagesSoutien.indexOf(statusToDelete);
if (index !== -1) {
// Supprimer le statut du tableau
messagesSoutien.splice(index, 1);
await new Promise((resolve, reject) => {
db.run(`INSERT OR IGNORE INTO soutiens (guildID) VALUES (?)`, [guildID], function(err) {
if (err) {
console.log(err.message);
reject(err);
} else {
db.run(`UPDATE soutiens SET message = ? WHERE guildID = ?`, [JSON.stringify(messagesSoutien), guildID], function(err) {
if (err) {
console.log(err.message);
reject(err);
} else {
resolve();
}
});
}
});
});
let soutienData = await new Promise((resolve, reject) => {
db.get(`SELECT * FROM soutiens WHERE guildID = ?`, [guildID], (err, row) => {
if (err) {
console.log(err.message);
reject(err);
} else {
resolve(row ? row : {});
}
});
});
const role = message.guild.roles.cache.get(soutienData.roleID);
const roleValue = role ? `<@&${role.id}>` : "Rôle non trouvé";
const messagesArray = JSON.parse(soutienData.message);
const messagesSoutien2 = messagesArray.join(', ');
const updatedEmbed = new EmbedBuilder()
.setTitle('Configuration Soutien')
.addFields(
{ name: '✅ Status', value: soutienData.status === "on" ? "✅" : "❌", inline: true },
{ name: '📍 Rôle', value: roleValue, inline: true },
{ name: '📝 Message', value: messagesSoutien2 || 'Non défini', inline: true },
{ name: '🔧 Paramètre', value: soutienData.parametre === 'inclus' || !soutienData.parametre ?'Inclus dans la status': "Ne contien que le status", inline: true }
)
.setColor('#0099ff');
await i.update({ embeds: [updatedEmbed], components: [rowactionrow] });
} else {
await i.reply(`Le statut "${statusToDelete}" n'a pas été trouvé.`);
}
});
collector.on('end', collected => {
if (collected.size === 0) {
message.reply('Vous n\'avez pas fourni de statut à supprimer.');
}
});
} else if (i.values[0] === 'inclusstatus') {
await updateStatusType(guildID, 'inclus'); await updateStatusType(guildID, 'inclus');
let soutienData = await new Promise((resolve, reject) => { let soutienData = await new Promise((resolve, reject) => {
db.get(`SELECT * FROM soutiens WHERE guildID = ?`, [guildID], (err, row) => { db.get(`SELECT * FROM soutiens WHERE guildID = ?`, [guildID], (err, row) => {
@@ -222,11 +339,12 @@ const row = new ActionRowBuilder().addComponents(select1);
}); });
}); });
const role = message.guild.roles.cache.get(soutienData.roleID); const role = message.guild.roles.cache.get(soutienData.roleID);
const roleValue = role ? role : "Rôle non trouvé"; const roleValue = role ? `<@&${role.id}>` : "Rôle non trouvé";
const messagesSoutien = Array.isArray(soutienData.messageSoutien) ? soutienData.messageSoutien.join(', ') : soutienData.messageSoutien; const messagesArray = JSON.parse(soutienData.message);
const messagesSoutien = messagesArray.join(', ');
const updatedEmbed = new EmbedBuilder() const updatedEmbed = new EmbedBuilder()
.setTitle('Soutien mis à jour') .setTitle('Configuration Soutien')
.addFields( .addFields(
{ name: '✅ Status', value: soutienData.status === "on" ? "✅" : "❌", inline: true }, { name: '✅ Status', value: soutienData.status === "on" ? "✅" : "❌", inline: true },
{ name: '📍 Rôle', value: roleValue, inline: true }, { name: '📍 Rôle', value: roleValue, inline: true },
@@ -234,7 +352,7 @@ const row = new ActionRowBuilder().addComponents(select1);
{ name: '🔧 Paramètre', value: soutienData.parametre === 'inclus' || !soutienData.parametre ?'Inclus dans la status': "Ne contien que le status", inline: true } { name: '🔧 Paramètre', value: soutienData.parametre === 'inclus' || !soutienData.parametre ?'Inclus dans la status': "Ne contien que le status", inline: true }
) )
.setColor('#0099ff'); .setColor('#0099ff');
await i.update({ embeds: [updatedEmbed], components: [row] }); await i.update({ embeds: [updatedEmbed], components: [rowactionrow] });
} else if (i.values[0] === 'fixstatus') { } else if (i.values[0] === 'fixstatus') {
await updateStatusType(guildID, 'fix'); await updateStatusType(guildID, 'fix');
let soutienData = await new Promise((resolve, reject) => { let soutienData = await new Promise((resolve, reject) => {
@@ -248,11 +366,12 @@ const row = new ActionRowBuilder().addComponents(select1);
}); });
}); });
const role = message.guild.roles.cache.get(soutienData.roleID); const role = message.guild.roles.cache.get(soutienData.roleID);
const roleValue = role ? role : "Rôle non trouvé"; const roleValue = role ? `<@&${role.id}>` : "Rôle non trouvé";
const messagesSoutien = Array.isArray(soutienData.messageSoutien) ? soutienData.messageSoutien.join(', ') : soutienData.messageSoutien; const messagesArray = JSON.parse(soutienData.message);
const messagesSoutien = messagesArray.join(', ');
const updatedEmbed = new EmbedBuilder() const updatedEmbed = new EmbedBuilder()
.setTitle('Soutien mis à jour') .setTitle('Configuration Soutien')
.addFields( .addFields(
{ name: '✅ Status', value: soutienData.status === "on" ? "✅" : "❌", inline: true }, { name: '✅ Status', value: soutienData.status === "on" ? "✅" : "❌", inline: true },
{ name: '📍 Rôle', value: roleValue, inline: true }, { name: '📍 Rôle', value: roleValue, inline: true },
@@ -260,7 +379,7 @@ const row = new ActionRowBuilder().addComponents(select1);
{ name: '🔧 Paramètre', value: soutienData.parametre === 'inclus' || !soutienData.parametre ?'Inclus dans la status': "Ne contien que le status", inline: true } { name: '🔧 Paramètre', value: soutienData.parametre === 'inclus' || !soutienData.parametre ?'Inclus dans la status': "Ne contien que le status", inline: true }
) )
.setColor('#0099ff'); .setColor('#0099ff');
await i.update({ embeds: [updatedEmbed], components: [row] }); await i.update({ embeds: [updatedEmbed], components: [rowactionrow] });
} }
}); });
@@ -271,12 +390,19 @@ const row = new ActionRowBuilder().addComponents(select1);
}; };
async function updateStatusType(guildID, statusType) { async function updateStatusType(guildID, statusType) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
db.run(`INSERT OR REPLACE INTO soutiens (guildID, parametre) VALUES (?, ?)`, [guildID, statusType], function(err) { db.run(`INSERT OR IGNORE INTO soutiens (guildID) VALUES (?)`, [guildID], function(err) {
if (err) { if (err) {
console.error(err.message); console.error(err.message);
reject(err); reject(err);
} else { } else {
resolve(); db.run(`UPDATE soutiens SET parametre = ? WHERE guildID = ?`, [statusType, guildID], function(err) {
if (err) {
console.error(err.message);
reject(err);
} else {
resolve();
}
});
} }
}); });
}); });
+41 -36
View File
@@ -186,18 +186,6 @@ module.exports = {
return message.reply({ embeds: [embed_command] }); return message.reply({ embeds: [embed_command] });
} }
const categories = {
antiraid: [],
botcontrol: [],
moderation: [],
buyer: [],
game: [],
gestion: [],
utils: [],
invitation: [],
other: [],
};
const categoryEmojis = { const categoryEmojis = {
antiraid: '🛡️', antiraid: '🛡️',
botcontrol: '🛠️', botcontrol: '🛠️',
@@ -209,39 +197,56 @@ module.exports = {
invitation: '📩', invitation: '📩',
other: '❓', other: '❓',
}; };
let liste = [];
let categories = {
antiraid: [],
botcontrol: [],
moderation: [],
buyer: [],
game: [],
gestion: [],
utils: [],
invitation: [],
other: [],
};
let liste = []; for (const command of client.commands.values()) {
for (const command of client.commands.values()) {
const existingCommand = liste.find(cmd => cmd.name === command.name); const existingCommand = liste.find(cmd => cmd.name === command.name);
if (!existingCommand) { if (!existingCommand) {
liste.push(command); liste.push(command);
} }
} }
for (const command of liste) {
for (const command of liste) {
if (command.category && categories[command.category]) { if (command.category && categories[command.category]) {
categories[command.category].push({ name: command.name, description: command.description, emote: command.emote, utilisation: command.utilisation}); categories[command.category].push(command);
} else { } else {
categories['other'].push({ name: command.name, description: command.description, emote: command.emote, utilisation: command.utilisation}); categories['other'].push(command);
} }
} }
let totalCommands = liste.length let totalCommands = liste.length;
let description = `Sélectionnez une catégorie parmi les options ci-dessous pour obtenir de l'aide sur les commandes correspondantes.\n Il y a ${totalCommands} commandes disponibles\n\n`;
for (const [category, commands] of Object.entries(categories)) { let commandCounts = {};
description += `**Catégorie ${category}** (${commands.length})\n`; for (const [category, commands] of Object.entries(categories)) {
description += commands.length > 0 ? '> ' + commands.map(command => `\`${command.name}\``).join(', ') : '> Aucune commande dans cette catégorie'; commandCounts[category] = commands.length;
description += '\n\n'; }
}
const embeds = { const embeds = {
home: new EmbedBuilder() home: new EmbedBuilder()
.setColor('#0099ff') .setColor('#0099ff')
.setTitle('📚 Information') .setTitle('📚 Information')
.setDescription(description) .setDescription(`Sélectionnez une catégorie parmi les options ci-dessous pour obtenir de l'aide sur les commandes correspondantes.Il y a ${totalCommands} commandes disponibles`)
.setThumbnail(message.guild.iconURL()) .setThumbnail(message.guild.iconURL())
.setTimestamp() .setTimestamp()
.setFooter({text: `${client.user.tag} © 2024`, iconURL: client.user.displayAvatarURL({dynamic: true})}) .setFooter({text: `By Valou336 and tuturp33`, iconURL: client.user.displayAvatarURL({dynamic: true})})
}; };
let categoriesString = '';
for (const [category, emoji] of Object.entries(categoryEmojis)) {
categoriesString += `${emoji} ${category.charAt(0).toUpperCase() + category.slice(1)}: ${commandCounts[category]} \n`;
}
embeds.home.addFields({name: ' ', value: `\`\`\`${categoriesString}\`\`\``});
for (const [category, commands] of Object.entries(categories)) { for (const [category, commands] of Object.entries(categories)) {
let description; let description;
@@ -263,7 +268,7 @@ module.exports = {
.setCustomId('help_menu') .setCustomId('help_menu')
.setPlaceholder('Sélectionnez une catégorie') .setPlaceholder('Sélectionnez une catégorie')
.addOptions([ .addOptions([
{ label: 'Accueil', value: 'home' }, { label: '🏠 Accueil', value: 'home' },
...Object.keys(categories).map(category => ({ label: `${categoryEmojis[category]} ${category}`, value: category })), ...Object.keys(categories).map(category => ({ label: `${categoryEmojis[category]} ${category}`, value: category })),
]); ]);
+31 -13
View File
@@ -13,20 +13,38 @@ module.exports = {
if (row) { if (row) {
const status = row.status; const status = row.status;
if (status === 'on'){ if (status === 'on'){
const roleSoutien = row.roleID; const parameter = row.parametre;
const messageSoutien = row.message; const roleSoutien = row.roleID;
const messageSoutien = row.message;
let messagesSoutien = Array.isArray(messageSoutien) ? messageSoutien : JSON.parse(messageSoutien);
const role = newPresence.guild.roles.cache.find(role => role.id === roleSoutien);
const hasRole = newPresence.member.roles.cache.has(roleSoutien);
if (newPresence.activities[0].state.includes(messageSoutien)) { if (parameter === 'inclus') {
const role = newPresence.guild.roles.cache.find(role => role.id === roleSoutien); const isStatusMatched = messagesSoutien.some(message => newPresence.activities[0].state.includes(message));
if (role) { if (isStatusMatched && !hasRole) {
newPresence.member.roles.add(role); newPresence.member.roles.add(role);
} } else if (!isStatusMatched && hasRole) {
} else if (!newPresence.activities[0].state.includes(messageSoutien)) { newPresence.member.roles.remove(role);
const role = newPresence.guild.roles.cache.find(role => role.id === roleSoutien); }
if (role) { } else if (parameter === 'fix') {
newPresence.member.roles.remove(role); const hasRole = newPresence.member.roles.cache.has(roleSoutien);
} const isStatusExactMatch = messagesSoutien.includes(newPresence.activities[0].state);
}
if (isStatusExactMatch && !hasRole) {
const role = newPresence.guild.roles.cache.find(role => role.id === roleSoutien);
//ajouter le rôle
if (role) {
newPresence.member.roles.add(role);
}
} else if (!isStatusExactMatch && hasRole) {
// Supprimer le rôle
const role = newPresence.guild.roles.cache.find(role => role.id === roleSoutien);
if (role) {
newPresence.member.roles.remove(role);
}
}
}
} }
} }
}); });