truc de soutien pas finie + bugé

This commit is contained in:
VALOU3336
2024-04-22 23:37:34 +02:00
parent 415f55638b
commit a9c8732f1f
3 changed files with 275 additions and 14 deletions
+268 -9
View File
@@ -1,3 +1,4 @@
const { EmbedBuilder , StringSelectMenuBuilder, StringSelectMenuOptionBuilder, ActionRowBuilder} = require('discord.js');
const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('myDatabase.db');
@@ -10,16 +11,274 @@ module.exports = {
category: 'gestion',
async execute(message, args) {
const guildID = message.member.guild.id;
const roleID = args[0].replace('<@&', '').replace('>', '');
const messageSoutien = args.slice(1).join(' ');
const guildID = message.guild.id;
db.run(`INSERT OR REPLACE INTO soutiens (guildID, roleID, message) VALUES (?, ?, ?)`, [guildID, roleID, messageSoutien], function(err) {
if (err) {
console.error(err.message);
return;
}
message.channel.send(`Le soutien a été mis à jour avec succès !`);
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 messagesSoutien = Array.isArray(soutienData.messageSoutien) ? soutienData.messageSoutien.join(', ') : soutienData.messageSoutien;
const embed = new EmbedBuilder()
.setTitle('Soutien mis à jour')
.addFields(
{ name: '✅ Status', value: soutienData.status === "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');
const select1 = new StringSelectMenuBuilder()
.setCustomId('soutieninteraction')
.addOptions(
new StringSelectMenuOptionBuilder()
.setLabel("Activer / Désactiver")
.setValue('onoroff'),
new StringSelectMenuOptionBuilder()
.setLabel("Modifié le role")
.setValue('role'),
new StringSelectMenuOptionBuilder()
.setLabel("Ajouté un status")
.setValue('addstatus'),
new StringSelectMenuOptionBuilder()
.setLabel("Supprimé un status")
.setValue('delstatus'),
new StringSelectMenuOptionBuilder()
.setLabel("Inclure le message dans le status")
.setValue('inclusstatus'),
new StringSelectMenuOptionBuilder()
.setLabel("Il n'y a que le message dans le status")
.setValue('fixstatus'),
);
const row = new ActionRowBuilder().addComponents(select1);
const sendmessage = await message.reply({ embeds: [embed], components: [row] });
const filter = i => i.customId === 'soutieninteraction' && i.user.id === message.author.id;
const collector = sendmessage.createMessageComponentCollector({ filter: filter, time: 120000 });
collector.on('collect', async i => {
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 : {});
}
});
});
if (i.values[0] === 'onoroff') {
let newStatus = currentSoutienData.status === "on" ? "off" : "on";
await new Promise((resolve, reject) => {
db.run(`INSERT OR REPLACE INTO soutiens (status, guildID) VALUES (?, ?)`, [newStatus, 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 : "Rôle non trouvé";
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.');
const filter = m => m.author.id === message.author.id;
const collector2 = message.channel.createMessageCollector({ filter: filter, max: 1, time: 60000 });
collector2.on('collect', async collected => {
const roleMention = collected.mentions.roles.first();
const roleID = roleMention ? roleMention.id : collected.content;
const role = message.guild.roles.cache.get(roleID);
if (!role) {
await i.followUp('L\'ID du rôle fourni n\'est pas valide. Veuillez réessayer.');
} else {
db.run(`INSERT OR REPLACE INTO soutiens (roleID, guildID) VALUES (?, ?)`, [roleID, guildID], async function(err) {
if (err) {
console.log(err.message);
} else {
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 : "Rôle non trouvé";
const messagesSoutien = Array.isArray(soutienData.messageSoutien) ? soutienData.messageSoutien.join(', ') : soutienData.messageSoutien;
const updatedEmbed = new EmbedBuilder()
.setTitle('Soutien mis à jour')
.addFields(
{ name: '✅ Status', value: soutienData.status === "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');
await i.update({ embeds: [updatedEmbed], components: [row] });
}
});
}
});
collector2.on('end', collected => {
if (collected.size === 0) {
message.reply('Vous n\'avez pas fourni de mention de rôle ou d\'ID.');
}
});
} else if (i.values[0] === 'addstatus') {
await message.reply('Veuillez fournir le nouveau statut à ajouter.');
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 newStatus = 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 = Array.isArray(currentSoutienData.message) ? currentSoutienData.message : [];
messagesSoutien.push(newStatus);
await new Promise((resolve, reject) => {
db.run(`INSERT OR REPLACE INTO soutiens (message, guildID) VALUES (?, ?)`, [JSON.stringify(messagesSoutien), guildID], function(err) {
if (err) {
console.log(err.message);
reject(err);
} else {
resolve();
}
});
});
});
collector.on('end', collected => {
if (collected.size === 0) {
message.reply('Vous n\'avez pas fourni de nouveau statut.');
}
});
}
else if (i.values[0] === 'delstatus') {
} else if (i.values[0] === 'inclusstatus') {
await updateStatusType(guildID, 'inclus');
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 : "Rôle non trouvé";
const messagesSoutien = Array.isArray(soutienData.messageSoutien) ? soutienData.messageSoutien.join(', ') : soutienData.messageSoutien;
const updatedEmbed = new EmbedBuilder()
.setTitle('Soutien mis à jour')
.addFields(
{ name: '✅ Status', value: soutienData.status === "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');
await i.update({ embeds: [updatedEmbed], components: [row] });
} else if (i.values[0] === 'fixstatus') {
await updateStatusType(guildID, 'fix');
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 : "Rôle non trouvé";
const messagesSoutien = Array.isArray(soutienData.messageSoutien) ? soutienData.messageSoutien.join(', ') : soutienData.messageSoutien;
const updatedEmbed = new EmbedBuilder()
.setTitle('Soutien mis à jour')
.addFields(
{ name: '✅ Status', value: soutienData.status === "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');
await i.update({ embeds: [updatedEmbed], components: [row] });
}
});
collector.on('end', collected => {
});
},
};
async function updateStatusType(guildID, statusType) {
return new Promise((resolve, reject) => {
db.run(`INSERT OR REPLACE INTO soutiens (guildID, parametre) VALUES (?, ?)`, [guildID, statusType], function(err) {
if (err) {
console.error(err.message);
reject(err);
} else {
resolve();
}
});
});
}
+3 -1
View File
@@ -4,7 +4,6 @@ const db = new sqlite3.Database('myDatabase.db');
module.exports = {
name: Events.PresenceUpdate,
async execute(oldPresence, newPresence) {
db.get(`SELECT * FROM soutiens WHERE guildID = ?`, [newPresence.guild.id], (err, row) => {
if (err) {
@@ -12,6 +11,8 @@ module.exports = {
return;
}
if (row) {
const status = row.status;
if (status === 'on'){
const roleSoutien = row.roleID;
const messageSoutien = row.message;
@@ -27,6 +28,7 @@ module.exports = {
}
}
}
}
});
}
};
+4 -4
View File
@@ -36,13 +36,13 @@ module.exports = {
} else {
}
});
db.run('CREATE TABLE IF NOT EXISTS soutiens (guildID TEXT PRIMARY KEY, message TEXT, roleID TEXT)', (err) => {
db.run('CREATE TABLE IF NOT EXISTS soutiens (guildID TEXT PRIMARY KEY, message TEXT, roleID TEXT, status TEXT, parametre TEXT)', (err) => {
if (err) {
console.error(err.message);
reject(err);
console.error(err.message);
reject(err);
} else {
}
});
});
backupdb.run(`CREATE TABLE IF NOT EXISTS backups (
id INTEGER PRIMARY KEY AUTOINCREMENT,