module.exports = {} const Discord = require("discord.js"); module.exports.definition = { name: 'delete', description: 'Delete a glucose reading', integration_types: [0, 1], contexts: [0, 1, 2], options: [ { name: 'id', description: 'ID of the glucose reading to delete', type: 3, // STRING required: true } ], } module.exports.execute = async (interaction, client, db) => { const id = interaction.options.getString('id'); if (!id) { return interaction.reply({ content: 'Please provide a valid glucose reading ID.', ephemeral: true }); } db.get(`SELECT * FROM glucose_log WHERE id = ? AND user_id = ?`, [id, interaction.user.id], async (err, row) => { if (err) { console.error('Database error:', err); return interaction.reply({ content: 'An error occurred while accessing the database.', ephemeral: true }); } if (!row) { return interaction.reply({ content: 'No glucose reading found with the provided ID.', ephemeral: true }); } const [ channel_id, message_id ] = row.msg_id.split('/'); //Get channel and msg id for update const ogMessage = await async function() { const chan = await client.channels.fetch(channel_id); if (!chan) { return null; } return await chan.messages.fetch(message_id).catch(() => null); }(); if (!ogMessage) { return interaction.reply({ content: 'Original message not found. Cannot delete reading.', ephemeral: true }); } try { await ogMessage.delete(); } catch (error) { console.error('Error deleting message:', error); return interaction.reply({ content: 'Failed to delete the original message. It may have already been deleted.', ephemeral: true }); } db.run(`DELETE FROM glucose_log WHERE id = ? AND user_id = ?`, [id, interaction.user.id], function(err) { if (err) { console.error('Database error:', err); return interaction.reply({ content: 'An error occurred while deleting the glucose reading from the database.', ephemeral: true }); } return interaction.reply({ content: `Glucose reading with ID ${id} has been successfully deleted.`, ephemeral: true }); }); }); }