mirror of
https://github.com/arthur-pbty/gestion.git
synced 2026-06-12 15:56:25 +02:00
truc de soutien pas finie + bugé
This commit is contained in:
+268
-9
@@ -1,3 +1,4 @@
|
|||||||
|
const { EmbedBuilder , StringSelectMenuBuilder, StringSelectMenuOptionBuilder, ActionRowBuilder} = require('discord.js');
|
||||||
const sqlite3 = require('sqlite3').verbose();
|
const sqlite3 = require('sqlite3').verbose();
|
||||||
const db = new sqlite3.Database('myDatabase.db');
|
const db = new sqlite3.Database('myDatabase.db');
|
||||||
|
|
||||||
@@ -10,16 +11,274 @@ module.exports = {
|
|||||||
category: 'gestion',
|
category: 'gestion',
|
||||||
|
|
||||||
async execute(message, args) {
|
async execute(message, args) {
|
||||||
const guildID = message.member.guild.id;
|
const guildID = message.guild.id;
|
||||||
const roleID = args[0].replace('<@&', '').replace('>', '');
|
|
||||||
const messageSoutien = args.slice(1).join(' ');
|
|
||||||
|
|
||||||
db.run(`INSERT OR REPLACE INTO soutiens (guildID, roleID, message) VALUES (?, ?, ?)`, [guildID, roleID, messageSoutien], function(err) {
|
let soutienData = await new Promise((resolve, reject) => {
|
||||||
if (err) {
|
db.get(`SELECT * FROM soutiens WHERE guildID = ?`, [guildID], (err, row) => {
|
||||||
console.error(err.message);
|
if (err) {
|
||||||
return;
|
console.log(err.message);
|
||||||
}
|
reject(err);
|
||||||
message.channel.send(`Le soutien a été mis à jour avec succès !`);
|
} 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();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@@ -4,7 +4,6 @@ const db = new sqlite3.Database('myDatabase.db');
|
|||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: Events.PresenceUpdate,
|
name: Events.PresenceUpdate,
|
||||||
|
|
||||||
async execute(oldPresence, newPresence) {
|
async execute(oldPresence, newPresence) {
|
||||||
db.get(`SELECT * FROM soutiens WHERE guildID = ?`, [newPresence.guild.id], (err, row) => {
|
db.get(`SELECT * FROM soutiens WHERE guildID = ?`, [newPresence.guild.id], (err, row) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
@@ -12,6 +11,8 @@ module.exports = {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (row) {
|
if (row) {
|
||||||
|
const status = row.status;
|
||||||
|
if (status === 'on'){
|
||||||
const roleSoutien = row.roleID;
|
const roleSoutien = row.roleID;
|
||||||
const messageSoutien = row.message;
|
const messageSoutien = row.message;
|
||||||
|
|
||||||
@@ -27,6 +28,7 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -36,13 +36,13 @@ module.exports = {
|
|||||||
} else {
|
} 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) {
|
if (err) {
|
||||||
console.error(err.message);
|
console.error(err.message);
|
||||||
reject(err);
|
reject(err);
|
||||||
} else {
|
} else {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
backupdb.run(`CREATE TABLE IF NOT EXISTS backups (
|
backupdb.run(`CREATE TABLE IF NOT EXISTS backups (
|
||||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
|||||||
Reference in New Issue
Block a user