import { Message } from "discord.js"; import { replyWithCleanup } from "../utilities"; export const handleDeleteCommand = async (message: Message) => { if (message.author.bot) return; if (message.content.toLowerCase().startsWith("uma!delete")) { const application = await message.client.application?.fetch(); const ownerId = application?.owner?.id; if (message.author.id !== ownerId) { await replyWithCleanup( message, "❌ Only the server owner can use this command.", ); return; } const parameters = message.content.split(" ").slice(1); if (parameters.length < 1) { await replyWithCleanup( message, "❌ Usage: `uma!delete [channel_id]`\nExamples:\n- `uma!delete 1234567890123456789` (current channel)\n- `uma!delete 1234567890123456789 9876543210987654321` (specific channel)", ); return; } const messageId = parameters[0]; const channelId = parameters[1]; if (!/^\d{17,19}$/.test(messageId)) { await message.reply( "❌ Invalid message ID format. Please provide a valid Discord message ID.", ); return; } if (channelId && !/^\d{17,19}$/.test(channelId)) { await message.reply( "❌ Invalid channel ID format. Please provide a valid Discord channel ID.", ); return; } try { let targetMessage = null; let targetChannel = null; if (channelId) { targetChannel = message.client.channels.cache.get(channelId); if (!targetChannel || !targetChannel.isTextBased()) { await message.reply("❌ Channel not found or is not a text channel."); return; } } else { targetChannel = message.channel; } try { targetMessage = await targetChannel.messages.fetch(messageId); } catch { await message.reply("❌ Message not found in the specified channel."); return; } await targetMessage.delete(); await message.delete(); } catch (error) { console.error("Error deleting message:", error); await message.reply( "❌ Failed to delete the message. Check bot permissions and try again.", ); } } };