From 9fd591093d47ec45e6896e2bf1e313695cafa690 Mon Sep 17 00:00:00 2001 From: VALOU3336 Date: Fri, 1 Mar 2024 21:06:34 +0100 Subject: [PATCH] finished update all comment with sqlite3 --- commands/antiraid/rolelimit.js | 158 +++++++++++++++++++------------ commands/gestion/greetlist.js | 31 +++--- commands/owner/clearwl.js | 15 ++- commands/utils/prevname.js | 30 ++++-- commands/utils/weather.js | 57 ++++++----- events/client/ready.js | 16 +++- events/gestion/buttongestion.js | 40 +++++--- events/gestion/guildMemberAdd.js | 23 ++++- events/gestion/prevname.js | 30 ++++-- package-lock.json | 34 ++----- package.json | 4 +- 11 files changed, 270 insertions(+), 168 deletions(-) diff --git a/commands/antiraid/rolelimit.js b/commands/antiraid/rolelimit.js index 89bb7e8..3a3e773 100644 --- a/commands/antiraid/rolelimit.js +++ b/commands/antiraid/rolelimit.js @@ -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: [] }); }); }, }; \ No newline at end of file diff --git a/commands/gestion/greetlist.js b/commands/gestion/greetlist.js index e0ca31f..fe8a62d 100644 --- a/commands/gestion/greetlist.js +++ b/commands/gestion/greetlist.js @@ -1,6 +1,6 @@ -const { EmbedBuilder, ButtonBuilder , ActionRowBuilder, ButtonStyle } = require('discord.js'); -const db = require('quick.db'); -const GestionDb = new db.table('gestion'); +const { EmbedBuilder, ButtonBuilder, ActionRowBuilder, ButtonStyle } = require('discord.js'); +const sqlite3 = require('sqlite3').verbose(); +const db = new sqlite3.Database('myDatabase.db'); module.exports = { name: 'greetlist', @@ -13,9 +13,18 @@ module.exports = { async execute(message) { const botId = message.client.user.id; const guildId = message.guild.id; - const guildGreetings = GestionDb.get(`${botId}.${guildId}.greetings`) || []; - if (guildGreetings.length === 0) { + let guildGreetings = await new Promise((resolve, reject) => { + db.get('SELECT value FROM gestion WHERE id = ?', [`${botId}.${guildId}.greetings`], (err, row) => { + if (err) { + console.error(err.message); + reject(err); + } + resolve(row ? JSON.parse(row.value) : []); + }); + }); + + if (guildGreetings.length === 0) { const embed = new EmbedBuilder() .setTitle('Aucun salon avec un salutation') .setDescription('Il n\'y a aucun salon avec un salutation pour ce serveur.') @@ -27,15 +36,15 @@ module.exports = { .setTitle(`Salons avec un greet ${guildGreetings.length}/5`) .setDescription(`${greetingChannels}`) .setColor('#0099ff'); - const greet = new ButtonBuilder() + const greet = new ButtonBuilder() .setCustomId(`greet_${guildId}`) .setLabel('↪️ greet') - .setStyle(ButtonStyle.Primary) + .setStyle(ButtonStyle.Primary); const row = new ActionRowBuilder() .addComponents(greet); - const sentMessage = await message.channel.send({ embeds: [embed], components: [row] }); + const sentMessage = await message.channel.send({ embeds: [embed], components: [row] }); const greetfilter = i => i.customId.startsWith('greet_') && i.user.id === message.author.id; - const collector = sentMessage.createMessageComponentCollector({ filter: greetfilter, time: 15000 }); + const collector = sentMessage.createMessageComponentCollector({ filter: greetfilter, time: 15000 }); collector.on('collect', async (interaction) => { const member = interaction.member; const guild = interaction.guild; @@ -44,11 +53,11 @@ module.exports = { for (const greeting of guildGreetings) { try { const channel = await guild.channels.fetch(greeting.channelId); - if (channel && channel.type === 0) { + if (channel && channel.type === 0) { messagePromises.push( channel.send(welcomeMessage) .then(message => { - setTimeout(() => message.delete(), 1000); + setTimeout(() => message.delete(), 1000); }) ); } diff --git a/commands/owner/clearwl.js b/commands/owner/clearwl.js index 65765bc..5137f36 100644 --- a/commands/owner/clearwl.js +++ b/commands/owner/clearwl.js @@ -1,6 +1,5 @@ -const { MessageEmbed } = require('discord.js'); -const db = require('quick.db'); -const GestionDb = new db.table("gestion"); +const sqlite3 = require('sqlite3').verbose(); +const db = new sqlite3.Database('myDatabase.db'); module.exports = { name: 'clearwl', @@ -13,8 +12,14 @@ module.exports = { async execute(message, args, client) { const botId = message.client.user.id; const guildId = message.guild.id; - GestionDb.set(`${botId}.${guildId}.whitelist`, {}); - console.log("whitelist renouveler") + db.run('INSERT OR REPLACE INTO gestion (id, value) VALUES (?, ?)', [botId, JSON.stringify({ whitelist: {} })], (err) => { + if (err) { + console.error(err.message); + reject(err); + } else { + resolve({ message: 'La liste blanche a été effacée.' }); + } + }); message.reply("Toutes la whitelist a etait supprimer") }, }; \ No newline at end of file diff --git a/commands/utils/prevname.js b/commands/utils/prevname.js index 58359e8..9a9ac63 100644 --- a/commands/utils/prevname.js +++ b/commands/utils/prevname.js @@ -1,6 +1,7 @@ const { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder } = require('discord.js'); -const db = require('quick.db'); -const PrevnameDb = new db.table("prevname"); +const sqlite3 = require('sqlite3').verbose(); +const db = new sqlite3.Database('myDatabase.db'); + module.exports = { name: 'prevname', description: 'Affiche tous les pseudos précédents et permet de les supprimer', @@ -9,25 +10,34 @@ module.exports = { utilisation: 'prevname', async execute(message, args) { const userId = message.author.id; - const nameChanges = PrevnameDb.get(`${userId}.nameChanges`) || []; + + let nameChanges = await new Promise((resolve, reject) => { + db.get('SELECT value FROM prevname WHERE id = ?', [userId], (err, row) => { + if (err) { + console.error(err.message); + reject(err); + } + resolve(row ? JSON.parse(row.value) : []); + }); + }); let description = 'Vous n\'avez pas de pseudos précédents enregistrés.'; - if (nameChanges.length > 0) { - description = nameChanges.map((change, index) => `${index + 1}. ${change.newName} - `).join('\n'); + if (nameChanges.length > 0) { + description = nameChanges.map((change, index) => `${index + 1}. ${change.newName} - `).join('\n'); } const embed = new EmbedBuilder() - .setTitle('Pseudos précédents') - .setDescription(description) - .setColor('#0099ff'); + .setTitle('Pseudos précédents') + .setDescription(description) + .setColor('#0099ff'); const deleteButton = new ButtonBuilder() .setCustomId(`deleteprevnames_${message.author.id}`) .setEmoji('🗑️') - .setStyle(ButtonStyle.Secondary) + .setStyle(ButtonStyle.Secondary); const row = new ActionRowBuilder() .addComponents(deleteButton); await message.reply({ embeds: [embed], components: [row] }); }, -}; +}; \ No newline at end of file diff --git a/commands/utils/weather.js b/commands/utils/weather.js index 2b062d6..8aa7f4d 100644 --- a/commands/utils/weather.js +++ b/commands/utils/weather.js @@ -1,12 +1,6 @@ -const Weather = require('weather'); -const { EmbedBuilder } = require('discord.js'); -const appID = ''; -const appCode = ''; +const Discord = require('discord.js'); +const axios = require('axios'); -const weather = new Weather({ - appID, - appCode -}); module.exports = { name: 'weather', description: 'Affiche les informations météorologiques d\'une ville', @@ -14,27 +8,32 @@ module.exports = { emote: '☀️', utilisation: 'weather [ville]', async execute(message, args) { - if (args.length < 2) { - return message.channel.send('Veuillez fournir une ville et un pays.'); + try { + const APIKEY = '1e59407044fd6d842180610a8c423aa4'; + const city = args[0]; + + if (!city) { + return message.channel.send('Veuillez fournir une ville.'); + } + + const response = await axios.get(`https://api.openweathermap.org/data/2.5/weather?q=${encodeURIComponent(city)}&appid=${APIKEY}&units=metric`); + const weatherData = response.data; + + const cityName = weatherData.name; + const temperature = weatherData.main.temp; + const weatherDescription = weatherData.weather[0].description; + + const Embed = new Discord.MessageEmbed() + .setTitle(`Meteo à ${cityName}`) + .setDescription(`🌡・Temperature: ${temperature}°C\n⛅・Temps: ${weatherDescription}`) + .setTimestamp() + .setColor('RANDOM') // Discord.js uses 'RANDOM' for random colors + .setFooter({text: message.client.user.username, iconURL: message.client.user.displayAvatarURL({dynamic: true})}); + + await message.channel.send({ embeds: [Embed] }); + } catch(e) { + console.error(e); + await message.channel.send(`Je n'ai pas trouvé la ville ${city}!`); } - - const city = args[0]; - const country = args[1]; - - const weatherData = await weather.now(`${city}, ${country}`).then((results) => { - console.log(results); - }); - const embed = new EmbedBuilder() - .setTitle(`🌤️ Météo pour ${weatherData.location.name}`) - .setDescription(`Température: ${weatherData.current.temperature}°C`) - .addFields( - { name: '🌦️ Conditions', value: weatherData.current.skytext, inline: true }, - { name: '💨 Vent', value: weatherData.current.winddisplay, inline: true }, - { name: '💧 Humidité', value: weatherData.current.humidity, inline: true } - ) - .setFooter('Informations météorologiques fournies par Weather.com'); - - - message.channel.send({ embeds: [embed] }); }, }; \ No newline at end of file diff --git a/events/client/ready.js b/events/client/ready.js index 73ff984..d7dfbcc 100644 --- a/events/client/ready.js +++ b/events/client/ready.js @@ -17,11 +17,21 @@ module.exports = { db.serialize(() => { db.run('CREATE TABLE IF NOT EXISTS gestion (id TEXT PRIMARY KEY, value TEXT)', (err) => { if (err) { - console.error(err.message); - reject(err); + console.error(err.message); + reject(err); } else { + console.log('Table gestion created or already exists.'); } - }); + }); + + db.run('CREATE TABLE IF NOT EXISTS prevname (id TEXT PRIMARY KEY, value TEXT)', (err) => { + if (err) { + console.error(err.message); + reject(err); + } else { + console.log('Table prevname created or already exists.'); + } + }); db.get('SELECT value FROM gestion WHERE id = ?', [client.user.id], (err, row) => { if (err) { diff --git a/events/gestion/buttongestion.js b/events/gestion/buttongestion.js index 330b6b0..bac0c0a 100644 --- a/events/gestion/buttongestion.js +++ b/events/gestion/buttongestion.js @@ -1,6 +1,4 @@ const {Events , ModalBuilder, TextInputStyle, ActionRowBuilder, TextInputBuilder , EmbedBuilder} = require("discord.js") -const db = require('quick.db'); -const PrevnameDb = new db.table("prevname"); const sqlite3 = require('sqlite3').verbose(); const db2 = new sqlite3.Database('myDatabase.db'); module.exports = { @@ -26,17 +24,33 @@ module.exports = { await interaction.message.delete(); } else if (interaction.customId.startsWith('deleteprevnames_')) { const userId = interaction.customId.split('_')[1]; - if (interaction.user.id !== userId) { - await interaction.reply({ content: "vous n'avez pas la permission de suprimer cette suggestion.", ephemeral: true }); - return; - } - if (!PrevnameDb.has(userId)) { - await interaction.reply({ content: "Vous n'avez aucun prevname à supprimer.", ephemeral: true }); - return; - } - - await PrevnameDb.delete(userId) - await interaction.reply({ content: "Vos prevname on etait correctement supprimer.", ephemeral: true }); + if (interaction.user.id !== userId) { + await interaction.reply({ content: "vous n'avez pas la permission de supprimer cette suggestion.", ephemeral: true }); + return; + } + + let hasPrevname = await new Promise((resolve, reject) => { + db2.get('SELECT value FROM prevname WHERE id = ?', [userId], (err, row) => { + if (err) { + console.error(err.message); + reject(err); + } + resolve(row !== undefined); + }); + }); + + if (!hasPrevname) { + await interaction.reply({ content: "Vous n'avez aucun prevname à supprimer.", ephemeral: true }); + return; + } + + db2.run('DELETE FROM prevname WHERE id = ?', [userId], (err) => { + if (err) { + console.error(err.message); + } else { + interaction.reply({ content: "Vos prevname ont été correctement supprimés.", ephemeral: true }); + } + }); } else if (interaction.customId.startsWith('addconfession_')) { let data = await new Promise((resolve, reject) => { diff --git a/events/gestion/guildMemberAdd.js b/events/gestion/guildMemberAdd.js index a0abf3d..d055a54 100644 --- a/events/gestion/guildMemberAdd.js +++ b/events/gestion/guildMemberAdd.js @@ -1,5 +1,5 @@ -const db = require('quick.db'); -const GestionDb = new db.table('gestion'); +const { QuickDB } = require("quick.db"); +const db = new QuickDB() const sqlite3 = require('sqlite3').verbose(); const db2 = new sqlite3.Database('myDatabase.db'); const {Events} = require("discord.js") @@ -32,9 +32,22 @@ module.exports = { }); return; } - const limitedRoles = GestionDb.get(`${botId}.${guildId}.rolelimits`) || []; + let limitedRoles = await new Promise((resolve, reject) => { + db2.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 = []; + } + const addedRoles = newMember.roles.cache.filter(role => !oldMember.roles.cache.has(role.id)); - + addedRoles.forEach(async role => { const limitedRole = limitedRoles.find(r => r.id === role.id); if (limitedRole) { @@ -54,6 +67,6 @@ module.exports = { } } } - }); + }); }, }; \ No newline at end of file diff --git a/events/gestion/prevname.js b/events/gestion/prevname.js index 1d1569c..baf80e3 100644 --- a/events/gestion/prevname.js +++ b/events/gestion/prevname.js @@ -1,20 +1,34 @@ const { Events } = require("discord.js"); -const db = require('quick.db'); -const PrevnameDb = new db.table("prevname"); +const sqlite3 = require('sqlite3').verbose(); +const db = new sqlite3.Database('myDatabase.db'); + module.exports = { - name: Events.GuildMemberUpdate, - async execute(oldMember, newMember) { + name: Events.GuildMemberUpdate, + async execute(oldMember, newMember) { if (oldMember.displayName !== newMember.displayName) { let changeData = { oldName: oldMember.displayName, newName: newMember.displayName, - changeDate: Math.floor(Date.now() / 1000) + changeDate: Math.floor(Date.now() / 1000) }; - let nameChanges = PrevnameDb.get(`${newMember.id}.nameChanges`) || []; + + let nameChanges = await new Promise((resolve, reject) => { + db.get('SELECT value FROM prevname WHERE id = ?', [newMember.id], (err, row) => { + if (err) { + console.error(err.message); + reject(err); + } + resolve(row ? JSON.parse(row.value) : []); + }); + }); nameChanges.push(changeData); - PrevnameDb.set(`${newMember.id}.nameChanges`, nameChanges); + db.run('INSERT OR REPLACE INTO prevname (id, value) VALUES (?, ?)', [newMember.id, JSON.stringify(nameChanges)], (err) => { + if (err) { + console.error(err.message); + } + }); } - }, + }, }; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index e31bf32..2ece768 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@m3rcena/weky": "^4.3.1", "axios": "^1.6.7", + "better-sqlite3": "^9.4.3", "color-name-list": "^10.19.0", "discord-gamecord": "^4.4.1", "discord-giveaway": "^1.1.5", @@ -23,8 +24,7 @@ "mal-scraper": "^2.13.1", "md5": "^2.3.0", "ms": "^2.1.3", - "quick.db": "^7.1.3", - "sqlite": "^5.1.1", + "quick.db": "^9.1.7", "sqlite3": "^5.1.7", "to-zalgo": "^1.0.1", "weather": "^1.0.4" @@ -213,14 +213,6 @@ "url": "https://opencollective.com/node-fetch" } }, - "node_modules/@m3rcena/weky/node_modules/quick.db": { - "version": "9.1.7", - "resolved": "https://registry.npmjs.org/quick.db/-/quick.db-9.1.7.tgz", - "integrity": "sha512-ZLPVLVFZtvFRLHqIK99iyrLDUznOTpnp5tB+QpGErT+reDSvgBELuVsMkGSSiqKT9R2YSOhO+096Wb0xTaOHMA==", - "dependencies": { - "lodash": "^4.17.21" - } - }, "node_modules/@m3rcena/weky/node_modules/string-width": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", @@ -488,13 +480,13 @@ ] }, "node_modules/better-sqlite3": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.6.2.tgz", - "integrity": "sha512-S5zIU1Hink2AH4xPsN0W43T1/AJ5jrPh7Oy07ocuW/AKYYY02GWzz9NH0nbSMn/gw6fDZ5jZ1QsHt1BXAwJ6Lg==", + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-9.4.3.tgz", + "integrity": "sha512-ud0bTmD9O3uWJGuXDltyj3R47Nz0OHX8iqPOT5PMspGqlu/qQFn+5S2eFBUCrySpavTjFXbi4EgrfVvPAHlImw==", "hasInstallScript": true, "dependencies": { "bindings": "^1.5.0", - "prebuild-install": "^7.1.0" + "prebuild-install": "^7.1.1" } }, "node_modules/bindings": { @@ -2567,12 +2559,11 @@ } }, "node_modules/quick.db": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/quick.db/-/quick.db-7.1.3.tgz", - "integrity": "sha512-0S1fVb9OAZGhkI4ZIc5Oe4yWMwhz20xSsziwd6+yGWKKMsPt+XOfj/gD5CesGxd2WdqBkZFBiP8ZqWDu55HLHA==", + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/quick.db/-/quick.db-9.1.7.tgz", + "integrity": "sha512-ZLPVLVFZtvFRLHqIK99iyrLDUznOTpnp5tB+QpGErT+reDSvgBELuVsMkGSSiqKT9R2YSOhO+096Wb0xTaOHMA==", "dependencies": { - "better-sqlite3": "^7.1.1", - "lodash": "^4.17.20" + "lodash": "^4.17.21" } }, "node_modules/randombytes": { @@ -2865,11 +2856,6 @@ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "optional": true }, - "node_modules/sqlite": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/sqlite/-/sqlite-5.1.1.tgz", - "integrity": "sha512-oBkezXa2hnkfuJwUo44Hl9hS3er+YFtueifoajrgidvqsJRQFpc5fKoAkAor1O5ZnLoa28GBScfHXs8j0K358Q==" - }, "node_modules/sqlite3": { "version": "5.1.7", "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.7.tgz", diff --git a/package.json b/package.json index a1f7113..7db7f29 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "dependencies": { "@m3rcena/weky": "^4.3.1", "axios": "^1.6.7", + "better-sqlite3": "^9.4.3", "color-name-list": "^10.19.0", "discord-gamecord": "^4.4.1", "discord-giveaway": "^1.1.5", @@ -31,8 +32,7 @@ "mal-scraper": "^2.13.1", "md5": "^2.3.0", "ms": "^2.1.3", - "quick.db": "^7.1.3", - "sqlite": "^5.1.1", + "quick.db": "^9.1.7", "sqlite3": "^5.1.7", "to-zalgo": "^1.0.1", "weather": "^1.0.4"