58 lines
2.4 KiB
JavaScript
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 });
|
|
});
|
|
});
|
|
} |