const sqlite3 = require('sqlite3').verbose(); const db = new sqlite3.Database('myDatabase.db'); module.exports = { name: 'unmarry', description: 'Dissoudre un mariage', emote: '💍', category: 'game', utilisation: '+unmarry', execute(message, args, client) { checkIfMarried(message.author.id, client).then(isMarried => { if (!isMarried) { return message.reply('Vous n\'êtes pas marié.'); } findMarriage(message.author.id, client).then(marriagePair => { if (!marriagePair) { return message.reply('Une erreur s\'est produite lors de la recherche du mariage.'); } unregisterMarriage(marriagePair, client).then(() => { message.reply('Votre mariage a été dissous.'); }).catch(err => { console.error(err); message.reply('Une erreur s\'est produite lors de la suppression du mariage.'); }); }).catch(err => { console.error(err); message.reply('Une erreur s\'est produite lors de la recherche du mariage.'); }); }).catch(err => { console.error(err); message.reply('Une erreur s\'est produite lors de la vérification du mariage.'); }); }, }; async function checkIfMarried(userId, client) { let data = await new Promise((resolve, reject) => { db.get('SELECT value FROM gestion WHERE id = ?', [client.user.id], (err, row) => { if (err) { console.error(err.message); reject(err); } const parsedData = row ? JSON.parse(row.value) : {}; parsedData.marry = parsedData.marry || []; resolve(parsedData); }); }); const isMarried = data.marry.some(pair => { const [userId1, userId2] = pair.split('_'); return userId1 === userId || userId2 === userId; }); return isMarried; } async function findMarriage(userId, client) { let data = await new Promise((resolve, reject) => { db.get('SELECT value FROM gestion WHERE id = ?', [client.user.id], (err, row) => { if (err) { console.error(err.message); reject(err); } resolve(row ? JSON.parse(row.value) : {}); }); }); const marriagePair = data.marry.find(pair => { const [userId1, userId2] = pair.split('_'); return userId1 === userId || userId2 === userId; }); return marriagePair; } async function unregisterMarriage(marriagePair, client) { let data = await new Promise((resolve, reject) => { db.get('SELECT value FROM gestion WHERE id = ?', [client.user.id], (err, row) => { if (err) { console.error(err.message); reject(err); } resolve(row ? JSON.parse(row.value) : {}); }); }); const [userId1, userId2] = marriagePair.split('_'); data.marry = data.marry.filter(pair => pair !== marriagePair && pair !== `${userId2}_${userId1}`); db.run('UPDATE gestion SET value = ? WHERE id = ?', [JSON.stringify(data), client.user.id], function(err) { if (err) { console.error(err.message); throw err; } }); }