finished update all comment with sqlite3

This commit is contained in:
VALOU3336
2024-03-01 21:06:34 +01:00
parent 4cf07f2d2c
commit 9fd591093d
11 changed files with 270 additions and 168 deletions
+100 -58
View File
@@ -1,6 +1,6 @@
const { ActionRowBuilder, EmbedBuilder, ButtonBuilder, ButtonStyle} = require('discord.js');
const db = require('quick.db');
const GestionDb = new db.table('gestion');
const { ActionRowBuilder, EmbedBuilder, ButtonBuilder, ButtonStyle } = require('discord.js');
const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('myDatabase.db');
module.exports = {
name: 'rolelimit',
@@ -13,8 +13,19 @@ module.exports = {
const botId = interaction.client.user.id;
const guildId = interaction.guild.id;
// Récupère les rôles limités
let limitedRoles = GestionDb.get(`${botId}.${guildId}.rolelimits`) || [];
let limitedRoles = await new Promise((resolve, reject) => {
db.get('SELECT value FROM gestion WHERE id = ?', [`${botId}.${guildId}.rolelimits`], (err, row) => {
if (err) {
console.error(err.message);
reject(err);
}
resolve(row ? JSON.parse(row.value) : []);
});
});
if (!Array.isArray(limitedRoles)) {
limitedRoles = [];
}
// Crée un embed avec les rôles limités
const embed = new EmbedBuilder()
@@ -22,6 +33,7 @@ module.exports = {
.setDescription(limitedRoles.map(role => `<@&${role.id}>: ${role.limit}`).join('\n') || 'Aucun rôle limité.')
.setColor('#0099ff');
// Crée les boutons
const addButton = new ButtonBuilder()
.setCustomId('rolelimit_add')
@@ -35,62 +47,92 @@ module.exports = {
.addComponents(addButton, removeButton);
const sentMessage = await interaction.reply({ embeds: [embed], components: [row], fetchReply: true });
const filter = i => i.isButton() && i.customId.startsWith('rolelimit_') && i.user;
const collector = sentMessage.createMessageComponentCollector({ filter: filter, time: 2 * 60 * 1000 + 30 * 1000 });
collector.on('collect', async (i) => {
if (i.customId === 'rolelimit_add') {
const questionMessage = await i.reply('Mentionnez un rôle ou fournissez un ID de rôle à limiter.');
const filter = m => m.author && m.author.id === i.user.id;
const collected = await i.channel.awaitMessages({ filter, max: 1, time: 60000000 });
const role = collected.first().mentions.roles.first() || interaction.guild.roles.cache.get(collected.first().content);
if (!role) {
return i.followUp('Rôle invalide.');
}
await i.followUp('Quelle est la limite pour ce rôle ?');
const limitCollected = await i.channel.awaitMessages({ filter, max: 1, time: 60000000 });
const limit = parseInt(limitCollected.first().content);
if (isNaN(limit)) {
return i.followUp('Limite invalide.');
}
const existingRole = limitedRoles.find(r => r.id === role.id);
if (existingRole) {
existingRole.limit = limit;
} else {
limitedRoles.push({ id: role.id, limit });
}
GestionDb.set(`${botId}.${guildId}.rolelimits`, limitedRoles);
await questionMessage.delete();
await collected.first().delete();
const updatedEmbed = new EmbedBuilder()
.setTitle('Rôles limités')
.setDescription(limitedRoles.map(role => `<@&${role.id}>: ${role.limit}`).join('\n') || 'Aucun rôle limité.')
.setColor('#0099ff');
sentMessage.edit({ embeds: [updatedEmbed] });
} else if (i.customId === 'rolelimit_remove') {
const questionMessage = await i.reply('Mentionnez un rôle ou fournissez un ID de rôle à supprimer.');
const filter = m => m.author && m.author.id === i.user.id;
const collected = await i.channel.awaitMessages({ filter, max: 1, time: 60000000 });
const roleToRemove = collected.first().mentions.roles.first() || interaction.guild.roles.cache.get(collected.first().content);
if (!roleToRemove) {
return i.followUp('Rôle invalide.');
}
limitedRoles = limitedRoles.filter(role => role.id !== roleToRemove.id);
GestionDb.set(`${botId}.${guildId}.rolelimits`, limitedRoles);
const updatedEmbed = new EmbedBuilder()
.setTitle('Rôles limités')
.setDescription(limitedRoles.map(role => `<@&${role.id}>: ${role.limit}`).join('\n') || 'Aucun rôle limité.')
.setColor('#0099ff');
await questionMessage.delete();
await collected.first().delete();
sentMessage.edit({ embeds: [updatedEmbed] });
}
});
const filter = i => i.isButton() && i.customId.startsWith('rolelimit_') && i.user;
const collector = sentMessage.createMessageComponentCollector({ filter: filter, time: 2 * 60 * 10000 + 30 * 10000 });
collector.on('collect', async (i) => {
if (i.customId === 'rolelimit_add') {
const questionMessage = await i.reply('Mentionnez un rôle ou fournissez un ID de rôle à limiter.');
const filter = m => m.author && m.author.id === i.user.id;
const collected = await i.channel.awaitMessages({ filter, max: 1, time: 60000 });
const role = collected.first().mentions.roles.first() || interaction.guild.roles.cache.get(collected.first().content);
if (!role) {
return i.followUp('Rôle invalide.');
}
const questionMessage2 = await i.followUp('Quelle est la limite pour ce rôle ?');
const limitCollected = await i.channel.awaitMessages({ filter, max: 1, time: 60000 });
const limit = parseInt(limitCollected.first().content);
if (isNaN(limit)) {
return i.followUp('Limite invalide.');
}
const existingRole = limitedRoles.find(r => r.id === role.id);
if (existingRole) {
existingRole.limit = limit;
} else {
limitedRoles.push({ id: role.id, limit });
}
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [`${botId}.${guildId}.rolelimits`, JSON.stringify(limitedRoles)], (err) => {
if (err) {
console.error(err.message);
} else {
db.get('SELECT value FROM gestion WHERE id = ?', [`${botId}.${guildId}.rolelimits`], (err, row) => {
if (err) {
console.error(err.message);
} else {
limitedRoles = row ? JSON.parse(row.value) : [];
const updatedEmbed = new EmbedBuilder()
.setTitle('Rôles limités')
.setDescription(limitedRoles.map(role => `<@&${role.id}>: ${role.limit}`).join('\n') || 'Aucun rôle limité.')
.setColor('#0099ff');
sentMessage.edit({ embeds: [updatedEmbed] });
try {
questionMessage.delete();
questionMessage2.delete();
collected.first().delete();
limitCollected.first().delete();
} catch (error) {
}
}
});
}
});
} else if (i.customId === 'rolelimit_remove') {
const questionMessage = await i.reply('Mentionnez un rôle ou fournissez un ID de rôle à supprimer.');
const filter = m => m.author && m.author.id === i.user.id;
const collected = await i.channel.awaitMessages({ filter, max: 1, time: 60000 });
const roleToRemove = collected.first().mentions.roles.first() || interaction.guild.roles.cache.get(collected.first().content);
if (!roleToRemove) {
return i.followUp('Rôle invalide.');
}
limitedRoles = limitedRoles.filter(role => role.id !== roleToRemove.id);
db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [`${botId}.${guildId}.rolelimits`, JSON.stringify(limitedRoles)], (err) => {
if (err) {
console.error(err.message);
} else {
db.get('SELECT value FROM gestion WHERE id = ?', [`${botId}.${guildId}.rolelimits`], (err, row) => {
if (err) {
console.error(err.message);
} else {
limitedRoles = row ? JSON.parse(row.value) : [];
const updatedEmbed = new EmbedBuilder()
.setTitle('Rôles limités')
.setDescription(limitedRoles.map(role => `<@&${role.id}>: ${role.limit}`).join('\n') || 'Aucun rôle limité.')
.setColor('#0099ff');
sentMessage.edit({ embeds: [updatedEmbed] });
questionMessage.delete();
collected.first().delete();
}
});
}
});
}
});
collector.on('end', collected => {
sentMessage.delete();
collected.forEach(i => i.message.delete());
sentMessage.edit({ components: [] });
});
},
};