glucose-bot/modules/commands/delete.js
2025-08-09 05:37:57 -06:00

58 lines
2.4 KiB
JavaScript

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 });
});
});
}